Update models 77/13177/1
authorJvD_Ericsson <jeff.van.dam@est.tech>
Fri, 12 Jul 2024 13:54:10 +0000 (14:54 +0100)
committerJeff van Dam <jeff.van.dam@est.tech>
Mon, 15 Jul 2024 09:33:12 +0000 (09:33 +0000)
- update docker compose to use new generated sql script
- update cloud event example

Issue-ID: SMO-160
Change-Id: I02d508c86ead1e1991e4b1dc2e13593890b67c7a
Signed-off-by: JvD_Ericsson <jeff.van.dam@est.tech>
14 files changed:
docker-compose/cloudEventProducer/events/cloudEventExampleMerge.txt
docker-compose/sql_scripts/00_init-teiv-exposure-model.sql
docker-compose/sql_scripts/01_init-teiv-exposure-data.sql
pgsql-schema-generator/src/main/java/org/oran/smo/teiv/pgsqlgenerator/YangModelProcessor.java
teiv/src/main/resources/models/o-ran-smo-teiv-common-yang-extensions.yang
teiv/src/main/resources/models/o-ran-smo-teiv-common-yang-types.yang
teiv/src/main/resources/models/o-ran-smo-teiv-equipment-to-ran.yang [deleted file]
teiv/src/main/resources/models/o-ran-smo-teiv-equipment.yang
teiv/src/main/resources/models/o-ran-smo-teiv-oam.yang
teiv/src/main/resources/models/o-ran-smo-teiv-ran.yang
teiv/src/main/resources/models/o-ran-smo-teiv-rel-cloud-ran.yang [moved from teiv/src/main/resources/models/o-ran-smo-teiv-cloud-to-ran.yang with 96% similarity]
teiv/src/main/resources/models/o-ran-smo-teiv-rel-equipment-ran.yang [new file with mode: 0644]
teiv/src/main/resources/models/o-ran-smo-teiv-rel-oam-cloud.yang [moved from teiv/src/main/resources/models/o-ran-smo-teiv-oam-to-cloud.yang with 95% similarity]
teiv/src/main/resources/models/o-ran-smo-teiv-rel-oam-ran.yang [moved from teiv/src/main/resources/models/o-ran-smo-teiv-oam-to-ran.yang with 89% similarity]

index b50acad..9b69dc2 100644 (file)
 ce_specversion:::1.0,ce_id:::a30e63c9-d29e-46ff-b99a-b63ed83fd237,ce_source:::dmi-plugin:nm-1,ce_type:::ran-logical-topology.merge,content-type:::application/yang-data+json,ce_time:::2023-11-30T09:05:00Z,ce_dataschema:::https://ties:8080/schemas/v1/r1-topology,,,{
     "entities": {
-      "o-ran-smo-teiv-oam:ManagedElement": [
-        {
-          "id": "urn:3gpp:dn:ManagedElement=NR01",
-          "attributes": {
-            "fdn": "ManagedElement=NR01",
-            "cmId": {
-              "cmHandle": "9D2C7AA8AECF0B5FDE21FDBD2B93EEAG",
-              "resourceIdentifier": "/o-ran-smo-ComTop:ManagedElement[@id=NR01]"
+        "o-ran-smo-teiv-oam:ManagedElement": [
+            {
+                "id": "urn:3gpp:dn:ManagedElement=NR01"
             }
-          }
-        }
-      ],
-      "o-ran-smo-teiv-ran:GNBDUFunction": [
-        {
-          "id": "urn:3gpp:dn:ManagedElement=NR01,GNBDUFunction=1",
-          "attributes": {
-            "gNBDUId": 1,
-            "gNBId": 1,
-            "gNBIdLength": 23,
-            "dUpLMNId": {
-              "mcc": 353,
-              "mnc": 87
+        ],
+        "o-ran-smo-teiv-ran:GNBDUFunction": [
+            {
+                "id": "urn:3gpp:dn:ManagedElement=NR01,GNBDUFunction=1",
+                "attributes": {
+                    "gNBDUId": 1,
+                    "gNBId": 1,
+                    "gNBIdLength": 23,
+                    "dUpLMNId": {
+                        "mcc": 353,
+                        "mnc": 87
+                    }
+                }
+            }
+        ],
+        "o-ran-smo-teiv-ran:NRSectorCarrier": [
+            {
+                "id": "urn:3gpp:dn:ManagedElement=NR01,GNBDUFunction=1,NRSectorCarrier=1",
+                "attributes": {
+                    "arfcnDL": 4000,
+                    "arfcnUL": 40000,
+                    "frequencyDL": 4,
+                    "frequencyUL": 40
+                }
+            },
+            {
+                "id": "urn:3gpp:dn:ManagedElement=NR01,GNBDUFunction=1,NRSectorCarrier=2",
+                "attributes": {
+                    "arfcnDL": 5000,
+                    "arfcnUL": 50000,
+                    "frequencyDL": 5,
+                    "frequencyUL": 50
+                }
             },
-            "fdn": "ManagedElement=NR01,GNBDUFunction=1",
-            "cmId": {
-              "cmHandle": "9D2C7AA8AECF0B5FDE21FDBD2B93EEAG",
-              "resourceIdentifier": "/o-ran-smo-ComTop:ManagedElement[@id=NR01]/o-ran-smo-GNBDU:GNBDUFunction[@id=1]"
+            {
+                "id": "urn:3gpp:dn:ManagedElement=NR01,GNBDUFunction=1,NRSectorCarrier=3",
+                "attributes": {
+                    "arfcnDL": 6000,
+                    "arfcnUL": 60000,
+                    "frequencyDL": 6,
+                    "frequencyUL": 60
+                }
             }
-          }
-        }
-      ],
-      "o-ran-smo-teiv-ran:NRSectorCarrier": [
-        {
-          "id": "urn:3gpp:dn:ManagedElement=NR01,GNBDUFunction=1,NRSectorCarrier=1",
-          "attributes": {
-            "arfcnDL": 4000,
-            "arfcnUL": 40000,
-            "frequencyDL": 4,
-            "frequencyUL": 40,
-            "fdn": "ManagedElement=NR01,GNBDUFunction=1,NRSectorCarrier=1",
-            "cmId": {
-              "cmHandle": "9D2C7AA8AECF0B5FDE21FDBD2B93EEAG",
-              "resourceIdentifier": "/o-ran-smo-ComTop:ManagedElement[@id=NR01]/o-ran-smo-GNBDU:GNBDUFunction[@id=1]/o-ran-smo-GNBDU:NRSectorCarrier[@id=1]"
+        ],
+        "o-ran-smo-teiv-ran:NRCellDU": [
+            {
+                "id": "urn:3gpp:dn:ManagedElement=NR01,GNBDUFunction=1,NRCellDU=1",
+                "attributes": {
+                    "cellLocalId": 1,
+                    "nRTAC": 40,
+                    "nRPCI": 400,
+                    "nCI": 24577
+                }
+            },
+            {
+                "id": "urn:3gpp:dn:ManagedElement=NR01,GNBDUFunction=1,NRCellDU=2",
+                "attributes": {
+                    "cellLocalId": 2,
+                    "nRTAC": 50,
+                    "nRPCI": 500,
+                    "nCI": 24578
+                }
             }
-          }
-        },
-        {
-          "id": "urn:3gpp:dn:ManagedElement=NR01,GNBDUFunction=1,NRSectorCarrier=2",
-          "attributes": {
-            "arfcnDL": 5000,
-            "arfcnUL": 50000,
-            "frequencyDL": 5,
-            "frequencyUL": 50,
-            "fdn": "ManagedElement=NR01,GNBDUFunction=1,NRSectorCarrier=2",
-            "cmId": {
-              "cmHandle": "9D2C7AA8AECF0B5FDE21FDBD2B93EEAG",
-              "resourceIdentifier": "/o-ran-smo-ComTop:ManagedElement[@id=NR01]/o-ran-smo-GNBDU:GNBDUFunction[@id=1]/o-ran-smo-GNBDU:NRSectorCarrier[@id=2]"
+        ],
+        "o-ran-smo-teiv-ran:AntennaCapability": [
+            {
+                "id": "urn:3gpp:dn:ManagedElement=NR01,NodeSupport=1,SectorEquipmentFunction=1",
+                "attributes": {
+                    "eUtranFqBands": "[1,2,3]",
+                    "geranFqBands": "[10,11,12]",
+                    "nRFqBands": "[100,101,102]"
+                }
+            },
+            {
+                "id": "urn:3gpp:dn:ManagedElement=NR01,NodeSupport=1,SectorEquipmentFunction=2",
+                "attributes": {
+                    "eUtranFqBands": "[4,5,6]",
+                    "geranFqBands": "[13,14,15]",
+                    "nRFqBands": "[103,104,105]"
+                }
             }
-          }
-        },
-        {
-          "id": "urn:3gpp:dn:ManagedElement=NR01,GNBDUFunction=1,NRSectorCarrier=3",
-          "attributes": {
-            "arfcnDL": 6000,
-            "arfcnUL": 60000,
-            "frequencyDL": 6,
-            "frequencyUL": 60,
-            "fdn": "ManagedElement=NR01,GNBDUFunction=1,NRSectorCarrier=3",
-            "cmId": {
-              "cmHandle": "9D2C7AA8AECF0B5FDE21FDBD2B93EEAG",
-              "resourceIdentifier": "/o-ran-smo-ComTop:ManagedElement[@id=NR01]/o-ran-smo-GNBDU:GNBDUFunction[@id=1]/o-ran-smo-GNBDU:NRSectorCarrier[@id=3]"
+        ],
+        "o-ran-smo-teiv-equipment:AntennaModule": [
+            {
+                "id": "urn:o-ran:smo-teiv-equipment:1",
+                "attributes": {
+                    "antennaModelNumber": "1",
+                    "mechanicalAntennaBearing": 50,
+                    "mechanicalAntennaTilt": 10,
+                    "positionWithinSector": "Unknown",
+                    "totalTilt": 14,
+                    "electricalAntennaTilt": 2
+                }
+            },
+            {
+                "id": "urn:o-ran:smo-teiv-equipment:2",
+                "attributes": {
+                    "antennaModelNumber": "2",
+                    "mechanicalAntennaBearing": 45,
+                    "mechanicalAntennaTilt": 12,
+                    "positionWithinSector": "Unknown",
+                    "totalTilt": 15,
+                    "electricalAntennaTilt": 1
+                }
             }
-          }
-        }
-      ],
-      "o-ran-smo-teiv-ran:NRCellDU": [
-        {
-          "id": "urn:3gpp:dn:ManagedElement=NR01,GNBDUFunction=1,NRCellDU=1",
-          "attributes": {
-            "cellLocalId": 1,
-            "nRTAC": 40,
-            "nRPCI": 400,
-            "nCI": 24577,
-            "fdn": "ManagedElement=NR01,GNBDUFunction=1,NRCellDU=1",
-            "cmId": {
-              "cmHandle": "9D2C7AA8AECF0B5FDE21FDBD2B93EEAG",
-              "resourceIdentifier": "/o-ran-smo-ComTop:ManagedElement[@id=NR01]/o-ran-smo-GNBDU:GNBDUFunction[@id=1]/o-ran-smo-GNBDU:NRCellDU[@id=1]"
+        ],
+        "o-ran-smo-teiv-equipment:Site": [
+            {
+                "id": "urn:o-ran:smo-teiv-equipment:1",
+                "attributes": {
+                    "name": "Site-1",
+                    "geo-location": {
+                        "latitude": 41.73297,
+                        "longitude": -78.007696
+                    }
+                }
+            },
+            {
+                "id": "urn:o-ran:smo-teiv-equipment:2",
+                "attributes": {
+                    "name": "Site-2",
+                    "geo-location": {
+                        "latitude": 46.73297,
+                        "longitude": -76.007696
+                    }
+                }
             }
-          }
-        },
-        {
-          "id": "urn:3gpp:dn:ManagedElement=NR01,GNBDUFunction=1,NRCellDU=2",
-          "attributes": {
-            "cellLocalId": 2,
-            "nRTAC": 50,
-            "nRPCI": 500,
-            "nCI": 24578,
-            "fdn": "ManagedElement=NR01,GNBDUFunction=1,NRCellDU=2",
-            "cmId": {
-              "cmHandle": "9D2C7AA8AECF0B5FDE21FDBD2B93EEAG",
-              "resourceIdentifier": "/o-ran-smo-ComTop:ManagedElement[@id=NR01]/o-ran-smo-GNBDU:GNBDUFunction[@id=1]/o-ran-smo-GNBDU:NRCellDU[@id=2]"
+        ],
+        "o-ran-smo-teiv-ran:Sector": [
+            {
+                "id": "urn:o-ran:smo-teiv-ran:1",
+                "attributes": {
+                    "sectorId": 1,
+                    "azimuth": 75.345,
+                    "geo-location": {
+                        "latitude": 40.73297,
+                        "longitude": -74.007696
+                    }
+                }
+            },
+            {
+                "id": "urn:o-ran:smo-teiv-ran:2",
+                "attributes": {
+                    "sectorId": 2,
+                    "azimuth": 90.8967,
+                    "geo-location": {
+                        "latitude": 41.73297,
+                        "longitude": -73.007696
+                    }
+                }
             }
-          }
-        }
-      ],
-      "o-ran-smo-teiv-ran:AntennaCapability": [
-        {
-          "id": "urn:3gpp:dn:ManagedElement=NR01,NodeSupport=1,SectorEquipmentFunction=1",
-          "attributes": {
-            "eUtranFqBands": "[1,2,3]",
-            "geranFqBands": "[10,11,12]",
-            "nRFqBands": "[100,101,102]",
-            "fdn": "ManagedElement=NR01,NodeSupport=1,SectorEquipmentFunction=1",
-            "cmId": {
-              "cmHandle": "9D2C7AA8AECF0B5FDE21FDBD2B93EEAG",
-              "resourceIdentifier": "/o-ran-smo-ComTop:ManagedElement[@id=NR01]/o-ran-smo-ComTop:NodeSupport[@id=1]/o-ran-smo-RmeSectorEquipmentFunction:SectorEquipmentFunction[@id=1]"
+        ],
+        "o-ran-smo-teiv-cloud:CloudifiedNF": [
+            {
+                "id": "urn:o-ran:smo-teiv-cloud:1",
+                "attributes": {
+                    "name": "CloudifiedNF-1"
+                }
             }
-          }
-        },
-        {
-          "id": "urn:3gpp:dn:ManagedElement=NR01,NodeSupport=1,SectorEquipmentFunction=2",
-          "attributes": {
-            "eUtranFqBands": "[4,5,6]",
-            "geranFqBands": "[13,14,15]",
-            "nRFqBands": "[103,104,105]",
-            "fdn": "ManagedElement=NR01,NodeSupport=1,SectorEquipmentFunction=2",
-            "cmId": {
-              "cmHandle": "9D2C7AA8AECF0B5FDE21FDBD2B93EEAG",
-              "resourceIdentifier": "/o-ran-smo-ComTop:ManagedElement[@id=NR01]/o-ran-smo-ComTop:NodeSupport[@id=1]/o-ran-smo-RmeSectorEquipmentFunction:SectorEquipmentFunction[@id=2]"
+        ],
+        "o-ran-smo-teiv-cloud:NFDeployment": [
+            {
+                "id": "urn:o-ran:smo-teiv-cloud:1",
+                "attributes": {
+                    "name": "NFDeployment-1"
+                }
             }
-          }
-        }
-      ],
-      "o-ran-smo-teiv-equipment:AntennaModule": [
-        {
-          "id": "urn:o-ran:smo-teiv-equipment:1",
-          "attributes": {
-            "antennaModelNumber": "1",
-            "mechanicalAntennaBearing": 50,
-            "mechanicalAntennaTilt": 10,
-            "positionWithinSector": "Unknown",
-            "totalTilt": 14,
-            "electricalAntennaTilt": 2,
-            "fdn": "Unknown",
-            "cmId": {
-              "cmHandle": "9D2C7AA8AECF0B5FDE21FDBD2B93EEAG",
-              "resourceIdentifier": "Unknown"
+        ]
+    },
+    "relationships": {
+        "o-ran-smo-teiv-oam-to-ran:MANAGEDELEMENT_MANAGES_GNBDUFUNCTION": [
+            {
+                "id": "urn:o-ran:smo-teiv-oam-to-logical:1",
+                "aSide": "urn:3gpp:dn:ManagedElement=NR01",
+                "bSide": "urn:3gpp:dn:ManagedElement=NR01,GNBDUFunction=1"
             }
-          }
-        },
-        {
-          "id": "urn:o-ran:smo-teiv-equipment:2",
-          "attributes": {
-            "antennaModelNumber": "2",
-            "mechanicalAntennaBearing": 45,
-            "mechanicalAntennaTilt": 12,
-            "positionWithinSector": "Unknown",
-            "totalTilt": 15,
-            "electricalAntennaTilt": 1,
-            "fdn": "Unknown",
-            "cmId": {
-              "cmHandle": "9D2C7AA8AECF0B5FDE21FDBD2B93EEAG",
-              "resourceIdentifier": "Unknown"
+        ],
+        "o-ran-smo-teiv-ran:GNBDUFUNCTION_PROVIDES_NRSECTORCARRIER": [
+            {
+                "id": "urn:o-ran:smo-teiv-ran:1",
+                "aSide": "urn:3gpp:dn:ManagedElement=NR01,GNBDUFunction=1",
+                "bSide": "urn:3gpp:dn:ManagedElement=NR01,GNBDUFunction=1,NRSectorCarrier=1"
+            },
+            {
+                "id": "urn:o-ran:smo-teiv-ran:2",
+                "aSide": "urn:3gpp:dn:ManagedElement=NR01,GNBDUFunction=1",
+                "bSide": "urn:3gpp:dn:ManagedElement=NR01,GNBDUFunction=1,NRSectorCarrier=2"
+            },
+            {
+                "id": "urn:o-ran:smo-teiv-ran:3",
+                "aSide": "urn:3gpp:dn:ManagedElement=NR01,GNBDUFunction=1",
+                "bSide": "urn:3gpp:dn:ManagedElement=NR01,GNBDUFunction=1,NRSectorCarrier=3"
             }
-          }
-        }
-      ],
-      "o-ran-smo-teiv-equipment:Site": [
-        {
-          "id": "urn:o-ran:smo-teiv-equipment:1",
-          "attributes": {
-            "name": "Site-1",
-            "geo-location": {
-              "latitude": 41.73297,
-              "longitude": -78.007696
+        ],
+        "o-ran-smo-teiv-ran:GNBDUFUNCTION_PROVIDES_NRCELLDU": [
+            {
+                "id": "urn:o-ran:smo-teiv-ran:1",
+                "aSide": "urn:3gpp:dn:ManagedElement=NR01,GNBDUFunction=1",
+                "bSide": "urn:3gpp:dn:ManagedElement=NR01,GNBDUFunction=1,NRCellDU=1"
             },
-            "cmId": {
-              "cmHandle": "9D2C7AA8AECF0B5FDE21FDBD2B93EEAG",
-              "resourceIdentifier": "Unknown"
+            {
+                "id": "urn:o-ran:smo-teiv-ran:2",
+                "aSide": "urn:3gpp:dn:ManagedElement=NR01,GNBDUFunction=1",
+                "bSide": "urn:3gpp:dn:ManagedElement=NR01,GNBDUFunction=1,NRCellDU=2"
             }
-          }
-        },
-        {
-          "id": "urn:o-ran:smo-teiv-equipment:2",
-          "attributes": {
-            "name": "Site-2",
-            "geo-location": {
-              "latitude": 46.73297,
-              "longitude": -76.007696
+        ],
+        "o-ran-smo-teiv-ran:NRCELLDU_USES_NRSECTORCARRIER": [
+            {
+                "id": "urn:o-ran:smo-teiv-ran:1",
+                "aSide": "urn:3gpp:dn:ManagedElement=NR01,GNBDUFunction=1,NRCellDU=1",
+                "bSide": "urn:3gpp:dn:ManagedElement=NR01,GNBDUFunction=1,NRSectorCarrier=1"
+            },
+            {
+                "id": "urn:o-ran:smo-teiv-ran:2",
+                "aSide": "urn:3gpp:dn:ManagedElement=NR01,GNBDUFunction=1,NRCellDU=2",
+                "bSide": "urn:3gpp:dn:ManagedElement=NR01,GNBDUFunction=1,NRSectorCarrier=2"
             },
-            "cmId": {
-              "cmHandle": "9D2C7AA8AECF0B5FDE21FDBD2B93EEAG",
-              "resourceIdentifier": "Unknown"
+            {
+                "id": "urn:o-ran:smo-teiv-ran:3",
+                "aSide": "urn:3gpp:dn:ManagedElement=NR01,GNBDUFunction=1,NRCellDU=2",
+                "bSide": "urn:3gpp:dn:ManagedElement=NR01,GNBDUFunction=1,NRSectorCarrier=3"
             }
-          }
-        }
-      ],
-      "o-ran-smo-teiv-ran:Sector": [
-        {
-          "id": "urn:o-ran:smo-teiv-ran:1",
-          "attributes": {
-            "sectorId": 1,
-            "azimuth": 75.345,
-            "geo-location": {
-              "latitude": 40.73297,
-              "longitude": -74.007696
+        ],
+        "o-ran-smo-teiv-ran:NRSECTORCARRIER_USES_ANTENNACAPABILITY": [
+            {
+                "id": "urn:o-ran:smo-teiv-ran:1",
+                "aSide": "urn:3gpp:dn:ManagedElement=NR01,GNBDUFunction=1,NRSectorCarrier=1",
+                "bSide": "urn:3gpp:dn:ManagedElement=NR01,NodeSupport=1,SectorEquipmentFunction=1"
+            },
+            {
+                "id": "urn:o-ran:smo-teiv-ran:2",
+                "aSide": "urn:3gpp:dn:ManagedElement=NR01,GNBDUFunction=1,NRSectorCarrier=2",
+                "bSide": "urn:3gpp:dn:ManagedElement=NR01,NodeSupport=1,SectorEquipmentFunction=2"
+            },
+            {
+                "id": "urn:o-ran:smo-teiv-ran:3",
+                "aSide": "urn:3gpp:dn:ManagedElement=NR01,GNBDUFunction=1,NRSectorCarrier=3",
+                "bSide": "urn:3gpp:dn:ManagedElement=NR01,NodeSupport=1,SectorEquipmentFunction=2"
             }
-          }
-        },
-        {
-          "id": "urn:o-ran:smo-teiv-ran:2",
-          "attributes": {
-            "sectorId": 2,
-            "azimuth": 90.8967,
-            "geo-location": {
-              "latitude": 41.73297,
-              "longitude": -73.007696
+        ],
+        "o-ran-smo-teiv-equipment-to-ran:ANTENNAMODULE_SERVES_ANTENNACAPABILITY": [
+            {
+                "id": "urn:o-ran:smo-teiv-equipment-to-ran:1",
+                "aSide": "urn:o-ran:smo-teiv-equipment:1",
+                "bSide": "urn:3gpp:dn:ManagedElement=NR01,NodeSupport=1,SectorEquipmentFunction=1"
+            },
+            {
+                "id": "urn:o-ran:smo-teiv-equipment-to-ran:2",
+                "aSide": "urn:o-ran:smo-teiv-equipment:2",
+                "bSide": "urn:3gpp:dn:ManagedElement=NR01,NodeSupport=1,SectorEquipmentFunction=2"
             }
-          }
-        }
-      ],
-      "o-ran-smo-teiv-cloud:CloudifiedNF": [
-        {
-          "id": "urn:o-ran:smo-teiv-cloud:1",
-          "attributes": {
-            "name": "CloudifiedNF-1"
-          }
-        }
-      ],
-      "o-ran-smo-teiv-cloud:NFDeployment": [
-        {
-          "id": "urn:o-ran:smo-teiv-cloud:1",
-          "attributes": {
-            "name": "NFDeployment-1"
-          }
-        }
-      ]
-    },
-    "relationships": {
-      "o-ran-smo-teiv-oam-to-ran:MANAGEDELEMENT_MANAGES_GNBDUFUNCTION": [
-        {
-          "id": "urn:o-ran:smo-teiv-oam-to-logical:1",
-          "aSide": "urn:3gpp:dn:ManagedElement=NR01",
-          "bSide": "urn:3gpp:dn:ManagedElement=NR01,GNBDUFunction=1"
-        }
-      ],
-      "o-ran-smo-teiv-ran:GNBDUFUNCTION_PROVIDES_NRSECTORCARRIER": [
-        {
-          "id": "urn:o-ran:smo-teiv-ran:1",
-          "aSide": "urn:3gpp:dn:ManagedElement=NR01,GNBDUFunction=1",
-          "bSide": "urn:3gpp:dn:ManagedElement=NR01,GNBDUFunction=1,NRSectorCarrier=1"
-        },
-        {
-          "id": "urn:o-ran:smo-teiv-ran:2",
-          "aSide": "urn:3gpp:dn:ManagedElement=NR01,GNBDUFunction=1",
-          "bSide": "urn:3gpp:dn:ManagedElement=NR01,GNBDUFunction=1,NRSectorCarrier=2"
-        },
-        {
-          "id": "urn:o-ran:smo-teiv-ran:3",
-          "aSide": "urn:3gpp:dn:ManagedElement=NR01,GNBDUFunction=1",
-          "bSide": "urn:3gpp:dn:ManagedElement=NR01,GNBDUFunction=1,NRSectorCarrier=3"
-        }
-      ],
-      "o-ran-smo-teiv-ran:GNBDUFUNCTION_PROVIDES_NRCELLDU": [
-        {
-          "id": "urn:o-ran:smo-teiv-ran:1",
-          "aSide": "urn:3gpp:dn:ManagedElement=NR01,GNBDUFunction=1",
-          "bSide": "urn:3gpp:dn:ManagedElement=NR01,GNBDUFunction=1,NRCellDU=1"
-        },
-        {
-          "id": "urn:o-ran:smo-teiv-ran:2",
-          "aSide": "urn:3gpp:dn:ManagedElement=NR01,GNBDUFunction=1",
-          "bSide": "urn:3gpp:dn:ManagedElement=NR01,GNBDUFunction=1,NRCellDU=2"
-        }
-      ],
-      "o-ran-smo-teiv-ran:NRCELLDU_USES_NRSECTORCARRIER": [
-        {
-          "id": "urn:o-ran:smo-teiv-ran:1",
-          "aSide": "urn:3gpp:dn:ManagedElement=NR01,GNBDUFunction=1,NRCellDU=1",
-          "bSide": "urn:3gpp:dn:ManagedElement=NR01,GNBDUFunction=1,NRSectorCarrier=1"
-        },
-        {
-          "id": "urn:o-ran:smo-teiv-ran:2",
-          "aSide": "urn:3gpp:dn:ManagedElement=NR01,GNBDUFunction=1,NRCellDU=2",
-          "bSide": "urn:3gpp:dn:ManagedElement=NR01,GNBDUFunction=1,NRSectorCarrier=2"
-        },
-        {
-          "id": "urn:o-ran:smo-teiv-ran:3",
-          "aSide": "urn:3gpp:dn:ManagedElement=NR01,GNBDUFunction=1,NRCellDU=2",
-          "bSide": "urn:3gpp:dn:ManagedElement=NR01,GNBDUFunction=1,NRSectorCarrier=3"
-        }
-      ],
-      "o-ran-smo-teiv-ran:NRSECTORCARRIER_USES_ANTENNACAPABILITY": [
-        {
-          "id": "urn:o-ran:smo-teiv-ran:1",
-          "aSide": "urn:3gpp:dn:ManagedElement=NR01,GNBDUFunction=1,NRSectorCarrier=1",
-          "bSide": "urn:3gpp:dn:ManagedElement=NR01,NodeSupport=1,SectorEquipmentFunction=1"
-        },
-        {
-          "id": "urn:o-ran:smo-teiv-ran:2",
-          "aSide": "urn:3gpp:dn:ManagedElement=NR01,GNBDUFunction=1,NRSectorCarrier=2",
-          "bSide": "urn:3gpp:dn:ManagedElement=NR01,NodeSupport=1,SectorEquipmentFunction=2"
-        },
-        {
-          "id": "urn:o-ran:smo-teiv-ran:3",
-          "aSide": "urn:3gpp:dn:ManagedElement=NR01,GNBDUFunction=1,NRSectorCarrier=3",
-          "bSide": "urn:3gpp:dn:ManagedElement=NR01,NodeSupport=1,SectorEquipmentFunction=2"
-        }
-      ],
-      "o-ran-smo-teiv-equipment-to-ran:ANTENNAMODULE_SERVES_ANTENNACAPABILITY": [
-        {
-          "id": "urn:o-ran:smo-teiv-equipment-to-ran:1",
-          "aSide": "urn:o-ran:smo-teiv-equipment:1",
-          "bSide": "urn:3gpp:dn:ManagedElement=NR01,NodeSupport=1,SectorEquipmentFunction=1"
-        },
-        {
-          "id": "urn:o-ran:smo-teiv-equipment-to-ran:2",
-          "aSide": "urn:o-ran:smo-teiv-equipment:2",
-          "bSide": "urn:3gpp:dn:ManagedElement=NR01,NodeSupport=1,SectorEquipmentFunction=2"
-        }
-      ],
-      "o-ran-smo-teiv-equipment:ANTENNAMODULE_INSTALLED_AT_SITE": [
-        {
-          "id": "urn:o-ran:smo-teiv-equipment:1",
-          "aSide": "urn:o-ran:smo-teiv-equipment:1",
-          "bSide": "urn:o-ran:smo-teiv-equipment:1"
-        },
-        {
-          "id": "urn:o-ran:smo-teiv-equipment:2",
-          "aSide": "urn:o-ran:smo-teiv-equipment:2",
-          "bSide": "urn:o-ran:smo-teiv-equipment:2"
-        }
-      ],
-      "o-ran-smo-teiv-equipment-to-ran:SECTOR_GROUPS_NRCELLDU": [
-        {
-          "id": "urn:o-ran:smo-teiv-equipment-to-ran:1",
-          "aSide": "urn:o-ran:smo-teiv-ran:1",
-          "bSide": "urn:3gpp:dn:ManagedElement=NR01,GNBDUFunction=1,NRCellDU=1"
-        },
-        {
-          "id": "urn:o-ran:smo-teiv-equipment-to-ran:2",
-          "aSide": "urn:o-ran:smo-teiv-ran:2",
-          "bSide": "urn:3gpp:dn:ManagedElement=NR01,GNBDUFunction=1,NRCellDU=2"
-        },
-        {
-          "id": "urn:o-ran:smo-teiv-equipment-to-ran:3",
-          "aSide": "urn:o-ran:smo-teiv-ran:2",
-          "bSide": "urn:3gpp:dn:ManagedElement=NR01,GNBDUFunction=1,NRCellDU=3"
-        }
-      ],
-      "o-ran-smo-teiv-oam-to-cloud:NFDEPLOYMENT_SERVES_MANAGEDELEMENT": [
-        {
-          "id": "urn:o-ran:smo-teiv-oam-to-cloud:1",
-          "aSide": "urn:o-ran:smo-teiv-cloud:1",
-          "bSide": "urn:3gpp:dn:ManagedElement=NR01"
-        }
-      ],
-      "o-ran-smo-teiv-oam-to-cloud:MANAGEDELEMENT_DEPLOYED_AS_CLOUDIFIEDNF": [
-        {
-          "id": "urn:o-ran:smo-teiv-oam-to-cloud:1",
-          "aSide": "urn:3gpp:dn:ManagedElement=NR01",
-          "bSide": "urn:o-ran:smo-teiv-cloud:1"
-        }
-      ],
-      "o-ran-smo-teiv-cloud:CLOUDIFIEDNF_COMPRISES_NFDEPLOYMENT": [
-        {
-          "id": "urn:o-ran:smo-teiv-cloud:1",
-          "aSide": "urn:o-ran:smo-teiv-cloud:1",
-          "bSide": "urn:o-ran:smo-teiv-cloud:1"
-        }
-      ],
-      "o-ran-smo-teiv-cloud-to-ran:NFDEPLOYMENT_SERVES_GNBDUFUNCTION": [
-        {
-          "id": "urn:o-ran:smo-teiv-cloud-to-ran:1",
-          "aSide": "urn:o-ran:smo-teiv-cloud:1",
-          "bSide": "urn:3gpp:dn:ManagedElement=NR01,GNBDUFunction=1"
-        }
-      ]
+        ],
+        "o-ran-smo-teiv-equipment-to-ran:ANTENNAMODULE_INSTALLED_AT_SITE": [
+            {
+                "id": "urn:o-ran:smo-teiv-equipment:1",
+                "aSide": "urn:o-ran:smo-teiv-equipment:1",
+                "bSide": "urn:o-ran:smo-teiv-equipment:1"
+            },
+            {
+                "id": "urn:o-ran:smo-teiv-equipment:2",
+                "aSide": "urn:o-ran:smo-teiv-equipment:2",
+                "bSide": "urn:o-ran:smo-teiv-equipment:2"
+            }
+        ],
+        "o-ran-smo-teiv-equipment-to-ran:SECTOR_GROUPS_NRCELLDU": [
+            {
+                "id": "urn:o-ran:smo-teiv-equipment-to-ran:1",
+                "aSide": "urn:o-ran:smo-teiv-ran:1",
+                "bSide": "urn:3gpp:dn:ManagedElement=NR01,GNBDUFunction=1,NRCellDU=1"
+            },
+            {
+                "id": "urn:o-ran:smo-teiv-equipment-to-ran:2",
+                "aSide": "urn:o-ran:smo-teiv-ran:2",
+                "bSide": "urn:3gpp:dn:ManagedElement=NR01,GNBDUFunction=1,NRCellDU=2"
+            }
+        ],
+        "o-ran-smo-teiv-oam-to-cloud:NFDEPLOYMENT_SERVES_MANAGEDELEMENT": [
+            {
+                "id": "urn:o-ran:smo-teiv-oam-to-cloud:1",
+                "aSide": "urn:o-ran:smo-teiv-cloud:1",
+                "bSide": "urn:3gpp:dn:ManagedElement=NR01"
+            }
+        ],
+        "o-ran-smo-teiv-oam-to-cloud:MANAGEDELEMENT_DEPLOYED_AS_CLOUDIFIEDNF": [
+            {
+                "id": "urn:o-ran:smo-teiv-oam-to-cloud:1",
+                "aSide": "urn:3gpp:dn:ManagedElement=NR01",
+                "bSide": "urn:o-ran:smo-teiv-cloud:1"
+            }
+        ],
+        "o-ran-smo-teiv-cloud:CLOUDIFIEDNF_COMPRISES_NFDEPLOYMENT": [
+            {
+                "id": "urn:o-ran:smo-teiv-cloud:1",
+                "aSide": "urn:o-ran:smo-teiv-cloud:1",
+                "bSide": "urn:o-ran:smo-teiv-cloud:1"
+            }
+        ],
+        "o-ran-smo-teiv-cloud-to-ran:NFDEPLOYMENT_SERVES_GNBDUFUNCTION": [
+            {
+                "id": "urn:o-ran:smo-teiv-cloud-to-ran:1",
+                "aSide": "urn:o-ran:smo-teiv-cloud:1",
+                "bSide": "urn:3gpp:dn:ManagedElement=NR01,GNBDUFunction=1"
+            }
+        ]
     }
 }
\ No newline at end of file
index ad443da..4012f63 100644 (file)
@@ -1,22 +1,22 @@
 --
---  ============LICENSE_START=======================================================
---  Copyright (C) 2024 Ericsson
---  Modifications Copyright (C) 2024 OpenInfra Foundation Europe
---  ================================================================================
---  Licensed under the Apache License, Version 2.0 (the "License");
---  you may not use this file except in compliance with the License.
---  You may obtain a copy of the License at
+-- ============LICENSE_START=======================================================
+-- Copyright (C) 2024 Ericsson
+-- Modifications Copyright (C) 2024 OpenInfra Foundation Europe
+-- ================================================================================
+-- Licensed under the Apache License, Version 2.0 (the "License");
+-- you may not use this file except in compliance with the License.
+-- You may obtain a copy of the License at
 --
---        http://www.apache.org/licenses/LICENSE-2.0
+--       http://www.apache.org/licenses/LICENSE-2.0
 --
---  Unless required by applicable law or agreed to in writing, software
---  distributed under the License is distributed on an "AS IS" BASIS,
---  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
---  See the License for the specific language governing permissions and
---  limitations under the License.
+-- Unless required by applicable law or agreed to in writing, software
+-- distributed under the License is distributed on an "AS IS" BASIS,
+-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+-- See the License for the specific language governing permissions and
+-- limitations under the License.
 --
---  SPDX-License-Identifier: Apache-2.0
---  ============LICENSE_END=========================================================
+-- SPDX-License-Identifier: Apache-2.0
+-- ============LICENSE_END=========================================================
 --
 
 BEGIN;
@@ -30,60 +30,60 @@ SET default_table_access_method = heap;
 SET ROLE 'topology_exposure_user';
 
 CREATE TABLE IF NOT EXISTS ties_model.execution_status (
-    "schema"                 VARCHAR(127) PRIMARY KEY,
-    "status"          VARCHAR(127)
+    "schema" VARCHAR(127) PRIMARY KEY,
+    "status" VARCHAR(127)
 );
 
 CREATE TABLE IF NOT EXISTS ties_model.hash_info (
-    "name"                 VARCHAR(511) PRIMARY KEY,
-    "hashedValue"          VARCHAR(511),
-    "type"                 VARCHAR(511)
+    "name"        VARCHAR(511) PRIMARY KEY,
+    "hashedValue" VARCHAR(511) NOT NULL,
+    "type"        VARCHAR(511)
 );
 
 CREATE TABLE IF NOT EXISTS ties_model.module_reference (
-    "name"                   VARCHAR(511) PRIMARY KEY,
-    "namespace"              VARCHAR(511),
-    "domain"             VARCHAR(511),
-    "includedModules"        jsonb,
-    "revision"       VARCHAR(511),
-    "content"               TEXT,
-    "ownerAppId"       VARCHAR(511),
-    "status"       VARCHAR(127)
+    "name"            VARCHAR(511) PRIMARY KEY,
+    "namespace"       VARCHAR(511),
+    "domain"          VARCHAR(511),
+    "includedModules" jsonb DEFAULT '[]'::jsonb,
+    "revision"        VARCHAR(511) NOT NULL,
+    "content"         TEXT NOT NULL,
+    "ownerAppId"      VARCHAR(511) NOT NULL,
+    "status"          VARCHAR(127) NOT NULL
 );
 
 CREATE TABLE IF NOT EXISTS ties_model.entity_info (
-    "name"                   VARCHAR(511) PRIMARY KEY,
-    "moduleReferenceName"    VARCHAR(511),
+    "name"                VARCHAR(511) PRIMARY KEY,
+    "moduleReferenceName" VARCHAR(511) NOT NULL,
     FOREIGN KEY ("moduleReferenceName") REFERENCES ties_model.module_reference ("name") ON DELETE CASCADE
 );
 
 CREATE TABLE IF NOT EXISTS ties_model.relationship_info (
-    "name"      VARCHAR(511) PRIMARY KEY,
-    "aSideAssociationName"    TEXT,
-    "aSideMOType"             TEXT,
-    "aSideMinCardinality"     BIGINT,
-    "aSideMaxCardinality"     BIGINT,
-    "bSideAssociationName"    TEXT,
-    "bSideMOType"             TEXT,
-    "bSideMinCardinality"     BIGINT,
-    "bSideMaxCardinality"     BIGINT,
-    "associationKind"    TEXT,
-    "relationshipDataLocation"          TEXT,
-    "connectSameEntity"       BOOLEAN,
-    "moduleReferenceName"     TEXT,
+    "name"                     VARCHAR(511) PRIMARY KEY,
+    "aSideAssociationName"     TEXT NOT NULL,
+    "aSideMOType"              TEXT NOT NULL,
+    "aSideMinCardinality"      BIGINT NOT NULL,
+    "aSideMaxCardinality"      BIGINT NOT NULL,
+    "bSideAssociationName"     TEXT NOT NULL,
+    "bSideMOType"              TEXT NOT NULL,
+    "bSideMinCardinality"      BIGINT NOT NULL,
+    "bSideMaxCardinality"      BIGINT NOT NULL,
+    "associationKind"          TEXT NOT NULL,
+    "relationshipDataLocation" TEXT NOT NULL,
+    "connectSameEntity"        BOOLEAN NOT NULL,
+    "moduleReferenceName"      TEXT NOT NULL,
     FOREIGN KEY ("moduleReferenceName") REFERENCES ties_model.module_reference ("name") ON DELETE CASCADE
 );
 
 CREATE TABLE IF NOT EXISTS ties_model.decorators (
-    "name"                   VARCHAR(511) PRIMARY KEY,
-    "dataType"                   VARCHAR(511),
-    "moduleReferenceName"    VARCHAR(511),
+    "name"                VARCHAR(511) PRIMARY KEY,
+    "dataType"            VARCHAR(511) NOT NULL,
+    "moduleReferenceName" VARCHAR(511) NOT NULL,
     FOREIGN KEY ("moduleReferenceName") REFERENCES ties_model.module_reference ("name") ON DELETE CASCADE
 );
 
 CREATE TABLE IF NOT EXISTS ties_model.classifiers (
-    "name"                   VARCHAR(511) PRIMARY KEY,
-    "moduleReferenceName"    VARCHAR(511),
+    "name"                VARCHAR(511) PRIMARY KEY,
+    "moduleReferenceName" VARCHAR(511) NOT NULL,
     FOREIGN KEY ("moduleReferenceName") REFERENCES ties_model.module_reference ("name") ON DELETE CASCADE
 );
 
@@ -99,27 +99,21 @@ REL_CD_sourceIds_NFDEPLOYMENT_SERVES_MANAGEDELEMENT REL_CD_sourceIds_NFDEPLOYMEN
 NRSectorCarrier        NRSectorCarrier TABLE
 REL_ID_MANAGEDELEMENT_MANAGES_ENODEBFUNCTION   REL_ID_MANAGEDELEMENT_MANAGES_ENODEBFUNCTION    COLUMN
 FK_LTESectorCarrier_REL_FK_used-by-euTranCell  FK_LTESectorCarrier_REL_FK_used-by-euTranCell   CONSTRAINT
-REL_CD_sourceIds_NRCELLDU_USES_NRSECTORCARRIER REL_CD_sourceIds_NRCELLDU_USES_NRSECTORCARRIER  COLUMN
 REL_CD_sourceIds_GNBDUFUNCTION_PROVIDES_NRCELLDU       REL_CD_sourceIds_GNBDUFUNCTION_PROVIDES_NRCELLDU        COLUMN
+REL_CD_sourceIds_NRCELLDU_USES_NRSECTORCARRIER REL_CD_sourceIds_NRCELLDU_USES_NRSECTORCARRIER  COLUMN
 frequencyUL    frequencyUL     COLUMN
 bSChannelBwDL  bSChannelBwDL   COLUMN
-UNIQUE_GNBCUCPFunction_REL_ID_PHYSICALNF_SERVES_GNBCUCPFUNCTION        UNIQUE_GNBCUCPFunction_REL_ID_PHYSICALNF_SERVES_GNBCUCPFUNCTION CONSTRAINT
 REL_ID_GNBDUFUNCTION_PROVIDES_NRCELLDU REL_ID_GNBDUFUNCTION_PROVIDES_NRCELLDU  COLUMN
 CD_sourceIds   CD_sourceIds    COLUMN
-REL_FK_serving-physicalNF      REL_FK_serving-physicalNF       COLUMN
-REL_CD_classifiers_PHYSICALNF_SERVES_ENODEBFUNCTION    REL_CD_classifiers_PHYSICALNF_SERVES_ENODEBFUNCTION     COLUMN
-REL_CD_decorators_PHYSICALNF_SERVES_ENODEBFUNCTION     REL_CD_decorators_PHYSICALNF_SERVES_ENODEBFUNCTION      COLUMN
-REL_CD_classifiers_PHYSICALNF_SERVES_GNBCUUPFUNCTION   REL_CD_classifiers_PHYSICALNF_SERVES_GNBCUUPFUNCTION    COLUMN
 REL_CD_decorators_GNBCUCPFUNCTION_PROVIDES_NRCELLCU    REL_CD_decorators_GNBCUCPFUNCTION_PROVIDES_NRCELLCU     COLUMN
 NRCellCU       NRCellCU        TABLE
 REL_ID_CLOUDNAMESPACE_DEPLOYED_ON_NODECLUSTER  REL_ID_CLOUDNAMESPACE_DEPLOYED_ON_NODECLUSTER   COLUMN
 REL_FK_used-by-euTranCell      REL_FK_used-by-euTranCell       COLUMN
 UNIQUE_NRSectorCarrier_REL_ID_NRSECTORCARRIER_USES_ANTENNACAPABILITY   UNIQUE_EDF7D5C78EF6505848B1679B714D7831F5863991 CONSTRAINT
-REL_ID_CLOUDIFIEDNF_COMPRISES_NFDEPLOYMENT     REL_ID_CLOUDIFIEDNF_COMPRISES_NFDEPLOYMENT      COLUMN
 REL_CD_sourceIds_MANAGEDELEMENT_MANAGES_ENODEBFUNCTION REL_CD_sourceIds_MANAGEDELEMENT_MANAGES_ENODEBFUNCTION  COLUMN
+REL_ID_CLOUDIFIEDNF_COMPRISES_NFDEPLOYMENT     REL_ID_CLOUDIFIEDNF_COMPRISES_NFDEPLOYMENT      COLUMN
 REL_CD_sourceIds_GNBDUFUNCTION_PROVIDES_NRSECTORCARRIER        REL_CD_sourceIds_GNBDUFUNCTION_PROVIDES_NRSECTORCARRIER COLUMN
 NFDEPLOYMENT_DEPLOYED_ON_CLOUDNAMESPACE        NFDEPLOYMENT_DEPLOYED_ON_CLOUDNAMESPACE TABLE
-REL_ID_PHYSICALNF_SERVES_GNBCUUPFUNCTION       REL_ID_PHYSICALNF_SERVES_GNBCUUPFUNCTION        COLUMN
 FK_LTESectorCarrier_REL_FK_provided-by-enodebFunction  FK_LTESectorCarrier_REL_FK_provided-by-enodebFunction   CONSTRAINT
 REL_ID_ENODEBFUNCTION_PROVIDES_LTESECTORCARRIER        REL_ID_ENODEBFUNCTION_PROVIDES_LTESECTORCARRIER COLUMN
 eNBId  eNBId   COLUMN
@@ -135,10 +129,7 @@ GNBCUCPFunction    GNBCUCPFunction TABLE
 REL_ID_LTESECTORCARRIER_USES_ANTENNACAPABILITY REL_ID_LTESECTORCARRIER_USES_ANTENNACAPABILITY  COLUMN
 PK_ManagedElement_id   PK_ManagedElement_id    CONSTRAINT
 UNIQUE_AntennaModule_REL_ID_ANTENNAMODULE_INSTALLED_AT_SITE    UNIQUE_AntennaModule_REL_ID_ANTENNAMODULE_INSTALLED_AT_SITE     CONSTRAINT
-REL_CD_classifiers_PHYSICALNF_SERVES_GNBDUFUNCTION     REL_CD_classifiers_PHYSICALNF_SERVES_GNBDUFUNCTION      COLUMN
 REL_FK_provided-by-gnbcucpFunction     REL_FK_provided-by-gnbcucpFunction      COLUMN
-FK_ENodeBFunction_REL_FK_serving-physicalNF    FK_ENodeBFunction_REL_FK_serving-physicalNF     CONSTRAINT
-REL_CD_decorators_PHYSICALNF_SERVES_GNBCUUPFUNCTION    REL_CD_decorators_PHYSICALNF_SERVES_GNBCUUPFUNCTION     COLUMN
 ManagedElement ManagedElement  TABLE
 PK_AntennaModule_id    PK_AntennaModule_id     CONSTRAINT
 PK_CloudNamespace_id   PK_CloudNamespace_id    CONSTRAINT
@@ -151,8 +142,6 @@ PK_CloudifiedNF_id  PK_CloudifiedNF_id      CONSTRAINT
 REL_ID_GNBCUCPFUNCTION_PROVIDES_NRCELLCU       REL_ID_GNBCUCPFUNCTION_PROVIDES_NRCELLCU        COLUMN
 FK_NFDEPLOYMENT_SERVES_GNBDUFUNCTION_bSide_GNBDUFunction       FK_NFDEPLOYMENT_SERVES_GNBDUFUNCTION_bSide_GNBDUFunction        CONSTRAINT
 UNIQUE_NRCellDU_REL_ID_GNBDUFUNCTION_PROVIDES_NRCELLDU UNIQUE_NRCellDU_REL_ID_GNBDUFUNCTION_PROVIDES_NRCELLDU  CONSTRAINT
-REL_CD_classifiers_PHYSICALNF_INSTALLED_AT_SITE        REL_CD_classifiers_PHYSICALNF_INSTALLED_AT_SITE COLUMN
-UNIQUE_ENodeBFunction_REL_ID_PHYSICALNF_SERVES_ENODEBFUNCTION  UNIQUE_ENodeBFunction_REL_ID_PHYSICALNF_SERVES_ENODEBFUNCTION   CONSTRAINT
 FK_GNBCUUPFunction_REL_FK_managed-by-managedElement    FK_GNBCUUPFunction_REL_FK_managed-by-managedElement     CONSTRAINT
 PK_NFDEPLOYMENT_SERVES_GNBCUCPFUNCTION_id      PK_NFDEPLOYMENT_SERVES_GNBCUCPFUNCTION_id       CONSTRAINT
 ANTENNAMODULE_SERVES_ANTENNACAPABILITY ANTENNAMODULE_SERVES_ANTENNACAPABILITY  TABLE
@@ -160,17 +149,15 @@ eNodeBPlmnId      eNodeBPlmnId    COLUMN
 PK_NRSectorCarrier_id  PK_NRSectorCarrier_id   CONSTRAINT
 mechanicalAntennaBearing       mechanicalAntennaBearing        COLUMN
 REL_CD_sourceIds_ANTENNAMODULE_INSTALLED_AT_SITE       REL_CD_sourceIds_ANTENNAMODULE_INSTALLED_AT_SITE        COLUMN
-ENodeBFunction ENodeBFunction  TABLE
 nRPCI  nRPCI   COLUMN
+ENodeBFunction ENodeBFunction  TABLE
 antennaModelNumber     antennaModelNumber      COLUMN
-REL_ID_PHYSICALNF_SERVES_ENODEBFUNCTION        REL_ID_PHYSICALNF_SERVES_ENODEBFUNCTION COLUMN
 REL_CD_classifiers_SECTOR_GROUPS_ANTENNAMODULE REL_CD_classifiers_SECTOR_GROUPS_ANTENNAMODULE  COLUMN
 PK_NRCellCU_id PK_NRCellCU_id  CONSTRAINT
 REL_FK_used-antennaCapability  REL_FK_used-antennaCapability   COLUMN
 REL_CD_sourceIds_CLOUDNAMESPACE_DEPLOYED_ON_NODECLUSTER        REL_CD_sourceIds_CLOUDNAMESPACE_DEPLOYED_ON_NODECLUSTER COLUMN
 cellId cellId  COLUMN
 UNIQUE_NRSectorCarrier_REL_ID_GNBDUFUNCTION_PROVIDES_NRSECTORCARRIER   UNIQUE_872BE05F1989443F2595D99A77BC03733B2D1E2F CONSTRAINT
-REL_CD_sourceIds_PHYSICALNF_SERVES_GNBCUUPFUNCTION     REL_CD_sourceIds_PHYSICALNF_SERVES_GNBCUUPFUNCTION      COLUMN
 REL_CD_decorators_MANAGEDELEMENT_MANAGES_GNBCUUPFUNCTION       REL_CD_decorators_MANAGEDELEMENT_MANAGES_GNBCUUPFUNCTION        COLUMN
 UNIQUE_EUtranCell_REL_ID_SECTOR_GROUPS_EUTRANCELL      UNIQUE_EUtranCell_REL_ID_SECTOR_GROUPS_EUTRANCELL       CONSTRAINT
 REL_CD_decorators_SECTOR_GROUPS_EUTRANCELL     REL_CD_decorators_SECTOR_GROUPS_EUTRANCELL      COLUMN
@@ -182,7 +169,6 @@ PK_NFDEPLOYMENT_DEPLOYED_ON_CLOUDNAMESPACE_id       PK_NFDEPLOYMENT_DEPLOYED_ON_CLOUDN
 geranFqBands   geranFqBands    COLUMN
 REL_CD_sourceIds_MANAGEDELEMENT_MANAGES_GNBCUUPFUNCTION        REL_CD_sourceIds_MANAGEDELEMENT_MANAGES_GNBCUUPFUNCTION COLUMN
 PK_EUtranCell_id       PK_EUtranCell_id        CONSTRAINT
-REL_ID_PHYSICALNF_SERVES_GNBDUFUNCTION REL_ID_PHYSICALNF_SERVES_GNBDUFUNCTION  COLUMN
 REL_CD_sourceIds_MANAGEDELEMENT_MANAGES_GNBCUCPFUNCTION        REL_CD_sourceIds_MANAGEDELEMENT_MANAGES_GNBCUCPFUNCTION COLUMN
 FK_NRSectorCarrier_REL_FK_used-antennaCapability       FK_NRSectorCarrier_REL_FK_used-antennaCapability        CONSTRAINT
 bSide_GNBCUCPFunction  bSide_GNBCUCPFunction   COLUMN
@@ -191,10 +177,8 @@ PK_NFDEPLOYMENT_SERVES_GNBCUUPFUNCTION_id  PK_NFDEPLOYMENT_SERVES_GNBCUUPFUNCTION
 bSide_CloudSite        bSide_CloudSite COLUMN
 FK_NFDEPLOYMENT_SERVES_GNBCUCPFUNCTION_aSide_NFDeployment      FK_NFDEPLOYMENT_SERVES_GNBCUCPFUNCTION_aSide_NFDeployment       CONSTRAINT
 REL_CD_sourceIds_GNBCUCPFUNCTION_PROVIDES_NRCELLCU     REL_CD_sourceIds_GNBCUCPFUNCTION_PROVIDES_NRCELLCU      COLUMN
-REL_CD_decorators_PHYSICALNF_INSTALLED_AT_SITE REL_CD_decorators_PHYSICALNF_INSTALLED_AT_SITE  COLUMN
 REL_CD_classifiers_MANAGEDELEMENT_MANAGES_ENODEBFUNCTION       REL_CD_classifiers_MANAGEDELEMENT_MANAGES_ENODEBFUNCTION        COLUMN
 REL_CD_sourceIds_LTESECTORCARRIER_USES_ANTENNACAPABILITY       REL_CD_sourceIds_LTESECTORCARRIER_USES_ANTENNACAPABILITY        COLUMN
-REL_CD_sourceIds_PHYSICALNF_INSTALLED_AT_SITE  REL_CD_sourceIds_PHYSICALNF_INSTALLED_AT_SITE   COLUMN
 positionWithinSector   positionWithinSector    COLUMN
 NFDEPLOYMENT_SERVES_GNBCUUPFUNCTION    NFDEPLOYMENT_SERVES_GNBCUUPFUNCTION     TABLE
 REL_CD_sourceIds_CLOUDIFIEDNF_COMPRISES_NFDEPLOYMENT   REL_CD_sourceIds_CLOUDIFIEDNF_COMPRISES_NFDEPLOYMENT    COLUMN
@@ -204,7 +188,6 @@ REL_CD_decorators_GNBDUFUNCTION_PROVIDES_NRCELLDU   REL_CD_decorators_GNBDUFUNCTIO
 PK_GNBCUCPFunction_id  PK_GNBCUCPFunction_id   CONSTRAINT
 REL_CD_classifiers_MANAGEDELEMENT_MANAGES_GNBDUFUNCTION        REL_CD_classifiers_MANAGEDELEMENT_MANAGES_GNBDUFUNCTION COLUMN
 REL_FK_deployed-on-nodeCluster REL_FK_deployed-on-nodeCluster  COLUMN
-REL_CD_sourceIds_PHYSICALNF_SERVES_ENODEBFUNCTION      REL_CD_sourceIds_PHYSICALNF_SERVES_ENODEBFUNCTION       COLUMN
 AntennaCapability      AntennaCapability       TABLE
 NodeCluster    NodeCluster     TABLE
 REL_CD_decorators_SECTOR_GROUPS_ANTENNAMODULE  REL_CD_decorators_SECTOR_GROUPS_ANTENNAMODULE   COLUMN
@@ -221,29 +204,24 @@ azimuth   azimuth COLUMN
 antennaBeamWidth       antennaBeamWidth        COLUMN
 NFDEPLOYMENT_SERVES_GNBDUFUNCTION      NFDEPLOYMENT_SERVES_GNBDUFUNCTION       TABLE
 FK_EUtranCell_REL_FK_grouped-by-sector FK_EUtranCell_REL_FK_grouped-by-sector  CONSTRAINT
-REL_CD_decorators_PHYSICALNF_SERVES_GNBCUCPFUNCTION    REL_CD_decorators_PHYSICALNF_SERVES_GNBCUCPFUNCTION     COLUMN
 cellLocalId    cellLocalId     COLUMN
 REL_CD_classifiers_ENODEBFUNCTION_PROVIDES_LTESECTORCARRIER    REL_CD_classifiers_ENODEBFUNCTION_PROVIDES_LTESECTORCARRIER     COLUMN
 gNBCUName      gNBCUName       COLUMN
 electricalAntennaTilt  electricalAntennaTilt   COLUMN
-REL_CD_sourceIds_SECTOR_GROUPS_ANTENNAMODULE   REL_CD_sourceIds_SECTOR_GROUPS_ANTENNAMODULE    COLUMN
 FK_NRSectorCarrier_REL_FK_used-by-nrCellDu     FK_NRSectorCarrier_REL_FK_used-by-nrCellDu      CONSTRAINT
-FK_GNBDUFunction_REL_FK_serving-physicalNF     FK_GNBDUFunction_REL_FK_serving-physicalNF      CONSTRAINT
+REL_CD_sourceIds_SECTOR_GROUPS_ANTENNAMODULE   REL_CD_sourceIds_SECTOR_GROUPS_ANTENNAMODULE    COLUMN
 REL_FK_provided-by-enodebFunction      REL_FK_provided-by-enodebFunction       COLUMN
 eUtranFqBands  eUtranFqBands   COLUMN
 REL_ID_NRSECTORCARRIER_USES_ANTENNACAPABILITY  REL_ID_NRSECTORCARRIER_USES_ANTENNACAPABILITY   COLUMN
 CD_classifiers CD_classifiers  COLUMN
 aSide_NodeCluster      aSide_NodeCluster       COLUMN
-REL_FK_comprised-by-cloudifiedNF       REL_FK_comprised-by-cloudifiedNF        COLUMN
 UNIQUE_ManagedElement_REL_ID_MANAGEDELEMENT_DEPLOYED_AS_CLOUDIFIEDNF   UNIQUE_E7BC94037DB5B94B7E863A10BEA20C2D4C3C307C CONSTRAINT
+REL_FK_comprised-by-cloudifiedNF       REL_FK_comprised-by-cloudifiedNF        COLUMN
 UNIQUE_CloudNamespace_REL_ID_CLOUDNAMESPACE_DEPLOYED_ON_NODECLUSTER    UNIQUE_C72E1EF93E1AC8FA53D20808E775FF012ACB46F0 CONSTRAINT
-FK_GNBCUCPFunction_REL_FK_serving-physicalNF   FK_GNBCUCPFunction_REL_FK_serving-physicalNF    CONSTRAINT
 REL_ID_EUTRANCELL_USES_LTESECTORCARRIER        REL_ID_EUTRANCELL_USES_LTESECTORCARRIER COLUMN
 REL_ID_MANAGEDELEMENT_MANAGES_GNBDUFUNCTION    REL_ID_MANAGEDELEMENT_MANAGES_GNBDUFUNCTION     COLUMN
 CloudSite      CloudSite       TABLE
-REL_ID_PHYSICALNF_SERVES_GNBCUCPFUNCTION       REL_ID_PHYSICALNF_SERVES_GNBCUCPFUNCTION        COLUMN
 FK_AntennaModule_REL_FK_grouped-by-sector      FK_AntennaModule_REL_FK_grouped-by-sector       CONSTRAINT
-REL_ID_PHYSICALNF_INSTALLED_AT_SITE    REL_ID_PHYSICALNF_INSTALLED_AT_SITE     COLUMN
 REL_FK_used-by-nrCellDu        REL_FK_used-by-nrCellDu COLUMN
 FK_GNBDUFunction_REL_FK_managed-by-managedElement      FK_GNBDUFunction_REL_FK_managed-by-managedElement       CONSTRAINT
 PK_LTESectorCarrier_id PK_LTESectorCarrier_id  CONSTRAINT
@@ -251,17 +229,14 @@ PK_AntennaCapability_id   PK_AntennaCapability_id CONSTRAINT
 geo-location   geo-location    COLUMN
 REL_FK_grouped-by-sector       REL_FK_grouped-by-sector        COLUMN
 REL_CD_sourceIds_SECTOR_GROUPS_NRCELLDU        REL_CD_sourceIds_SECTOR_GROUPS_NRCELLDU COLUMN
-UNIQUE_GNBDUFunction_REL_ID_PHYSICALNF_SERVES_GNBDUFUNCTION    UNIQUE_GNBDUFunction_REL_ID_PHYSICALNF_SERVES_GNBDUFUNCTION     CONSTRAINT
 FK_NFDEPLOYMENT_DEPLOYED_ON_CLOUDNAMESPACE_aSide_NFDeployment  FK_NFDEPLOYMENT_DEPLOYED_ON_CLOUDNAMESPACE_aSide_NFDeployment   CONSTRAINT
-gNBId  gNBId   COLUMN
 id     id      COLUMN
+gNBId  gNBId   COLUMN
 PK_NRCellDU_id PK_NRCellDU_id  CONSTRAINT
 EUtranCell     EUtranCell      TABLE
-REL_CD_classifiers_CLOUDIFIEDNF_COMPRISES_NFDEPLOYMENT REL_CD_classifiers_CLOUDIFIEDNF_COMPRISES_NFDEPLOYMENT  COLUMN
 REL_CD_decorators_ANTENNAMODULE_INSTALLED_AT_SITE      REL_CD_decorators_ANTENNAMODULE_INSTALLED_AT_SITE       COLUMN
-UNIQUE_PhysicalNF_REL_ID_PHYSICALNF_INSTALLED_AT_SITE  UNIQUE_PhysicalNF_REL_ID_PHYSICALNF_INSTALLED_AT_SITE   CONSTRAINT
+REL_CD_classifiers_CLOUDIFIEDNF_COMPRISES_NFDEPLOYMENT REL_CD_classifiers_CLOUDIFIEDNF_COMPRISES_NFDEPLOYMENT  COLUMN
 PK_Site_id     PK_Site_id      CONSTRAINT
-PK_PhysicalNF_id       PK_PhysicalNF_id        CONSTRAINT
 REL_FK_installed-at-site       REL_FK_installed-at-site        COLUMN
 NFDEPLOYMENT_SERVES_GNBCUCPFUNCTION    NFDEPLOYMENT_SERVES_GNBCUCPFUNCTION     TABLE
 CloudNamespace CloudNamespace  TABLE
@@ -273,15 +248,11 @@ FK_AntennaModule_REL_FK_installed-at-site FK_AntennaModule_REL_FK_installed-at-s
 earfcnul       earfcnul        COLUMN
 REL_CD_decorators_ENODEBFUNCTION_PROVIDES_EUTRANCELL   REL_CD_decorators_ENODEBFUNCTION_PROVIDES_EUTRANCELL    COLUMN
 aSide_NFDeployment     aSide_NFDeployment      COLUMN
-REL_CD_classifiers_PHYSICALNF_SERVES_GNBCUCPFUNCTION   REL_CD_classifiers_PHYSICALNF_SERVES_GNBCUCPFUNCTION    COLUMN
 FK_NRSectorCarrier_REL_FK_provided-by-gnbduFunction    FK_NRSectorCarrier_REL_FK_provided-by-gnbduFunction     CONSTRAINT
-FK_NODECLUSTER_LOCATED_AT_CLOUDSITE_aSide_NodeCluster  FK_NODECLUSTER_LOCATED_AT_CLOUDSITE_aSide_NodeCluster   CONSTRAINT
 REL_CD_decorators_NFDEPLOYMENT_SERVES_MANAGEDELEMENT   REL_CD_decorators_NFDEPLOYMENT_SERVES_MANAGEDELEMENT    COLUMN
+FK_NODECLUSTER_LOCATED_AT_CLOUDSITE_aSide_NodeCluster  FK_NODECLUSTER_LOCATED_AT_CLOUDSITE_aSide_NodeCluster   CONSTRAINT
 bSide_GNBCUUPFunction  bSide_GNBCUUPFunction   COLUMN
-PhysicalNF     PhysicalNF      TABLE
-cmId   cmId    COLUMN
 REL_CD_classifiers_NRCELLDU_USES_NRSECTORCARRIER       REL_CD_classifiers_NRCELLDU_USES_NRSECTORCARRIER        COLUMN
-type   type    COLUMN
 PK_NFDeployment_id     PK_NFDeployment_id      CONSTRAINT
 nCI    nCI     COLUMN
 REL_CD_sourceIds_ENODEBFUNCTION_PROVIDES_LTESECTORCARRIER      REL_CD_sourceIds_ENODEBFUNCTION_PROVIDES_LTESECTORCARRIER       COLUMN
@@ -295,14 +266,12 @@ NODECLUSTER_LOCATED_AT_CLOUDSITE  NODECLUSTER_LOCATED_AT_CLOUDSITE        TABLE
 AntennaModule  AntennaModule   TABLE
 REL_CD_sourceIds_MANAGEDELEMENT_DEPLOYED_AS_CLOUDIFIEDNF       REL_CD_sourceIds_MANAGEDELEMENT_DEPLOYED_AS_CLOUDIFIEDNF        COLUMN
 LTESectorCarrier       LTESectorCarrier        TABLE
-REL_CD_sourceIds_PHYSICALNF_SERVES_GNBCUCPFUNCTION     REL_CD_sourceIds_PHYSICALNF_SERVES_GNBCUCPFUNCTION      COLUMN
 REL_ID_ANTENNAMODULE_INSTALLED_AT_SITE REL_ID_ANTENNAMODULE_INSTALLED_AT_SITE  COLUMN
 FK_LTESectorCarrier_REL_FK_used-antennaCapability      FK_LTESectorCarrier_REL_FK_used-antennaCapability       CONSTRAINT
 REL_FK_managed-by-managedElement       REL_FK_managed-by-managedElement        COLUMN
 REL_CD_decorators_MANAGEDELEMENT_MANAGES_ENODEBFUNCTION        REL_CD_decorators_MANAGEDELEMENT_MANAGES_ENODEBFUNCTION COLUMN
 REL_CD_decorators_MANAGEDELEMENT_MANAGES_GNBCUCPFUNCTION       REL_CD_decorators_MANAGEDELEMENT_MANAGES_GNBCUCPFUNCTION        COLUMN
 aSide_AntennaModule    aSide_AntennaModule     COLUMN
-fdn    fdn     COLUMN
 REL_CD_classifiers_LTESECTORCARRIER_USES_ANTENNACAPABILITY     REL_CD_classifiers_LTESECTORCARRIER_USES_ANTENNACAPABILITY      COLUMN
 dUpLMNId       dUpLMNId        COLUMN
 REL_CD_classifiers_MANAGEDELEMENT_MANAGES_GNBCUUPFUNCTION      REL_CD_classifiers_MANAGEDELEMENT_MANAGES_GNBCUUPFUNCTION       COLUMN
@@ -332,11 +301,11 @@ FK_GNBCUCPFunction_REL_FK_managed-by-managedElement       FK_GNBCUCPFunction_REL_FK_ma
 REL_CD_decorators_CLOUDNAMESPACE_DEPLOYED_ON_NODECLUSTER       REL_CD_decorators_CLOUDNAMESPACE_DEPLOYED_ON_NODECLUSTER        COLUMN
 REL_CD_decorators_EUTRANCELL_USES_LTESECTORCARRIER     REL_CD_decorators_EUTRANCELL_USES_LTESECTORCARRIER      COLUMN
 REL_ID_ENODEBFUNCTION_PROVIDES_EUTRANCELL      REL_ID_ENODEBFUNCTION_PROVIDES_EUTRANCELL       COLUMN
-REL_CD_sourceIds_SECTOR_GROUPS_EUTRANCELL      REL_CD_sourceIds_SECTOR_GROUPS_EUTRANCELL       COLUMN
 REL_CD_classifiers_GNBDUFUNCTION_PROVIDES_NRSECTORCARRIER      REL_CD_classifiers_GNBDUFUNCTION_PROVIDES_NRSECTORCARRIER       COLUMN
+REL_CD_sourceIds_SECTOR_GROUPS_EUTRANCELL      REL_CD_sourceIds_SECTOR_GROUPS_EUTRANCELL       COLUMN
 nRFqBands      nRFqBands       COLUMN
-FK_NFDeployment_REL_FK_serviced-managedElement FK_NFDeployment_REL_FK_serviced-managedElement  CONSTRAINT
 FK_ManagedElement_REL_FK_deployed-as-cloudifiedNF      FK_ManagedElement_REL_FK_deployed-as-cloudifiedNF       CONSTRAINT
+FK_NFDeployment_REL_FK_serviced-managedElement FK_NFDeployment_REL_FK_serviced-managedElement  CONSTRAINT
 tac    tac     COLUMN
 arfcnDL        arfcnDL COLUMN
 REL_CD_classifiers_EUTRANCELL_USES_LTESECTORCARRIER    REL_CD_classifiers_EUTRANCELL_USES_LTESECTORCARRIER     COLUMN
@@ -346,21 +315,16 @@ earfcn    earfcn  COLUMN
 sectorId       sectorId        COLUMN
 REL_CD_classifiers_SECTOR_GROUPS_EUTRANCELL    REL_CD_classifiers_SECTOR_GROUPS_EUTRANCELL     COLUMN
 PK_NFDEPLOYMENT_SERVES_GNBDUFUNCTION_id        PK_NFDEPLOYMENT_SERVES_GNBDUFUNCTION_id CONSTRAINT
-UNIQUE_GNBCUUPFunction_REL_ID_PHYSICALNF_SERVES_GNBCUUPFUNCTION        UNIQUE_GNBCUUPFunction_REL_ID_PHYSICALNF_SERVES_GNBCUUPFUNCTION CONSTRAINT
-FK_PhysicalNF_REL_FK_installed-at-site FK_PhysicalNF_REL_FK_installed-at-site  CONSTRAINT
 GNBCUUPFunction        GNBCUUPFunction TABLE
-FK_GNBCUUPFunction_REL_FK_serving-physicalNF   FK_GNBCUUPFunction_REL_FK_serving-physicalNF    CONSTRAINT
 FK_NODECLUSTER_LOCATED_AT_CLOUDSITE_bSide_CloudSite    FK_NODECLUSTER_LOCATED_AT_CLOUDSITE_bSide_CloudSite     CONSTRAINT
 UNIQUE_AntennaModule_REL_ID_SECTOR_GROUPS_ANTENNAMODULE        UNIQUE_AntennaModule_REL_ID_SECTOR_GROUPS_ANTENNAMODULE CONSTRAINT
 UNIQUE_NRSectorCarrier_REL_ID_NRCELLDU_USES_NRSECTORCARRIER    UNIQUE_NRSectorCarrier_REL_ID_NRCELLDU_USES_NRSECTORCARRIER     CONSTRAINT
 REL_FK_deployed-as-cloudifiedNF        REL_FK_deployed-as-cloudifiedNF COLUMN
 PK_ANTENNAMODULE_SERVES_ANTENNACAPABILITY_id   PK_ANTENNAMODULE_SERVES_ANTENNACAPABILITY_id    CONSTRAINT
-REL_CD_decorators_PHYSICALNF_SERVES_GNBDUFUNCTION      REL_CD_decorators_PHYSICALNF_SERVES_GNBDUFUNCTION       COLUMN
 REL_ID_MANAGEDELEMENT_MANAGES_GNBCUCPFUNCTION  REL_ID_MANAGEDELEMENT_MANAGES_GNBCUCPFUNCTION   COLUMN
 totalTilt      totalTilt       COLUMN
 REL_CD_decorators_MANAGEDELEMENT_DEPLOYED_AS_CLOUDIFIEDNF      REL_CD_decorators_MANAGEDELEMENT_DEPLOYED_AS_CLOUDIFIEDNF       COLUMN
 REL_CD_decorators_ENODEBFUNCTION_PROVIDES_LTESECTORCARRIER     REL_CD_decorators_ENODEBFUNCTION_PROVIDES_LTESECTORCARRIER      COLUMN
-REL_CD_sourceIds_PHYSICALNF_SERVES_GNBDUFUNCTION       REL_CD_sourceIds_PHYSICALNF_SERVES_GNBDUFUNCTION        COLUMN
 gNBIdLength    gNBIdLength     COLUMN
 UNIQUE_ENodeBFunction_REL_ID_MANAGEDELEMENT_MANAGES_ENODEBFUNCTION     UNIQUE_F33037EE8037D0606D15FFB45EE8A27FD6DE30EE CONSTRAINT
 FK_NRCellDU_REL_FK_provided-by-gnbduFunction   FK_NRCellDU_REL_FK_provided-by-gnbduFunction    CONSTRAINT
@@ -385,76 +349,70 @@ REL_CD_decorators_CLOUDIFIEDNF_COMPRISES_NFDEPLOYMENT     REL_CD_decorators_CLOUDIFI
 \.
 
 COPY ties_model.module_reference("name", "namespace", "domain", "includedModules", "revision", "content", "ownerAppId", "status") FROM stdin;
-o-ran-smo-teiv-common-yang-extensions  urn:o-ran:smo-teiv-common-yang-extensions       \N      []      2024-05-02      bW9kdWxlIG8tcmFuLXNtby10ZWl2LWNvbW1vbi15YW5nLWV4dGVuc2lvbnMgewoKICB5YW5nLXZlcnNpb24gMS4xOwogIG5hbWVzcGFjZSAidXJuOm8tcmFuOnNtby10ZWl2LWNvbW1vbi15YW5nLWV4dGVuc2lvbnMiOwogIHByZWZpeCBvci10ZWl2LXlleHQ7CgogIG9yZ2FuaXphdGlvbiAiRXJpY3Nzb24gQUIiOwogIGNvbnRhY3QgIkVyaWNzc29uIGZpcnN0IGxpbmUgc3VwcG9ydCB2aWEgZW1haWwiOwogIGRlc2NyaXB0aW9uCiAgIlRvcG9sb2d5IGFuZCBJbnZlbnRvcnkgWUFORyBleHRlbnNpb25zIG1vZGVsLgoKICBDb3B5cmlnaHQgKGMpIDIwMjMgRXJpY3Nzb24gQUIuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCgogIFRoaXMgbW9kZWwgY29udGFpbnMgZXh0ZW5zaW9ucyB0byB0aGUgWUFORyBsYW5ndWFnZSB0aGF0IHRvcG9sb2d5IGFuZAogIGludmVudG9yeSBtb2RlbHMgd2lsbCB1c2UgdG8gZGVmaW5lIGFuZCBhbm5vdGF0ZSB0eXBlcyBhbmQgcmVsYXRpb25zaGlwcy4iOwoKICByZXZpc2lvbiAiMjAyNC0wNS0wMiIgewogICAgZGVzY3JpcHRpb24gIkluaXRpYWwgcmV2aXNpb24uIjsKICAgIG9yLXRlaXYteWV4dDpsYWJlbCAwLjMuMDsKICB9CgogIGV4dGVuc2lvbiBiaURpcmVjdGlvbmFsVG9wb2xvZ3lSZWxhdGlvbnNoaXAgewoKICAgIGRlc2NyaXB0aW9uCiAgICAgICJEZWZpbmVzIGEgYmktZGlyZWN0aW9uYWwgcmVsYXRpb25zaGlwIGluIHRoZSB0b3BvbG9neS4KCiAgICAgICBBIGJpLWRpcmVjdGlvbmFsLWFzc29jaWF0aW9uIChCREEpIGlzIGEgcmVsYXRpb25zaGlwIGNvbXByaXNpbmcgb2YgYW4KICAgICAgIEEtc2lkZSBhbmQgYSBCLXNpZGUuIFRoZSBBLXNpZGUgaXMgY29uc2lkZXJlZCB0aGUgb3JpZ2luYXRpbmcgc2lkZSBvZgogICAgICAgdGhlIHJlbGF0aW9uc2hpcDsgdGhlIEItc2lkZSBpcyBjb25zaWRlcmVkIHRoZSB0ZXJtaW5hdGluZyBzaWRlIG9mIHRoZQogICAgICAgcmVsYXRpb25zaGlwLiBUaGUgb3JkZXIgb2YgQS1zaWRlIGFuZCBCLXNpZGUgaXMgb2YgaW1wb3J0YW5jZSBhbmQgTVVTVAogICAgICAgTk9UIGJlIGNoYW5nZWQgb25jZSBkZWZpbmVkLgoKICAgICAgIEJvdGggQS1zaWRlIGFuZCBCLXNpZGUgYXJlIGRlZmluZWQgb24gYSB0eXBlLCBhbmQgYXJlIGdpdmVuIGEgcm9sZS4gQQogICAgICAgdHlwZSBtYXkgaGF2ZSBtdWx0aXBsZSBvcmlnaW5hdGluZyBhbmQvb3IgdGVybWluYXRpbmcgc2lkZXMgb2YgYQogICAgICAgcmVsYXRpb25zaGlwLCBhbGwgZGlzdGluZ3Vpc2hlZCBieSByb2xlIG5hbWUuCgogICAgICAgVGhlIHN0YXRlbWVudCBNVVNUIG9ubHkgYmUgYSBzdWJzdGF0ZW1lbnQgb2YgdGhlICdtb2R1bGUnIHN0YXRlbWVudC4KICAgICAgIE11bHRpcGxlICdiaS1kaXJlY3Rpb25hbC10b3BvbG9neS1yZWxhdGlvbnNoaXAnIHN0YXRlbWVudHMgYXJlIGFsbG93ZWQKICAgICAgIHBlciBwYXJlbnQgc3RhdGVtZW50LgoKICAgICAgIFN1YnN0YXRlbWVudHMgdG8gdGhlICdiaS1kaXJlY3Rpb25hbC10b3BvbG9neS1yZWxhdGlvbnNoaXAnIGRlZmluZSB0aGUKICAgICAgIEEtc2lkZSBhbmQgdGhlIEItc2lkZSwgcmVzcGVjdGl2ZWx5LCBhbmQgb3B0aW9uYWxseSBwcm9wZXJ0aWVzIG9mIHRoZQogICAgICAgcmVsYXRpb25zaGlwLiBEYXRhIG5vZGVzIG9mIHR5cGVzICdsZWFmJyBhbmQgJ2xlYWYtbGlzdCcgYXJlIHVzZWQgZm9yCiAgICAgICB0aGlzIHB1cnBvc2UuIE9uZSBvZiB0aGUgZGF0YSBub2RlcyBNVVNUIGJlIGFubm90YXRlZCB3aXRoIHRoZSAnYS1zaWRlJwogICAgICAgZXh0ZW5zaW9uOyBhbm90aGVyIGRhdGEgbm9kZSBNVVNUIGJlIGFubm90YXRlZCB3aXRoIHRoZSAnYi1zaWRlJwogICAgICAgZXh0ZW5zaW9uLiBPdGhlciBkYXRhIG5vZGVzIGRlZmluZSBwcm9wZXJ0aWVzIG9mIHRoZSByZWxhdGlvbnNoaXAuCgogICAgICAgVGhlIGFyZ3VtZW50IGlzIHRoZSBuYW1lIG9mIHRoZSByZWxhdGlvbnNoaXAuIFRoZSByZWxhdGlvbnNoaXAgbmFtZSBpcwogICAgICAgc2NvcGVkIHRvIHRoZSBuYW1lc3BhY2Ugb2YgdGhlIGRlY2xhcmluZyBtb2R1bGUgYW5kIE1VU1QgYmUgdW5pcXVlCiAgICAgICB3aXRoaW4gdGhlIHNjb3BlLiI7CgogICAgYXJndW1lbnQgcmVsYXRpb25zaGlwTmFtZTsKICB9CgogIGV4dGVuc2lvbiBhU2lkZSB7CiAgICBkZXNjcmlwdGlvbgogICAgICAiRGVmaW5lcyB0aGUgQS1zaWRlIG9mIGEgcmVsYXRpb25zaGlwLgoKICAgICAgIFRoZSBzdGF0ZW1lbnQgTVVTVCBvbmx5IGJlIGEgc3Vic3RhdGVtZW50IG9mIGEgJ2xlYWYnIG9yICdsZWFmLWxpc3QnCiAgICAgICBzdGF0ZW1lbnQsIHdoaWNoIGl0c2VsZiBtdXN0IGJlIGEgc3Vic3RhdGVtZW50IG9mIHRoZQogICAgICAgJ3VuaS1kaXJlY3Rpb25hbC10b3BvbG9neS1yZWxhdGlvbnNoaXAnIHN0YXRlbWVudC4KCiAgICAgICBUaGUgZGF0YSB0eXBlIG9mIHRoZSBwYXJlbnQgJ2xlYWYnIG9yICdsZWFmLWxpc3QnIE1VU1QgYmUKICAgICAgICdpbnN0YW5jZS1pZGVudGlmaWVyJy4gQ29uc3RyYWludHMgTUFZIGJlIHVzZWQgYXMgcGFydCBvZiB0aGUgcGFyZW50CiAgICAgICAnbGVhZicgb3IgJ2xlYWYtbGlzdCcgdG8gZW5mb3JjZSBjYXJkaW5hbGl0eS4KCiAgICAgICBUaGUgaWRlbnRpZmllciBvZiB0aGUgcGFyZW50ICdsZWFmJyBvciAnbGVhZi1saXN0JyBpcyB1c2VkIGFzIG5hbWUgb2YKICAgICAgIHRoZSByb2xlIG9mIHRoZSBBLXNpZGUgb2YgdGhlIHJlbGF0aW9uc2hpcC4gVGhlIG5hbWUgb2YgdGhlIHJvbGUgaXMKICAgICAgIHNjb3BlZCB0byB0aGUgdHlwZSBvbiB3aGljaCB0aGUgQS1zaWRlIGlzIGRlZmluZWQgYW5kIE1VU1QgYmUgdW5pcXVlCiAgICAgICB3aXRoaW4gdGhlIHNjb3BlLgoKICAgICAgIFdoaWxlIHRoZSBwYXJlbnQgJ2xlYWYnIG9yICdsZWFmLWxpc3QnIGRvZXMgbm90IHJlc3VsdCBpbiBhIHByb3BlcnR5IG9mCiAgICAgICB0aGUgcmVsYXRpb25zaGlwLCBpdCBpcyBSRUNPTU1FTkRFRCB0byBhdm9pZCB1c2luZyB0aGUgbmFtZSBvZiBhbgogICAgICAgZXhpc3RpbmcgdHlwZSBwcm9wZXJ0eSBhcyByb2xlIG5hbWUgdG8gYXZvaWQgcG90ZW50aWFsIGFtYmlndWl0aWVzCiAgICAgICBiZXR3ZWVuIHByb3BlcnRpZXMgb2YgYSB0eXBlLCBhbmQgcm9sZXMgb2YgYSByZWxhdGlvbnNoaXAgb24gdGhlIHR5cGUuCgogICAgICAgVGhlIGFyZ3VtZW50IGlzIHRoZSBuYW1lIG9mIHRoZSB0eXBlIG9uIHdoaWNoIHRoZSBBLXNpZGUgcmVzaWRlcy4gSWYgdGhlCiAgICAgICB0eXBlIGlzIGRlY2xhcmVkIGluIGFub3RoZXIgbW9kdWxlLCB0aGUgdHlwZSBtdXN0IGJlIHByZWZpeGVkLCBhbmQgYQogICAgICAgY29ycmVzcG9uZGluZyAnaW1wb3J0JyBzdGF0ZW1lbnQgYmUgdXNlZCB0byBkZWNsYXJlIHRoZSBwcmVmaXguIjsKCiAgICBhcmd1bWVudCBhU2lkZVR5cGU7CiAgfQoKICBleHRlbnNpb24gYlNpZGUgewogICAgZGVzY3JpcHRpb24gIkRlZmluZXMgdGhlIEItc2lkZSBvZiBhIHJlbGF0aW9uc2hpcC4KCiAgICAgICBUaGUgc3RhdGVtZW50IE1VU1Qgb25seSBiZSBhIHN1YnN0YXRlbWVudCBvZiBhICdsZWFmJyBvciAnbGVhZi1saXN0JwogICAgICAgc3RhdGVtZW50LCB3aGljaCBpdHNlbGYgbXVzdCBiZSBhIHN1YnN0YXRlbWVudCBvZiB0aGUKICAgICAgICd1bmktZGlyZWN0aW9uYWwtdG9wb2xvZ3ktcmVsYXRpb25zaGlwJyBzdGF0ZW1lbnQuCgogICAgICAgVGhlIGRhdGEgdHlwZSBvZiB0aGUgcGFyZW50ICdsZWFmJyBvciAnbGVhZi1saXN0JyBNVVNUIGJlCiAgICAgICAnaW5zdGFuY2UtaWRlbnRpZmllcicuIENvbnN0cmFpbnRzIE1BWSBiZSB1c2VkIGFzIHBhcnQgb2YgdGhlIHBhcmVudAogICAgICAgJ2xlYWYnIG9yICdsZWFmLWxpc3QnIHRvIGVuZm9yY2UgY2FyZGluYWxpdHkuCgogICAgICAgVGhlIGlkZW50aWZpZXIgb2YgdGhlIHBhcmVudCAnbGVhZicgb3IgJ2xlYWYtbGlzdCcgaXMgdXNlZCBhcyBuYW1lIG9mCiAgICAgICB0aGUgcm9sZSBvZiB0aGUgQi1zaWRlIG9mIHRoZSByZWxhdGlvbnNoaXAuIFRoZSBuYW1lIG9mIHRoZSByb2xlIGlzCiAgICAgICBzY29wZWQgdG8gdGhlIHR5cGUgb24gd2hpY2ggdGhlIEItc2lkZSBpcyBkZWZpbmVkIGFuZCBNVVNUIGJlIHVuaXF1ZQogICAgICAgd2l0aGluIHRoZSBzY29wZS4KCiAgICAgICBXaGlsZSB0aGUgcGFyZW50ICdsZWFmJyBvciAnbGVhZi1saXN0JyBkb2VzIG5vdCByZXN1bHQgaW4gYSBwcm9wZXJ0eSBvZgogICAgICAgdGhlIHJlbGF0aW9uc2hpcCwgaXQgaXMgUkVDT01NRU5ERUQgdG8gYXZvaWQgdXNpbmcgdGhlIG5hbWUgb2YgYW4KICAgICAgIGV4aXN0aW5nIHR5cGUgcHJvcGVydHkgYXMgcm9sZSBuYW1lIHRvIGF2b2lkIHBvdGVudGlhbCBhbWJpZ3VpdGllcwogICAgICAgYmV0d2VlbiBwcm9wZXJ0aWVzIG9mIGEgdHlwZSwgYW5kIHJvbGVzIG9mIGEgcmVsYXRpb25zaGlwIG9uIHRoZSB0eXBlLgoKICAgICAgIFRoZSBhcmd1bWVudCBpcyB0aGUgbmFtZSBvZiB0aGUgdHlwZSBvbiB3aGljaCB0aGUgQi1zaWRlIHJlc2lkZXMuIElmIHRoZQogICAgICAgdHlwZSBpcyBkZWNsYXJlZCBpbiBhbm90aGVyIG1vZHVsZSwgdGhlIHR5cGUgbXVzdCBiZSBwcmVmaXhlZCwgYW5kIGEKICAgICAgIGNvcnJlc3BvbmRpbmcgJ2ltcG9ydCcgc3RhdGVtZW50IGJlIHVzZWQgdG8gZGVjbGFyZSB0aGUgcHJlZml4LiI7CgogICAgYXJndW1lbnQgYlNpZGVUeXBlOwogIH0KCiAgZXh0ZW5zaW9uIGRvbWFpbiB7CiAgICBkZXNjcmlwdGlvbiAiS2V5d29yZCB1c2VkIHRvIGNhcnJ5IGRvbWFpbiBpbmZvcm1hdGlvbi4iOwogICAgYXJndW1lbnQgZG9tYWluTmFtZTsKICB9CgogIGV4dGVuc2lvbiBsYWJlbCB7CiAgICBkZXNjcmlwdGlvbiAiVGhlIGxhYmVsIGNhbiBiZSB1c2VkIHRvIGdpdmUgbW9kdWxlcyBhbmQgc3VibW9kdWxlcyBhIHNlbWFudGljIHZlcnNpb24sIGluIGFkZGl0aW9uIHRvIHRoZWlyIHJldmlzaW9uLgoKICAgICAgVGhlIGZvcm1hdCBvZiB0aGUgbGFiZWwgaXMg4oCYeC55LnrigJkg4oCTIGV4cHJlc3NlZCBhcyBwYXR0ZXJuLCBpdCBpcyBbMC05XStcXC5bMC05XStcXC5bMC05XSsKCiAgICAgIFRoZSBzdGF0ZW1lbnQgTVVTVCBvbmx5IGJlIGEgc3Vic3RhdGVtZW50IG9mIHRoZSByZXZpc2lvbiBzdGF0ZW1lbnQuICBaZXJvIG9yIG9uZSByZXZpc2lvbiBsYWJlbCBzdGF0ZW1lbnRzCiAgICAgIHBlciBwYXJlbnQgc3RhdGVtZW50IGFyZSBhbGxvd2VkLgoKICAgICAgUmV2aXNpb24gbGFiZWxzIE1VU1QgYmUgdW5pcXVlIGFtb25nc3QgYWxsIHJldmlzaW9ucyBvZiBhIG1vZHVsZSBvciBzdWJtb2R1bGUuIjsKICAgICAgYXJndW1lbnQgc2VtdmVyc2lvbjsKICB9Cn0=    BUILT_IN_MODULE IN_USAGE
-o-ran-smo-teiv-oam-to-cloud    urn:o-ran:smo-teiv-oam-to-cloud OAM_TO_CLOUD    ["o-ran-smo-teiv-oam", "o-ran-smo-teiv-cloud"]  2024-05-02      bW9kdWxlIG8tcmFuLXNtby10ZWl2LW9hbS10by1jbG91ZCB7CiAgICB5YW5nLXZlcnNpb24gMS4xOwogICAgbmFtZXNwYWNlICJ1cm46by1yYW46c21vLXRlaXYtb2FtLXRvLWNsb3VkIjsKICAgIHByZWZpeCBvci10ZWl2LW9hbXRvY2xvdWQ7CgogICAgaW1wb3J0IG8tcmFuLXNtby10ZWl2LWNvbW1vbi15YW5nLXR5cGVzIHtwcmVmaXggb3ItdGVpdi10eXBlczsgfQoKICAgIGltcG9ydCBvLXJhbi1zbW8tdGVpdi1jb21tb24teWFuZy1leHRlbnNpb25zIHtwcmVmaXggb3ItdGVpdi15ZXh0OyB9CgogICAgaW1wb3J0IG8tcmFuLXNtby10ZWl2LW9hbSB7cHJlZml4IG9yLXRlaXYtb2FtOyB9CgogICAgaW1wb3J0IG8tcmFuLXNtby10ZWl2LWNsb3VkIHtwcmVmaXggb3ItdGVpdi1jbG91ZDsgfQoKICAgIG9yZ2FuaXphdGlvbiAiRXJpY3Nzb24gQUIiOwogICAgY29udGFjdCAiRXJpY3Nzb24gZmlyc3QgbGluZSBzdXBwb3J0IHZpYSBlbWFpbCI7CiAgICBkZXNjcmlwdGlvbgogICAgIlJBTiBPJk0gdG8gQ2xvdWQgdG9wb2xvZ3kgbW9kZWwuCgogICAgQ29weXJpZ2h0IChjKSAyMDIzIEVyaWNzc29uIEFCLiBBbGwgcmlnaHRzIHJlc2VydmVkLgoKICAgIFRoaXMgbW9kZWwgY29udGFpbnMgdGhlIFJBTiBPJk0gdG8gQ2xvdWQgdG9wb2xvZ3kgcmVsYXRpb25zIjsKCiAgICByZXZpc2lvbiAiMjAyNC0wNS0wMiIgewogICAgICAgIGRlc2NyaXB0aW9uICJJbml0aWFsIHJldmlzaW9uLiI7CiAgICAgICAgb3ItdGVpdi15ZXh0OmxhYmVsIDAuMy4wOwogICAgfQoKICAgIG9yLXRlaXYteWV4dDpkb21haW4gT0FNX1RPX0NMT1VEOwoKICAgIG9yLXRlaXYteWV4dDpiaURpcmVjdGlvbmFsVG9wb2xvZ3lSZWxhdGlvbnNoaXAgTUFOQUdFREVMRU1FTlRfREVQTE9ZRURfQVNfQ0xPVURJRklFRE5GIHsgIC8vIDAuLjEgdG8gMQoKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6VG9wX0dycF9UeXBlOwogICAgICAgIGtleSBpZDsKCiAgICAgICAgbGVhZiBkZXBsb3llZC1hcy1jbG91ZGlmaWVkTkYgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiTWFuYWdlZCBFbGVtZW50IGRlcGxveWVkIGFzIENsb3VkaWZpZWQgTkYuIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmFTaWRlIG9yLXRlaXYtb2FtOk1hbmFnZWRFbGVtZW50OwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgfQoKICAgICAgICBsZWFmIGRlcGxveWVkLW1hbmFnZWRFbGVtZW50IHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIkNsb3VkaWZpZWQgTkYgZGVwbG95cyBNYW5hZ2VkIEVsZW1lbnQuIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmJTaWRlIG9yLXRlaXYtY2xvdWQ6Q2xvdWRpZmllZE5GOwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgICAgIG1hbmRhdG9yeSB0cnVlOwogICAgICAgIH0KICAgIH0KCiAgICBvci10ZWl2LXlleHQ6YmlEaXJlY3Rpb25hbFRvcG9sb2d5UmVsYXRpb25zaGlwIE5GREVQTE9ZTUVOVF9TRVJWRVNfTUFOQUdFREVMRU1FTlQgeyAvLyAxLi5uIHRvIDEKCiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOlRvcF9HcnBfVHlwZTsKICAgICAgICBrZXkgaWQ7CgogICAgICAgIGxlYWYgc2VydmljZWQtbWFuYWdlZEVsZW1lbnQgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiTWFuYWdlZCBFbGVtZW50IHNlcnZpY2VkIGJ5IHRoaXMgTkYgRGVwbG95bWVudC4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YVNpZGUgb3ItdGVpdi1jbG91ZDpORkRlcGxveW1lbnQ7CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICAgICAgbWFuZGF0b3J5IHRydWU7CiAgICAgICAgfQoKICAgICAgICBsZWFmLWxpc3Qgc2VydmluZy1uRkRlcGxveW1lbnQgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiTkYgRGVwbG95bWVudCB0aGF0IHNlcnZlcyB0aGlzIE1hbmFnZWQgRWxlbWVudC4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YlNpZGUgb3ItdGVpdi1vYW06TWFuYWdlZEVsZW1lbnQ7CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICAgICAgbWluLWVsZW1lbnRzIDE7CiAgICAgICAgfQogICAgfQp9    BUILT_IN_MODULE IN_USAGE
-o-ran-smo-teiv-common-yang-types       urn:o-ran:smo-teiv-common-yang-types    \N      []      2024-05-02      bW9kdWxlIG8tcmFuLXNtby10ZWl2LWNvbW1vbi15YW5nLXR5cGVzIHsKCiAgeWFuZy12ZXJzaW9uIDEuMTsKICBuYW1lc3BhY2UgInVybjpvLXJhbjpzbW8tdGVpdi1jb21tb24teWFuZy10eXBlcyI7CiAgcHJlZml4IG9yLXRlaXYtdHlwZXM7CgogIGltcG9ydCBvLXJhbi1zbW8tdGVpdi1jb21tb24teWFuZy1leHRlbnNpb25zIHtwcmVmaXggb3ItdGVpdi15ZXh0OyB9CgogIGltcG9ydCBfM2dwcC1jb21tb24teWFuZy10eXBlcyB7IHByZWZpeCB0eXBlczNncHA7IH0KCiAgb3JnYW5pemF0aW9uICJFcmljc3NvbiBBQiI7CiAgY29udGFjdCAiRXJpY3Nzb24gZmlyc3QgbGluZSBzdXBwb3J0IHZpYSBlbWFpbCI7CiAgZGVzY3JpcHRpb24KICAiVG9wb2xvZ3kgYW5kIEludmVudG9yeSBjb21tb24gdHlwZXMgbW9kZWwuCgogIENvcHlyaWdodCAoYykgMjAyMyBFcmljc3NvbiBBQi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KCiAgVGhpcyBtb2RlbCBjb250YWlucyByZS11c2FibGUgZGF0YSB0eXBlcyB0aGF0IHRvcG9sb2d5IGFuZCBpbnZlbnRvcnkgbW9kZWxzCiAgd2lsbCBmcmVxdWVudGx5IHVzZSBhcyBwYXJ0IG9mIHR5cGVzIGFuZCByZWxhdGlvbnNoaXBzLiI7CgogIHJldmlzaW9uICIyMDI0LTA1LTAyIiB7CiAgICBkZXNjcmlwdGlvbiAiSW5pdGlhbCByZXZpc2lvbi4iOwogICAgb3ItdGVpdi15ZXh0OmxhYmVsIDAuMy4wOwogIH0KCiAgZ3JvdXBpbmcgVG9wX0dycF9UeXBlIHsKCiAgICBkZXNjcmlwdGlvbiAiR3JvdXBpbmcgY29udGFpbmluZyB0aGUga2V5IGF0dHJpYnV0ZSBjb21tb24gdG8gYWxsIHR5cGVzLiBBbGwgdHlwZXMKICAgICAgICAgICAgICAgIE1VU1QgdXNlIHRoaXMgZ3JvdXBpbmcuIjsKCiAgICBsZWFmIGlkIHsKICAgICAgdHlwZSBzdHJpbmc7CiAgICAgIGRlc2NyaXB0aW9uICJVbmlxdWUgaWRlbnRpZmllciBvZiB0b3BvbG9neSBlbnRpdGllcy4gUmVwcmVzZW50cyB0aGUgRW50aXR5IEluc3RhbmNlIElkZW50aWZpZXIuIjsKICAgIH0KICB9CgogIGdyb3VwaW5nIENNX0lEIHsKCiAgICBkZXNjcmlwdGlvbiAiR3JvdXBpbmcgY29udGFpbmluZyB0aGUga2V5IGF0dHJpYnV0ZXMgdG8gbWFrZQogICAgICAgICAgICAgICAgdXNlIG9mIENvbmZpZ3VyYXRpb24gTWFuYWdlbWVudCAoQ00pLiI7CgogICAgbGVhZiBjbUhhbmRsZSB7CiAgICAgIHR5cGUgc3RyaW5nOwogICAgICBkZXNjcmlwdGlvbiAiVW5pcXVlIGlkZW50aWZpZXIgZm9yIG5ldHdvcmsgZW50aXRpZXMgaW4gQ00uIjsKICAgIH0KCiAgICBsZWFmIHJlc291cmNlSWRlbnRpZmllciB7CiAgICAgIHR5cGUgc3RyaW5nOwogICAgICBkZXNjcmlwdGlvbiAiVGhlIHhwYXRoIGV4cHJlc3Npb24gaWRlbnRpZnlpbmcgdGhlIHJlc291cmNlIGluIHRoZSBOb2RlIG1vZGVsIHlhbmcgdHJlZS4iOwogICAgfQogIH0KCiAgdHlwZWRlZiBfM0dQUF9GRE5fVHlwZSB7CiAgICB0eXBlIHR5cGVzM2dwcDpEaXN0aW5ndWlzaGVkTmFtZTsKICB9CgogIGNvbnRhaW5lciBjb25zdW1lci1kYXRhIHsKICAgIGRlc2NyaXB0aW9uICJUaGlzIGNvbnRhaW5lciBkZWZpbmVzIHRoZSBjb25zdW1lci1kYXRhLiBDb25zdW1lci1kYXRhIG1heSBiZSBhdHRhY2hlZCB0byBUb3BvbG9neSBFbnRpdHkgb3IKICAgICAgICAgICAgICAgIFRvcG9sb2d5IFJlbGF0aW9uIGluc3RhbmNlLCBvdXRzaWRlIG9mIHRoZSBkZWNsYXJlZCBUb3BvbG9neSBFbnRpdHkgb3IgVG9wb2xvZ3kgUmVsYXRpb25zaGlwJ3MgYXR0cmlidXRlcy4KICAgICAgICAgICAgICAgIFRoaXMgY29udGFpbmVyIGNhbm5vdCBiZSBpbnN0YW50aWF0ZWQsIGFuZCBpdCBNVVNUIE5PVCBiZSBhdWdtZW50ZWQgb3IgZGV2aWF0ZWQgaW4gYW55IHdheSwgdW5sZXNzIHN0YXRlZAogICAgICAgICAgICAgICAgb3RoZXJ3aXNlLiI7CgogICAgY29udGFpbmVyIGRlY29yYXRvcnMgewogICAgICBkZXNjcmlwdGlvbiAiVGhpcyBjb250YWluZXIgc2VydmVzIGFzIGV4dGVuc2lvbiBwb2ludCBmb3IgYXBwbGljYXRpb25zIHdpc2hpbmcgdG8gZGVmaW5lIHRoZWlyIG93biBkZWNvcmF0b3JzLgogICAgICAgICAgICAgICAgICBUaGlzIGlzIGRvbmUgdmlhIGF1Z21lbnRhdGlvbnMuIFRoZXkgY2FuIG9ubHkgYmUgZGVmaW5lZCBpbiBuYW1lIHZhbHVlIHBhaXIuIjsKICAgIH0KCiAgICBsZWFmLWxpc3QgY2xhc3NpZmllcnMgewogICAgICBkZXNjcmlwdGlvbiAiQ29uc3VtZXIgZGVmaW5lZCB0YWdzIHRvIHRvcG9sb2d5IGVudGl0aWVzIGFuZCByZWxhdGlvbnNoaXBzLiI7CiAgICAgIHR5cGUgaWRlbnRpdHlyZWYgeyBiYXNlIGNsYXNzaWZpZXI7IH0KICAgIH0KCiAgICBsZWFmLWxpc3Qgc291cmNlSWRzIHsKICAgICAgZGVzY3JpcHRpb24gIkFuIG9yZGVyZWQgbGlzdCBvZiBpZGVudGl0aWVzIHRoYXQgcmVwcmVzZW50IHRoZSBzZXQgb2YgbmF0aXZlIHNvdXJjZSBpZGVudGlmaWVycyBmb3IgcGFydGljaXBhdGluZwogICAgICAgICAgICAgICAgICBlbnRpdGllcy4iOwogICAgICB0eXBlIHN0cmluZzsKICAgICAgb3JkZXJlZC1ieSB1c2VyOwogICAgfQoKICAgIGNvbnRhaW5lciBtZXRhZGF0YSB7CiAgICAgIGRlc2NyaXB0aW9uICJUaGlzIGNvbnRhaW5lciBzZXJ2ZXMgYXMgZXh0ZW5zaW9uIHBvaW50IHRvIGRlZmluZSBtZXRhZGF0YS4gVGhleSBjYW4gb25seSBiZSBkZWZpbmVkIGluIG5hbWUgdmFsdWUKICAgICAgICAgICAgICAgICAgcGFpci4iOwogICAgfQogIH0KCiAgaWRlbnRpdHkgY2xhc3NpZmllcnsKICAgIGRlc2NyaXB0aW9uICAiVGhlIGNsYXNzaWZpZXIgaXMgdXNlZCBhcyBhIGJhc2UgdG8gcHJvdmlkZSBhbGwgY2xhc3NpZmllcnMgd2l0aCBpZGVudGl0eS4gIjsKICB9Cn0=    BUILT_IN_MODULE IN_USAGE
-o-ran-smo-teiv-oam     urn:o-ran:smo-teiv-oam  OAM     []      2024-05-02      bW9kdWxlIG8tcmFuLXNtby10ZWl2LW9hbSB7CiAgICB5YW5nLXZlcnNpb24gMS4xOwogICAgbmFtZXNwYWNlICJ1cm46by1yYW46c21vLXRlaXYtb2FtIjsKICAgIHByZWZpeCBvci10ZWl2LW9hbTsKCiAgICBpbXBvcnQgby1yYW4tc21vLXRlaXYtY29tbW9uLXlhbmctdHlwZXMge3ByZWZpeCBvci10ZWl2LXR5cGVzOyB9CgogICAgaW1wb3J0IG8tcmFuLXNtby10ZWl2LWNvbW1vbi15YW5nLWV4dGVuc2lvbnMge3ByZWZpeCBvci10ZWl2LXlleHQ7IH0KCiAgICBvcmdhbml6YXRpb24gIkVyaWNzc29uIEFCIjsKICAgIGNvbnRhY3QgIkVyaWNzc29uIGZpcnN0IGxpbmUgc3VwcG9ydCB2aWEgZW1haWwiOwogICAgZGVzY3JpcHRpb24KICAgICJSQU4gTyZNIHRvcG9sb2d5IG1vZGVsLgoKICAgIENvcHlyaWdodCAoYykgMjAyMyBFcmljc3NvbiBBQi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KCiAgICBUaGlzIG1vZGVsIGNvbnRhaW5zIHRoZSB0b3BvbG9neSBlbnRpdGllcyBhbmQgcmVsYXRpb25zIGluIHRoZQogICAgUkFOIE8mTSBkb21haW4sIHdoaWNoIGFyZSBpbnRlbmRlZCB0byByZXByZXNlbnQgbWFuYWdlbWVudCBzeXN0ZW1zCiAgICBhbmQgbWFuYWdlbWVudCBpbnRlcmZhY2VzLiI7CgogICAgcmV2aXNpb24gIjIwMjQtMDUtMDIiIHsKICAgICAgICBkZXNjcmlwdGlvbiAiSW5pdGlhbCByZXZpc2lvbi4iOwogICAgICAgIG9yLXRlaXYteWV4dDpsYWJlbCAwLjMuMDsKICAgIH0KCiAgICBvci10ZWl2LXlleHQ6ZG9tYWluIE9BTTsKCiAgICBsaXN0IE1hbmFnZWRFbGVtZW50IHsKICAgICAgICBkZXNjcmlwdGlvbiAiQSBNYW5hZ2VkIEVsZW1lbnQgKE1FKSBpcyBhIG5vZGUgaW50byBhIHRlbGVjb21tdW5pY2F0aW9uIG5ldHdvcmsKICAgICAgICAgICAgICAgICAgICBwcm92aWRpbmcgc3VwcG9ydCBhbmQvb3Igc2VydmljZSB0byBzdWJzY3JpYmVycy4gQW4gTUUgY29tbXVuaWNhdGVzCiAgICAgICAgICAgICAgICAgICAgd2l0aCBhIG1hbmFnZXIgYXBwbGljYXRpb24gKGRpcmVjdGx5IG9yIGluZGlyZWN0bHkpIG92ZXIgb25lIG9yIG1vcmUKICAgICAgICAgICAgICAgICAgICBpbnRlcmZhY2VzIGZvciB0aGUgcHVycG9zZSBvZiBiZWluZyBtb25pdG9yZWQgYW5kL29yIGNvbnRyb2xsZWQuIjsKCiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOlRvcF9HcnBfVHlwZTsKICAgICAgICBrZXkgaWQ7CgogICAgICAgIGNvbnRhaW5lciBhdHRyaWJ1dGVzIHsKICAgICAgICAgICAgbGVhZiBmZG4gewogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIlRoaXMgRnVsbCBEaXN0aW5ndWlzaGVkIE5hbWUgKEZETikgaWRlbnRpZmllcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYW4gaW5zdGFuY2Ugb2YgdGhlIE1hbmFnZWRFbGVtZW50IE1PLiBJdCBjb250YWlucwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGZ1bGwgcGF0aCBmcm9tIHRoZSBTdWJuZXR3b3JrIHRvIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFuYWdlZEVsZW1lbnQuIjsKICAgICAgICAgICAgICAgIHR5cGUgb3ItdGVpdi10eXBlczpfM0dQUF9GRE5fVHlwZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgY29udGFpbmVyIGNtSWQgewogICAgICAgICAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOkNNX0lEOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQp9        BUILT_IN_MODULE IN_USAGE
-o-ran-smo-teiv-oam-to-ran      urn:o-ran:smo-teiv-oam-to-ran   OAM_TO_RAN      ["o-ran-smo-teiv-oam", "o-ran-smo-teiv-ran"]    2024-05-02      bW9kdWxlIG8tcmFuLXNtby10ZWl2LW9hbS10by1yYW4gewogICAgeWFuZy12ZXJzaW9uIDEuMTsKICAgIG5hbWVzcGFjZSAidXJuOm8tcmFuOnNtby10ZWl2LW9hbS10by1yYW4iOwogICAgcHJlZml4IG9yLXRlaXYtb2FtdG9yYW47CgogICAgaW1wb3J0IG8tcmFuLXNtby10ZWl2LWNvbW1vbi15YW5nLXR5cGVzIHtwcmVmaXggb3ItdGVpdi10eXBlczsgfQoKICAgIGltcG9ydCBvLXJhbi1zbW8tdGVpdi1jb21tb24teWFuZy1leHRlbnNpb25zIHtwcmVmaXggb3ItdGVpdi15ZXh0OyB9CgogICAgaW1wb3J0IG8tcmFuLXNtby10ZWl2LW9hbSB7cHJlZml4IG9yLXRlaXYtb2FtOyB9CgogICAgaW1wb3J0IG8tcmFuLXNtby10ZWl2LXJhbiB7cHJlZml4IG9yLXRlaXYtcmFuOyB9CgogICAgb3JnYW5pemF0aW9uICJFcmljc3NvbiBBQiI7CiAgICBjb250YWN0ICJFcmljc3NvbiBmaXJzdCBsaW5lIHN1cHBvcnQgdmlhIGVtYWlsIjsKICAgIGRlc2NyaXB0aW9uCiAgICAiUkFOIE8mTSB0byBMb2dpY2FsIHRvcG9sb2d5IG1vZGVsLgoKICAgIENvcHlyaWdodCAoYykgMjAyMyBFcmljc3NvbiBBQi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KCiAgICBUaGlzIG1vZGVsIGNvbnRhaW5zIHRoZSBSQU4gTyZNIHRvIExvZ2ljYWwgdG9wb2xvZ3kgcmVsYXRpb25zIjsKCiAgICByZXZpc2lvbiAiMjAyNC0wNS0wMiIgewogICAgICAgIGRlc2NyaXB0aW9uICJJbml0aWFsIHJldmlzaW9uLiI7CiAgICAgICAgb3ItdGVpdi15ZXh0OmxhYmVsIDAuMy4wOwogICAgfQoKICAgIG9yLXRlaXYteWV4dDpkb21haW4gT0FNX1RPX1JBTjsKCiAgICBvci10ZWl2LXlleHQ6YmlEaXJlY3Rpb25hbFRvcG9sb2d5UmVsYXRpb25zaGlwIE1BTkFHRURFTEVNRU5UX01BTkFHRVNfRU5PREVCRlVOQ1RJT04geyAgIC8vIDEgdG8gMC4ubgoKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6VG9wX0dycF9UeXBlOwogICAgICAgIGtleSBpZDsKCiAgICAgICAgbGVhZi1saXN0IG1hbmFnZWQtZW5vZGViRnVuY3Rpb24gewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiTWFuYWdlZCBFbGVtZW50IG1hbmFnZXMgZU5vZGVCIEZ1bmN0aW9uLiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDphU2lkZSBvci10ZWl2LW9hbTpNYW5hZ2VkRWxlbWVudDsKICAgICAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgIH0KCiAgICAgICAgbGVhZiBtYW5hZ2VkLWJ5LW1hbmFnZWRFbGVtZW50IHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gImVOb2RlQiBGdW5jdGlvbiBtYW5hZ2VkIGJ5IE1hbmFnZWQgRWxlbWVudC4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YlNpZGUgb3ItdGVpdi1yYW46RU5vZGVCRnVuY3Rpb247CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICAgICAgbWFuZGF0b3J5IHRydWU7CiAgICAgICAgfQogICAgfQoKICAgIG9yLXRlaXYteWV4dDpiaURpcmVjdGlvbmFsVG9wb2xvZ3lSZWxhdGlvbnNoaXAgTUFOQUdFREVMRU1FTlRfTUFOQUdFU19HTkJEVUZVTkNUSU9OIHsgICAgLy8gMSB0byAwLi5uCgogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICAgICAga2V5IGlkOwoKICAgICAgICBsZWFmLWxpc3QgbWFuYWdlZC1nbmJkdUZ1bmN0aW9uIHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIk1hbmFnZWQgRWxlbWVudCBtYW5hZ2VzIGdOb2RlQi1EVSBGdW5jdGlvbi4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YVNpZGUgb3ItdGVpdi1vYW06TWFuYWdlZEVsZW1lbnQ7CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICB9CgogICAgICAgIGxlYWYgbWFuYWdlZC1ieS1tYW5hZ2VkRWxlbWVudCB7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJnTm9kZUItRFUgRnVuY3Rpb24gbWFuYWdlZCBieSBNYW5hZ2VkIEVsZW1lbnQuIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmJTaWRlIG9yLXRlaXYtcmFuOkdOQkRVRnVuY3Rpb247CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICAgICAgbWFuZGF0b3J5IHRydWU7CiAgICAgICAgfQogICAgfQoKICAgIG9yLXRlaXYteWV4dDpiaURpcmVjdGlvbmFsVG9wb2xvZ3lSZWxhdGlvbnNoaXAgTUFOQUdFREVMRU1FTlRfTUFOQUdFU19HTkJDVUNQRlVOQ1RJT04geyAgICAvLyAxIHRvIDAuLm4KCiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOlRvcF9HcnBfVHlwZTsKICAgICAgICBrZXkgaWQ7CgogICAgICAgIGxlYWYtbGlzdCBtYW5hZ2VkLWduYmN1Y3BGdW5jdGlvbiB7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJNYW5hZ2VkIEVsZW1lbnQgbWFuYWdlcyBnTm9kZUItQ1UtQ1AgRnVuY3Rpb24uIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmFTaWRlIG9yLXRlaXYtb2FtOk1hbmFnZWRFbGVtZW50OwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgfQoKICAgICAgICBsZWFmIG1hbmFnZWQtYnktbWFuYWdlZEVsZW1lbnQgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiZ05vZGVCLUNVLUNQIEZ1bmN0aW9uIG1hbmFnZWQgYnkgTWFuYWdlZCBFbGVtZW50LiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDpiU2lkZSBvci10ZWl2LXJhbjpHTkJDVUNQRnVuY3Rpb247CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICAgICAgbWFuZGF0b3J5IHRydWU7CiAgICAgICAgfQogICAgfQoKICAgIG9yLXRlaXYteWV4dDpiaURpcmVjdGlvbmFsVG9wb2xvZ3lSZWxhdGlvbnNoaXAgTUFOQUdFREVMRU1FTlRfTUFOQUdFU19HTkJDVVVQRlVOQ1RJT04geyAgICAvLyAxIHRvIDAuLm4KCiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOlRvcF9HcnBfVHlwZTsKICAgICAgICBrZXkgaWQ7CgogICAgICAgIGxlYWYtbGlzdCBtYW5hZ2VkLWduYmN1dXBGdW5jdGlvbiB7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJNYW5hZ2VkIEVsZW1lbnQgbWFuYWdlcyBnTm9kZUItQ1UtVVAgRnVuY3Rpb24uIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmFTaWRlIG9yLXRlaXYtb2FtOk1hbmFnZWRFbGVtZW50OwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgfQoKICAgICAgICBsZWFmIG1hbmFnZWQtYnktbWFuYWdlZEVsZW1lbnQgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiZ05vZGVCLUNVLVVQIEZ1bmN0aW9uIG1hbmFnZWQgYnkgTWFuYWdlZCBFbGVtZW50LiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDpiU2lkZSBvci10ZWl2LXJhbjpHTkJDVVVQRnVuY3Rpb247CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICAgICAgbWFuZGF0b3J5IHRydWU7CiAgICAgICAgfQogICAgfQp9        BUILT_IN_MODULE IN_USAGE
-o-ran-smo-teiv-ran     urn:o-ran:smo-teiv-ran  RAN     []      2024-05-02      bW9kdWxlIG8tcmFuLXNtby10ZWl2LXJhbiB7CiAgICB5YW5nLXZlcnNpb24gMS4xOwogICAgbmFtZXNwYWNlICJ1cm46by1yYW46c21vLXRlaXYtcmFuIjsKICAgIHByZWZpeCBvci10ZWl2LXJhbjsKCiAgICBpbXBvcnQgby1yYW4tc21vLXRlaXYtY29tbW9uLXlhbmctdHlwZXMge3ByZWZpeCBvci10ZWl2LXR5cGVzOyB9CgogICAgaW1wb3J0IG8tcmFuLXNtby10ZWl2LWNvbW1vbi15YW5nLWV4dGVuc2lvbnMge3ByZWZpeCBvci10ZWl2LXlleHQ7IH0KCiAgICBpbXBvcnQgXzNncHAtY29tbW9uLXlhbmctdHlwZXMgeyBwcmVmaXggdHlwZXMzZ3BwOyB9CgogICAgaW1wb3J0IGlldGYtZ2VvLWxvY2F0aW9uIHsKICAgICAgICBwcmVmaXggZ2VvOwogICAgICAgIHJlZmVyZW5jZSAiUkZDIDkxNzk6IEEgWUFORyBHcm91cGluZyBmb3IgR2VvZ3JhcGhpYyBMb2NhdGlvbnMiOwogICAgfQoKICAgIG9yZ2FuaXphdGlvbiAiRXJpY3Nzb24gQUIiOwogICAgY29udGFjdCAiRXJpY3Nzb24gZmlyc3QgbGluZSBzdXBwb3J0IHZpYSBlbWFpbCI7CiAgICBkZXNjcmlwdGlvbgogICAgIlJBTiBMb2dpY2FsIHRvcG9sb2d5IG1vZGVsLgoKICAgIENvcHlyaWdodCAoYykgMjAyMyBFcmljc3NvbiBBQi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KCiAgICBUaGlzIG1vZGVsIGNvbnRhaW5zIHRoZSB0b3BvbG9neSBlbnRpdGllcyBhbmQgcmVsYXRpb25zIGluIHRoZQogICAgUkFOIExvZ2ljYWwgZG9tYWluLCB3aGljaCByZXByZXNlbnRzIHRoZSBmdW5jdGlvbmFsIGNhcGFiaWxpdHkKICAgIG9mIHRoZSBkZXBsb3llZCBSQU4gdGhhdCBhcmUgcmVsZXZhbnQgdG8gckFwcHMgdXNlIGNhc2VzLiI7CgogICAgcmV2aXNpb24gIjIwMjQtMDUtMDIiIHsKICAgICAgICBkZXNjcmlwdGlvbiAiSW5pdGlhbCByZXZpc2lvbi4iOwogICAgICAgIG9yLXRlaXYteWV4dDpsYWJlbCAwLjMuMDsKICAgIH0KCiAgICBvci10ZWl2LXlleHQ6ZG9tYWluIFJBTjsKCiAgICBsaXN0IEdOQkRVRnVuY3Rpb24gewogICAgICAgIGRlc2NyaXB0aW9uICJnTm9kZUIgRGlzdHJpYnV0ZWQgVW5pdCAoZ05CLURVKS4KCiAgICAgICAgICAgICAgICAgICAgQSBnTkIgbWF5IGNvbnNpc3Qgb2YgYSBnTkItQ2VudHJhbGl6ZWQgVW5pdAogICAgICAgICAgICAgICAgICAgIChnTkItQ1UpIGFuZCBhIGdOQi1EVS4gVGhlIENVIHByb2Nlc3NlcyBub24tcmVhbAogICAgICAgICAgICAgICAgICAgIHRpbWUgcHJvdG9jb2xzIGFuZCBzZXJ2aWNlcywgYW5kIHRoZSBEVSBwcm9jZXNzZXMKICAgICAgICAgICAgICAgICAgICBQSFkgbGV2ZWwgcHJvdG9jb2wgYW5kIHJlYWwgdGltZSBzZXJ2aWNlcy4gVGhlCiAgICAgICAgICAgICAgICAgICAgZ05CLUNVIGFuZCB0aGUgZ05CLURVIHVuaXRzIGFyZSBjb25uZWN0ZWQgdmlhCiAgICAgICAgICAgICAgICAgICAgRjEgbG9naWNhbCBpbnRlcmZhY2UuCgogICAgICAgICAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgaXMgdHJ1ZSBmb3IgYSBnTkItRFU6CiAgICAgICAgICAgICAgICAgICAgSXMgY29ubmVjdGVkIHRvIHRoZSBnTkItQ1UtQ1AgdGhyb3VnaCB0aGUgRjEtQwogICAgICAgICAgICAgICAgICAgIGludGVyZmFjZS5JcyBjb25uZWN0ZWQgdG8gdGhlIGdOQi1DVS1VUCB0aHJvdWdoCiAgICAgICAgICAgICAgICAgICAgdGhlIEYxLVUgaW50ZXJmYWNlLiBPbmUgZ05CLURVIGlzIGNvbm5lY3RlZCB0byBvbmx5CiAgICAgICAgICAgICAgICAgICAgb25lIGdOQi1DVS1DUC4gT25lIGdOQi1EVSBjYW4gYmUgY29ubmVjdGVkIHRvCiAgICAgICAgICAgICAgICAgICAgbXVsdGlwbGUgZ05CLUNVLVVQcyB1bmRlciB0aGUgY29udHJvbCBvZiB0aGUgc2FtZQogICAgICAgICAgICAgICAgICAgIGdOQi1DVS1DUC4KICAgICAgICAgICAgICAgICAgICBOb3RlOiBBIGdOQiBtYXkgY29uc2lzdCBvZiBhIGdOQi1DVS1DUCwgbXVsdGlwbGUKICAgICAgICAgICAgICAgICAgICBnTkItQ1UtVVBzIGFuZCBtdWx0aXBsZSBnTkItRFVzLiBnTkItRFUgaXMgYSBjb25jcmV0ZQogICAgICAgICAgICAgICAgICAgIGNsYXNzIHRoYXQgZXh0ZW5kcyB0aGUgTkctUkFOIG5vZGUgb2JqZWN0LiBJbiBUb3BvbG9neSwgeW91CiAgICAgICAgICAgICAgICAgICAgY2FuIGNyZWF0ZSwgcmVhZCwgdXBkYXRlLCBhbmQgZGVsZXRlIHRoZSBnTkItRFUgb2JqZWN0LiI7CgogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICAgICAga2V5IGlkOwoKICAgICAgICBjb250YWluZXIgYXR0cmlidXRlcyB7CiAgICAgICAgICAgIGxlYWYgZmRuIHsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJUaGlzIEZ1bGwgRGlzdGluZ3Vpc2hlZCBOYW1lIChGRE4pIGlkZW50aWZpZXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuIGluc3RhbmNlIG9mIHRoZSBHTkJEVUZ1bmN0aW9uIE1PLiBJdCBjb250YWlucwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGZ1bGwgcGF0aCBmcm9tIHRoZSBTdWJuZXR3b3JrIHRvIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgR05CRFVGdW5jdGlvbi4iOwogICAgICAgICAgICAgICAgdHlwZSBvci10ZWl2LXR5cGVzOl8zR1BQX0ZETl9UeXBlOwogICAgICAgICAgICB9CgogICAgICAgICAgICBjb250YWluZXIgZFVwTE1OSWQgewogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIlBMTU4gaWRlbnRpZmllciB1c2VkIGFzIHBhcnQgb2YgUE0gRXZlbnRzIGRhdGEiOwogICAgICAgICAgICAgICAgdXNlcyB0eXBlczNncHA6UExNTklkOwogICAgICAgICAgICB9CgogICAgICAgICAgICBsZWFmIGdOQkRVSWQgewogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIlVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgRFUgd2l0aGluIGEgZ05vZGVCIjsKICAgICAgICAgICAgICAgIHR5cGUgdWludDMyOwogICAgICAgICAgICB9CgogICAgICAgICAgICBsZWFmIGdOQklkIHsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJJZGVudGl0eSBvZiBnTm9kZUIgd2l0aGluIGEgUExNTiI7CiAgICAgICAgICAgICAgICB0eXBlIHVpbnQzMjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbGVhZiBnTkJJZExlbmd0aCB7CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiTGVuZ3RoIG9mIGdOQklkIGJpdCBzdHJpbmcgcmVwcmVzZW50YXRpb24iOwogICAgICAgICAgICAgICAgdHlwZSB1aW50MzI7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGNvbnRhaW5lciBjbUlkIHsKICAgICAgICAgICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpDTV9JRDsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBsaXN0IEdOQkNVQ1BGdW5jdGlvbiB7CiAgICAgICAgZGVzY3JpcHRpb24gImdOb2RlQiBDZW50cmFsaXplZCBVbml0IENvbnRyb2wgUGxhbmUgKGdOQi1DVS1DUCkKCiAgICAgICAgICAgICAgICAgICAgVGhpcyBpcyBhIGxvZ2ljYWwgbm9kZSBob3N0aW5nIHRoZSBSYWRpbyBSZXNvdXJjZQogICAgICAgICAgICAgICAgICAgIENvbnRyb2wgKFJSQykgYW5kIHRoZSBjb250cm9sIHBsYW5lIHBhcnQgb2YgdGhlCiAgICAgICAgICAgICAgICAgICAgUGFja2V0IERhdGEgQ29udmVyZ2VuY2UgUHJvdG9jb2wgKFBEQ1ApIG9mIHRoZQogICAgICAgICAgICAgICAgICAgIGdOb2RlQiBDZW50cmFsaXplZCBVbml0IChnTkItQ1UpIGZvciBhbiBFLVVUUkFOIGdOb2RlQgogICAgICAgICAgICAgICAgICAgIChlbi1nTkIpIG9yIGEgZ05vZGVCIChnTkIpLiBUaGUgZ05CLUNVLUNQIHRlcm1pbmF0ZXMKICAgICAgICAgICAgICAgICAgICB0aGUgRTEgaW50ZXJmYWNlIGNvbm5lY3RlZCB3aXRoIHRoZSBnTkItQ1UtVVAgYW5kIHRoZQogICAgICAgICAgICAgICAgICAgIEYxLUMgaW50ZXJmYWNlIGNvbm5lY3RlZCB3aXRoIHRoZSBnTm9kZUIKICAgICAgICAgICAgICAgICAgICBEaXN0cmlidXRlZCBVbml0IChnTkItRFUpLgoKICAgICAgICAgICAgICAgICAgICBUaGUgZm9sbG93aW5nIGlzIHRydWUgZm9yIGEgZ05CLUNVLUNQOgogICAgICAgICAgICAgICAgICAgIElzIGNvbm5lY3RlZCB0byB0aGUgZ05CLURVIHRocm91Z2ggdGhlIEYxLUMgaW50ZXJmYWNlLgogICAgICAgICAgICAgICAgICAgIElzIGNvbm5lY3RlZCB0byB0aGUgZ05CLUNVLVVQIHRocm91Z2ggdGhlIEUxIGludGVyZmFjZS4KICAgICAgICAgICAgICAgICAgICBPbmx5IG9uZSBnTkItQ1UtQ1AgaXMgY29ubmVjdGVkIHRvIG9uZSBnTkItRFUuCiAgICAgICAgICAgICAgICAgICAgT25seSBvbmUgZ05CLUNVLUNQIGlzIGNvbm5lY3RlZCB0byBvbmUgZ05CLUNVLVVQLgogICAgICAgICAgICAgICAgICAgIE9uZSBnTkItRFUgY2FuIGJlIGNvbm5lY3RlZCB0byBtdWx0aXBsZSBnTkItQ1UtVVBzCiAgICAgICAgICAgICAgICAgICAgdW5kZXIgdGhlIGNvbnRyb2wgb2YgdGhlIHNhbWUgZ05CLUNVLUNQLk9uZSBnTkItQ1UtVVAKICAgICAgICAgICAgICAgICAgICBjYW4gYmUgY29ubmVjdGVkIHRvIG11bHRpcGxlIERVcyB1bmRlciB0aGUgY29udHJvbCBvZgogICAgICAgICAgICAgICAgICAgIHRoZSBzYW1lIGdOQi1DVS1DUC4KICAgICAgICAgICAgICAgICAgICBOb3RlOiBBIGdOQiBtYXkgY29uc2lzdCBvZiBhIGdOQi1DVS1DUCwgbXVsdGlwbGUKICAgICAgICAgICAgICAgICAgICBnTkItQ1UtVVBzIGFuZCBtdWx0aXBsZSBnTkItRFVzLiBBIGdOQi1DVS1DUCBpcyBhCiAgICAgICAgICAgICAgICAgICAgY29uY3JldGUgY2xhc3MgdGhhdCBleHRlbmRzIHRoZSBORy1SQU4gbm9kZSBvYmplY3QuCiAgICAgICAgICAgICAgICAgICAgSW4gVG9wb2xvZ3ksIHlvdSBjYW4gY3JlYXRlLCByZWFkLCB1cGRhdGUsIGFuZCBkZWxldGUKICAgICAgICAgICAgICAgICAgICB0aGUgZ05CLUNVLUNQIG9iamVjdC4iOwoKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6VG9wX0dycF9UeXBlOwogICAgICAgIGtleSBpZDsKCiAgICAgICAgY29udGFpbmVyIGF0dHJpYnV0ZXMgewogICAgICAgICAgICBsZWFmIGZkbiB7CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiVGhpcyBGdWxsIERpc3Rpbmd1aXNoZWQgTmFtZSAoRkROKSBpZGVudGlmaWVzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbiBpbnN0YW5jZSBvZiB0aGUgR05CQ1VDUEZ1bmN0aW9uIE1PLiBJdCBjb250YWlucwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGZ1bGwgcGF0aCBmcm9tIHRoZSBTdWJuZXR3b3JrIHRvIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgR05CQ1VDUEZ1bmN0aW9uLiI7CiAgICAgICAgICAgICAgICB0eXBlIG9yLXRlaXYtdHlwZXM6XzNHUFBfRkROX1R5cGU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGxlYWYgZ05CQ1VOYW1lIHsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJOYW1lIG9mIGdOb2RlQi1DVSI7CiAgICAgICAgICAgICAgICB0eXBlIHN0cmluZzsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbGVhZiBnTkJJZCB7CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiSWRlbnRpdHkgb2YgZ05vZGVCIHdpdGhpbiBhIFBMTU4iOwogICAgICAgICAgICAgICAgdHlwZSB1aW50MzI7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGxlYWYgZ05CSWRMZW5ndGggewogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIkxlbmd0aCBvZiBnTkJJZCBiaXQgc3RyaW5nIHJlcHJlc2VudGF0aW9uIjsKICAgICAgICAgICAgICAgIHR5cGUgdWludDMyOwogICAgICAgICAgICB9CgogICAgICAgICAgICBjb250YWluZXIgcExNTklkIHsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJQTE1OIGlkZW50aWZpZXIgdG8gYmUgdXNlZCBhcyBwYXJ0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZiBnbG9iYWwgUkFOIG5vZGUgaWRlbnRpdHkiOwogICAgICAgICAgICAgICAgdXNlcyB0eXBlczNncHA6UExNTklkOwogICAgICAgICAgICB9CgogICAgICAgICAgICBjb250YWluZXIgY21JZCB7CiAgICAgICAgICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6Q01fSUQ7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgbGlzdCBHTkJDVVVQRnVuY3Rpb24gewogICAgICAgIGRlc2NyaXB0aW9uICJnTm9kZUIgQ2VudHJhbGl6ZWQgVW5pdCBVc2VyIFBsYW5lIChnTkItQ1UtVVApCgogICAgICAgICAgICAgICAgICAgIEEgZ05CLUNVLVVQIGlzIGEgbG9naWNhbCBub2RlIGhvc3RpbmcgdGhlIFVzZXIKICAgICAgICAgICAgICAgICAgICBQbGFuZSBwYXJ0IG9mIHRoZSBQYWNrZXQgRGF0YSBDb252ZXJnZW5jZSwKICAgICAgICAgICAgICAgICAgICBQcm90b2NvbCAoUERDUCkgb2YgdGhlIGdOb2RlQiBDZW50cmFsaXplZCBVbml0CiAgICAgICAgICAgICAgICAgICAgKGdOQi1DVSkgZm9yIGFuIEUtVVRSQU4gZ05vZGVCIChlbi1nTkIpLCBhbmQgdGhlCiAgICAgICAgICAgICAgICAgICAgVXNlciBQbGFuZSBwYXJ0IG9mIHRoZSBQRENQIHByb3RvY29sIGFuZCB0aGUKICAgICAgICAgICAgICAgICAgICBTZXJ2aWNlIERhdGEgQWRhcHRhdGlvbiBQcm90b2NvbCAoU0RBUCkgb2YgdGhlCiAgICAgICAgICAgICAgICAgICAgZ05CLUNVIGZvciBhIGdOb2RlQiAoZ05CKS4gVGhlIGdOQi1DVS1VUCB0ZXJtaW5hdGVzCiAgICAgICAgICAgICAgICAgICAgdGhlIEUxIGludGVyZmFjZSBjb25uZWN0ZWQgd2l0aCB0aGUgZ05CLUNVLUNQIGFuZAogICAgICAgICAgICAgICAgICAgIHRoZSBGMS1VIGludGVyZmFjZSBjb25uZWN0ZWQgd2l0aCB0aGUgZ05vZGVCCiAgICAgICAgICAgICAgICAgICAgRGlzdHJpYnV0ZWQgVW5pdCAoZ05CLURVKS4KCiAgICAgICAgICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBpcyB0cnVlIGZvciBhIGdOQi1DVS1VUDoKICAgICAgICAgICAgICAgICAgICBJcyBjb25uZWN0ZWQgdG8gdGhlIGdOQi1EVSB0aHJvdWdoIHRoZQogICAgICAgICAgICAgICAgICAgIEYxLVUgaW50ZXJmYWNlLiBJcyBjb25uZWN0ZWQgdG8gdGhlIGdOQi1DVS1DUCB0aHJvdWdoCiAgICAgICAgICAgICAgICAgICAgdGhlIEUxIGludGVyZmFjZS4gT25lIGdOQi1DVS1VUCBpcyBjb25uZWN0ZWQgdG8gb25seSBvbmUKICAgICAgICAgICAgICAgICAgICBnTkItQ1UtQ1AuIE9uZSBnTkItRFUgY2FuIGJlIGNvbm5lY3RlZCB0byBtdWx0aXBsZQogICAgICAgICAgICAgICAgICAgIGdOQi1DVS1VUHMgdW5kZXIgdGhlIGNvbnRyb2wgb2YgdGhlIHNhbWUgZ05CLUNVLUNQLiBPbmUKICAgICAgICAgICAgICAgICAgICBnTkItQ1UtVVAgY2FuIGJlIGNvbm5lY3RlZCB0byBtdWx0aXBsZSBEVXMgdW5kZXIgdGhlCiAgICAgICAgICAgICAgICAgICAgY29udHJvbCBvZiB0aGUgc2FtZSBnTkItQ1UtQ1AuCiAgICAgICAgICAgICAgICAgICAgTm90ZTogQSBnTkIgbWF5IGNvbnNpc3Qgb2YgYSBnTkItQ1UtQ1AsIG11bHRpcGxlIGdOQi1DVS1VUHMKICAgICAgICAgICAgICAgICAgICBhbmQgbXVsdGlwbGUgZ05CLURVcy4gQSBnTkItQ1UtVVAgaXMgYSBjb25jcmV0ZSBjbGFzcyB0aGF0CiAgICAgICAgICAgICAgICAgICAgZXh0ZW5kcyB0aGUgTkctUkFOIG5vZGUgb2JqZWN0LiBJbiBUb3BvbG9neSwgeW91IGNhbgogICAgICAgICAgICAgICAgICAgIGNyZWF0ZSwgcmVhZCwgdXBkYXRlLCBhbmQgZGVsZXRlIHRoZSBnTkItQ1UtVVAgb2JqZWN0LiI7CgogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICAgICAga2V5IGlkOwoKICAgICAgICBjb250YWluZXIgYXR0cmlidXRlcyB7CiAgICAgICAgICAgIGxlYWYgZmRuIHsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJUaGlzIEZ1bGwgRGlzdGluZ3Vpc2hlZCBOYW1lIChGRE4pIGlkZW50aWZpZXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuIGluc3RhbmNlIG9mIHRoZSBHTkJDVVVQRnVuY3Rpb24gTU8uIEl0IGNvbnRhaW5zCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgZnVsbCBwYXRoIGZyb20gdGhlIFN1Ym5ldHdvcmsgdG8gdGhlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTkJDVVVQRnVuY3Rpb24uIjsKICAgICAgICAgICAgICAgIHR5cGUgb3ItdGVpdi10eXBlczpfM0dQUF9GRE5fVHlwZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbGVhZiBnTkJJZCB7CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiSWRlbnRpdHkgb2YgZ05vZGVCIHdpdGhpbiBhIFBMTU4iOwogICAgICAgICAgICAgICAgdHlwZSB1aW50MzI7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGxlYWYgZ05CSWRMZW5ndGggewogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIkxlbmd0aCBvZiBnTkJJZCBiaXQgc3RyaW5nIHJlcHJlc2VudGF0aW9uIjsKICAgICAgICAgICAgICAgIHR5cGUgdWludDMyOwogICAgICAgICAgICB9CgogICAgICAgICAgICBjb250YWluZXIgY21JZCB7CiAgICAgICAgICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6Q01fSUQ7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgbGlzdCBOUkNlbGxDVSB7CiAgICAgICAgZGVzY3JpcHRpb24gIlJlcHJlc2VudHMgYW4gTlIgQ2VsbCBpbiBnTm9kZUItQ1UuCgogICAgICAgICAgICAgICAgICAgIDVHIE5SIGlzIGEgbmV3IHJhZGlvIGFjY2VzcyB0ZWNobm9sb2d5IChSQVQpCiAgICAgICAgICAgICAgICAgICAgZGV2ZWxvcGVkIGJ5IDNHUFAgZm9yIHRoZSA1RyAoZmlmdGggZ2VuZXJhdGlvbikKICAgICAgICAgICAgICAgICAgICBtb2JpbGUgbmV0d29yay4gSXQgaXMgZGVzaWduZWQgdG8gYmUgdGhlIGdsb2JhbAogICAgICAgICAgICAgICAgICAgIHN0YW5kYXJkIGZvciB0aGUgYWlyIGludGVyZmFjZSBvZiA1RyBuZXR3b3Jrcy4KCiAgICAgICAgICAgICAgICAgICAgNUcgTlIgaGFzIHN5bmNocm9uaXphdGlvbiBzaWduYWwgdGhhdCBpcyBrbm93biBhcwogICAgICAgICAgICAgICAgICAgIFByaW1hcnkgU3luY2hyb25pemF0aW9uIHNpZ25hbCAoUFNTKSBhbmQgU2Vjb25kYXJ5CiAgICAgICAgICAgICAgICAgICAgU3luY2hyb25pemF0aW9uIHNpZ25hbCAoU1NTKS4gVGhlc2Ugc2lnbmFscyBhcmUKICAgICAgICAgICAgICAgICAgICBzcGVjaWZpYyB0byBOUiBwaHlzaWNhbCBsYXllciBhbmQgcHJvdmlkZSB0aGUKICAgICAgICAgICAgICAgICAgICBmb2xsb3dpbmcgaW5mb3JtYXRpb24gcmVxdWlyZWQgYnkgVUUgZm9yIGRvd25saW5rCiAgICAgICAgICAgICAgICAgICAgc3luY2hyb25pemF0aW9uOiBQU1MgcHJvdmlkZXMgUmFkaW8gRnJhbWUgQm91bmRhcnkKICAgICAgICAgICAgICAgICAgICAoUG9zaXRpb24gb2YgMXN0IFN5bWJvbCBpbiBhIFJhZGlvIGZyYW1lKSBTU1MgcHJvdmlkZXMKICAgICAgICAgICAgICAgICAgICBTdWJmcmFtZSBCb3VuZGFyeSAoUG9zaXRpb24gb2YgMXN0IFN5bWJvbCBpbiBhIFN1YmZyYW1lKQogICAgICAgICAgICAgICAgICAgIFBoeXNpY2FsIExheWVyIENlbGwgSUQgKFBDSSkgaW5mb3JtYXRpb24gdXNpbmcgYm90aAogICAgICAgICAgICAgICAgICAgIFBTUyBhbmQgU1NTLiI7CgogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICAgICAga2V5IGlkOwoKICAgICAgICBjb250YWluZXIgYXR0cmlidXRlcyB7CiAgICAgICAgICAgIGxlYWYgZmRuIHsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJUaGlzIEZ1bGwgRGlzdGluZ3Vpc2hlZCBOYW1lIChGRE4pIGlkZW50aWZpZXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuIGluc3RhbmNlIG9mIHRoZSBOUkNlbGxDVSBNTy4gSXQgY29udGFpbnMKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBmdWxsIHBhdGggZnJvbSB0aGUgU3VibmV0d29yayB0byB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5SQ2VsbENVLiI7CiAgICAgICAgICAgICAgICB0eXBlIG9yLXRlaXYtdHlwZXM6XzNHUFBfRkROX1R5cGU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGxlYWYgY2VsbExvY2FsSWQgewogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIlVzZWQgdG9nZXRoZXIgd2l0aCBnTm9kZUIgaWRlbnRpZmllciB0bwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWRlbnRpZnkgTlIgY2VsbCBpbiBQTE1OLiBVc2VkIHRvZ2V0aGVyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIGdOQklkIHRvIGZvcm0gTkNJLiI7CiAgICAgICAgICAgICAgICB0eXBlIHVpbnQzMjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgY29udGFpbmVyIHBsbW5JZCB7CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiUExNTiBJRCBmb3IgTlIgQ0dJLiBJZiBlbXB0eSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdOQkNVQ1BGdW5jdGlvbjo6cExNTklkIGlzIHVzZWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBQTE1OIElEIGluIE5SIENHSSI7CiAgICAgICAgICAgICAgICB1c2VzIHR5cGVzM2dwcDpQTE1OSWQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGxlYWYgbkNJIHsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJOUiBDZWxsIElkZW50aXR5IjsKICAgICAgICAgICAgICAgIHR5cGUgdWludDMyOwogICAgICAgICAgICB9CgogICAgICAgICAgICBsZWFmIG5SVEFDIHsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJOUiBUcmFja2luZyBBcmVhIENvZGUgKFRBQykiOwogICAgICAgICAgICAgICAgdHlwZSB1aW50MzI7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGNvbnRhaW5lciBjbUlkIHsKICAgICAgICAgICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpDTV9JRDsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBsaXN0IE5SQ2VsbERVIHsKICAgICAgICBkZXNjcmlwdGlvbiAiUmVwcmVzZW50cyBhbiBOUiBDZWxsIGluIGdOb2RlQi1EVS4KCiAgICAgICAgICAgICAgICAgICAgNUcgTlIgaXMgYSBuZXcgcmFkaW8gYWNjZXNzIHRlY2hub2xvZ3kgKFJBVCkKICAgICAgICAgICAgICAgICAgICBkZXZlbG9wZWQgYnkgM0dQUCBmb3IgdGhlIDVHIChmaWZ0aCBnZW5lcmF0aW9uKQogICAgICAgICAgICAgICAgICAgIG1vYmlsZSBuZXR3b3JrLiBJdCBpcyBkZXNpZ25lZCB0byBiZSB0aGUgZ2xvYmFsCiAgICAgICAgICAgICAgICAgICAgc3RhbmRhcmQgZm9yIHRoZSBhaXIgaW50ZXJmYWNlIG9mIDVHIG5ldHdvcmtzLgoKICAgICAgICAgICAgICAgICAgICA1RyBOUiBoYXMgc3luY2hyb25pemF0aW9uIHNpZ25hbCB0aGF0IGlzIGtub3duIGFzCiAgICAgICAgICAgICAgICAgICAgUHJpbWFyeSBTeW5jaHJvbml6YXRpb24gc2lnbmFsIChQU1MpIGFuZCBTZWNvbmRhcnkKICAgICAgICAgICAgICAgICAgICBTeW5jaHJvbml6YXRpb24gc2lnbmFsIChTU1MpLiBUaGVzZSBzaWduYWxzIGFyZQogICAgICAgICAgICAgICAgICAgIHNwZWNpZmljIHRvIE5SIHBoeXNpY2FsIGxheWVyIGFuZCBwcm92aWRlIHRoZQogICAgICAgICAgICAgICAgICAgIGZvbGxvd2luZyBpbmZvcm1hdGlvbiByZXF1aXJlZCBieSBVRSBmb3IgZG93bmxpbmsKICAgICAgICAgICAgICAgICAgICBzeW5jaHJvbml6YXRpb246IFBTUyBwcm92aWRlcyBSYWRpbyBGcmFtZSBCb3VuZGFyeQogICAgICAgICAgICAgICAgICAgIChQb3NpdGlvbiBvZiAxc3QgU3ltYm9sIGluIGEgUmFkaW8gZnJhbWUpIFNTUyBwcm92aWRlcwogICAgICAgICAgICAgICAgICAgIFN1YmZyYW1lIEJvdW5kYXJ5IChQb3NpdGlvbiBvZiAxc3QgU3ltYm9sIGluIGEgU3ViZnJhbWUpCiAgICAgICAgICAgICAgICAgICAgUGh5c2ljYWwgTGF5ZXIgQ2VsbCBJRCAoUENJKSBpbmZvcm1hdGlvbiB1c2luZyBib3RoCiAgICAgICAgICAgICAgICAgICAgUFNTIGFuZCBTU1MuIjsKCiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOlRvcF9HcnBfVHlwZTsKICAgICAgICBrZXkgaWQ7CgogICAgICAgIGNvbnRhaW5lciBhdHRyaWJ1dGVzIHsKICAgICAgICAgICAgbGVhZiBmZG4gewogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIlRoaXMgRnVsbCBEaXN0aW5ndWlzaGVkIE5hbWUgKEZETikgaWRlbnRpZmllcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYW4gaW5zdGFuY2Ugb2YgdGhlIE5SQ2VsbERVIE1PLiBJdCBjb250YWlucwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGZ1bGwgcGF0aCBmcm9tIHRoZSBTdWJuZXR3b3JrIHRvIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgTlJDZWxsRFUuIjsKICAgICAgICAgICAgICAgIHR5cGUgb3ItdGVpdi10eXBlczpfM0dQUF9GRE5fVHlwZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbGVhZiBjZWxsTG9jYWxJZCB7CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiVXNlZCB0b2dldGhlciB3aXRoIGdOb2RlQiBpZGVudGlmaWVyIHRvIGlkZW50aWZ5IE5SCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VsbCBpbiBQTE1OLiBVc2VkIHRvZ2V0aGVyIHdpdGggZ05CSWQgdG8gZm9ybSBOQ0kuIjsKICAgICAgICAgICAgICAgIHR5cGUgdWludDMyOwogICAgICAgICAgICB9CgogICAgICAgICAgICBsZWFmIG5DSSB7CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiTlIgQ2VsbCBJZGVudGl0eS4iOwogICAgICAgICAgICAgICAgdHlwZSB1aW50MzI7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGxlYWYgblJQQ0kgewogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIlRoZSBQaHlzaWNhbCBDZWxsIElkZW50aXR5IChQQ0kpIG9mIHRoZSBOUiBjZWxsLiI7CiAgICAgICAgICAgICAgICB0eXBlIHVpbnQzMjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbGVhZiBuUlRBQyB7CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiTlIgVHJhY2tpbmcgQXJlYSBDb2RlIChUQUMpLiI7CiAgICAgICAgICAgICAgICB0eXBlIHVpbnQzMjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgY29udGFpbmVyIGNtSWQgewogICAgICAgICAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOkNNX0lEOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIGxpc3QgRU5vZGVCRnVuY3Rpb24gewogICAgICAgIGRlc2NyaXB0aW9uICJBbiBFdm9sdmVkIE5vZGUgQiAoZU5vZGVCKSBpcyB0aGUgb25seSBtYW5kYXRvcnkKICAgICAgICAgICAgICAgICAgICBub2RlIGluIHRoZSByYWRpbyBhY2Nlc3MgbmV0d29yayAoUkFOKSBvZiBMb25nLVRlcm0KICAgICAgICAgICAgICAgICAgICBFdm9sdXRpb24gKExURSkuIFRoZSBlTm9kZUIgaXMgYSBjb21wbGV4IGJhc2UKICAgICAgICAgICAgICAgICAgICBzdGF0aW9uIHRoYXQgaGFuZGxlcyByYWRpbyBjb21tdW5pY2F0aW9ucwogICAgICAgICAgICAgICAgICAgIGluIHRoZSBjZWxsIGFuZCBjYXJyaWVzIG91dCByYWRpbyByZXNvdXJjZQogICAgICAgICAgICAgICAgICAgIG1hbmFnZW1lbnQgYW5kIGhhbmRvdmVyIGRlY2lzaW9ucy4gVW5saWtlIDIvM0cKICAgICAgICAgICAgICAgICAgICB3aXJlbGVzcyBSQU4sIHRoZXJlIGlzIG5vIGNlbnRyYWxpemVkIHJhZGlvIG5ldHdvcmsKICAgICAgICAgICAgICAgICAgICBjb250cm9sbGVyIGluIExURS4gSXQgaXMgdGhlIGhhcmR3YXJlIHRoYXQgaXMgY29ubmVjdGVkCiAgICAgICAgICAgICAgICAgICAgdG8gdGhlIG1vYmlsZSBwaG9uZSBuZXR3b3JrIHRoYXQgY29tbXVuaWNhdGVzCiAgICAgICAgICAgICAgICAgICAgZGlyZWN0bHkgd2l0aCBtb2JpbGUgaGFuZHNldHMgKFVzZXIgRXF1aXBtZW50KSwgbGlrZSBhIGJhc2UKICAgICAgICAgICAgICAgICAgICB0cmFuc2NlaXZlciBzdGF0aW9uIChCVFMpIGluIEdTTSBuZXR3b3Jrcy4gVGhpcyBzaW1wbGlmaWVzCiAgICAgICAgICAgICAgICAgICAgdGhlIGFyY2hpdGVjdHVyZSBhbmQgYWxsb3dzIGxvd2VyIHJlc3BvbnNlIHRpbWVzLiI7CgogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICAgICAga2V5IGlkOwoKICAgICAgICBjb250YWluZXIgYXR0cmlidXRlcyB7CiAgICAgICAgICAgIGxlYWYgZmRuIHsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJUaGlzIEZ1bGwgRGlzdGluZ3Vpc2hlZCBOYW1lIChGRE4pIGlkZW50aWZpZXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuIGluc3RhbmNlIG9mIHRoZSBFTm9kZUJGdW5jdGlvbiBNTy4gSXQgY29udGFpbnMKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBmdWxsIHBhdGggZnJvbSB0aGUgU3VibmV0d29yayB0byB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVOb2RlQkZ1bmN0aW9uLiI7CiAgICAgICAgICAgICAgICB0eXBlIG9yLXRlaXYtdHlwZXM6XzNHUFBfRkROX1R5cGU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGxlYWYgZU5CSWQgewogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIlRoZSBFTm9kZUIgSUQgdGhhdCBmb3JtcyBwYXJ0IG9mCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgQ2VsbCBHbG9iYWwgSWRlbnRpdHksIGFuZCBpcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxzbyB1c2VkIHRvIGlkZW50aWZ5IHRoZSBub2RlIG92ZXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBTMSBpbnRlcmZhY2UiOwogICAgICAgICAgICAgICAgdHlwZSB1aW50MzI7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGNvbnRhaW5lciBlTm9kZUJQbG1uSWQgewogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIlRoZSBFTm9kZUIgUHVibGljIExhbmQgTW9iaWxlIE5ldHdvcmsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIChQTE1OKSBJRCB0aGF0IGZvcm1zIHBhcnQgb2YgdGhlIEVOb2RlQgogICAgICAgICAgICAgICAgICAgICAgICAgICAgR2xvYmFsIElEIHVzZWQgdG8gaWRlbnRpZnkgdGhlIG5vZGUgb3ZlcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIFMxIGludGVyZmFjZS4gTm90ZTogVGhlIHZhbHVlIChNQ0M9MDAxLCBNTkM9MDEpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRpY2F0ZXMgdGhhdCB0aGUgUExNTiBpcyBub3QgaW5pdGlhdGVkLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIHZhbHVlIGNhbiBub3QgYmUgdXNlZCBhcyBhIHZhbGlkIFBMTU4gSWRlbnRpdHkuIjsKCiAgICAgICAgICAgICAgICBsZWFmIG1jYyB7CiAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIlRoZSBNQ0MgcGFydCBvZiBhIFBMTU4gaWRlbnRpdHkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VkIGluIHRoZSByYWRpbyBuZXR3b3JrLiI7CiAgICAgICAgICAgICAgICAgICAgdHlwZSBpbnQzMiB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJhbmdlIDAuLjk5OTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBsZWFmIG1uYyB7CiAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIlRoZSBNTkMgcGFydCBvZiBhIFBMTU4gaWRlbnRpdHkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VkIGluIHRoZSByYWRpbyBuZXR3b3JrLiI7CiAgICAgICAgICAgICAgICAgICAgdHlwZSBpbnQzMiB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJhbmdlIDAuLjk5OTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBsZWFmIG1uY0xlbmd0aCB7CiAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIlRoZSBsZW5ndGggb2YgdGhlIE1OQyBwYXJ0IG9mIGEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQTE1OIGlkZW50aXR5IHVzZWQgaW4gdGhlIHJhZGlvIG5ldHdvcmsuIjsKICAgICAgICAgICAgICAgICAgICB0eXBlIGludDMyIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmFuZ2UgMi4uMzsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGNvbnRhaW5lciBjbUlkIHsKICAgICAgICAgICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpDTV9JRDsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBsaXN0IEVVdHJhbkNlbGwgewogICAgICAgIGRlc2NyaXB0aW9uICJSZXByZXNlbnRzIGFuIEZERCBvciBUREQgRVV0cmFuQ2VsbCBhbmQKICAgICAgICAgICAgICAgICAgICBjb250YWlucyBwYXJhbWV0ZXJzIG5lZWRlZCBieSB0aGUgY2VsbC4KICAgICAgICAgICAgICAgICAgICBJdCBhbHNvIGNvbnRhaW5zIHBhcmFtZXRlcnMgZm9yIHRoZQogICAgICAgICAgICAgICAgICAgIG1hbmRhdG9yeSBjb21tb24gY2hhbm5lbHMuIEFuIEVVVFJBTiBzdGFuZHMKICAgICAgICAgICAgICAgICAgICBmb3IgRXZvbHZlZCBVbml2ZXJzYWwgTW9iaWxlIFRlbGVjb21tdW5pY2F0aW9ucwogICAgICAgICAgICAgICAgICAgIFN5c3RlbSAoVU1UUykgVGVycmVzdHJpYWwgUmFkaW8gQWNjZXNzIE5ldHdvcmsKICAgICAgICAgICAgICAgICAgICB3aGljaCBjb250YWlucyBhbiBlTm9kZUIuIFRoZSBlTm9kZUIgY29uY3JldGUKICAgICAgICAgICAgICAgICAgICBjbGFzcyBpcyBleHRlbmRlZCBmcm9tIHRoZSBFVVRSQU4gTm9kZSBhYnN0cmFjdCBjbGFzcy4iOwoKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6VG9wX0dycF9UeXBlOwogICAgICAgIGtleSBpZDsKCiAgICAgICAgY29udGFpbmVyIGF0dHJpYnV0ZXMgewogICAgICAgICAgICBsZWFmIGZkbiB7CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiVGhpcyBGdWxsIERpc3Rpbmd1aXNoZWQgTmFtZSAoRkROKSBpZGVudGlmaWVzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbiBpbnN0YW5jZSBvZiBlaXRoZXIgdGhlIEVVdHJhbkNlbGxGREQgTU8gb3IKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBFVXRyYW5DZWxsVEREIE1PLiBJdCBjb250YWlucyB0aGUgZnVsbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aCBmcm9tIHRoZSBTdWJuZXR3b3JrIHRvIHRoZSBFVXRyYW5DZWxsRkREIG9yCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFVXRyYW5DZWxsVERELiI7CiAgICAgICAgICAgICAgICB0eXBlIG9yLXRlaXYtdHlwZXM6XzNHUFBfRkROX1R5cGU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGxlYWYgY2VsbElkewogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIlJCUyBpbnRlcm5hbCBJRCBhdHRyaWJ1dGUgZm9yIEVVdHJhbkNlbGwuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBNdXN0IGJlIHVuaXF1ZSBpbiB0aGUgUkJTLiBUb2dldGhlciB3aXRoIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgTm9kZSBJRCBhbmQgUHVibGljIExhbmQgTW9iaWxlIE5ldHdvcmsgKFBMTU4pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzIGlzIGEgdW5pdmVyc2FsbHkgdW5pcXVlIGNlbGwgSUQiOwogICAgICAgICAgICAgICAgdHlwZSB1aW50MzI7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGxlYWYgZWFyZmNuZGwgewogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIlRoZSBjaGFubmVsIG51bWJlciBmb3IgdGhlIGNlbnRyYWwgZG93bmxpbmsgZnJlcXVlbmN5LiI7CiAgICAgICAgICAgICAgICB0eXBlIHVpbnQzMjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbGVhZiBlYXJmY251bCB7CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiQ2hhbm5lbCBudW1iZXIgZm9yIHRoZSBjZW50cmFsIHVwbGluayBmcmVxdWVuY3kiOwogICAgICAgICAgICAgICAgdHlwZSB1aW50MzI7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGxlYWYgZGxDaGFubmVsQmFuZHdpZHRoIHsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJUaGUgZG93bmxpbmsgY2hhbm5lbCBiYW5kd2lkdGggaW4gdGhlIEZERCBjZWxsLiI7CiAgICAgICAgICAgICAgICB0eXBlIHVpbnQzMjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbGVhZiBlYXJmY24gewogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIlRoZSBFLVVUUkEgQWJzb2x1dGUgUmFkaW8gRnJlcXVlbmN5IENoYW5uZWwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE51bWJlciAoRUFSRkNOKSBmb3IgdGhlIFRERCBjZWxsIjsKICAgICAgICAgICAgICAgIHR5cGUgdWludDMyOwogICAgICAgICAgICB9CgogICAgICAgICAgICBsZWFmIGNoYW5uZWxCYW5kd2lkdGggewogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIlRoZSBjaGFubmVsIGJhbmR3aWR0aCBpbiB0aGUgVEREIGNlbGwuIjsKICAgICAgICAgICAgICAgIHR5cGUgdWludDMyOwogICAgICAgICAgICB9CgogICAgICAgICAgICBsZWFmIHRhYyB7CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiVHJhY2tpbmcgQXJlYSBDb2RlIGZvciB0aGUgRVV0cmFuIENlbGwiOwogICAgICAgICAgICAgICAgdHlwZSB1aW50MzI7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGxlYWYgZHVwbGV4VHlwZSB7CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiSW5kaWNhdG9yIG9mIEVVdHJhbkNlbGwgdHlwZSwgRkREIG9yIFRERCI7CiAgICAgICAgICAgICAgICB0eXBlIGVudW1lcmF0aW9uIHsKICAgICAgICAgICAgICAgICAgICBlbnVtIGZkZCB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlIDA7CiAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJGREQiOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbnVtIHRkZCB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlIDE7CiAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJUREQiOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgY29udGFpbmVyIGNtSWQgewogICAgICAgICAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOkNNX0lEOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIGxpc3QgTlJTZWN0b3JDYXJyaWVyIHsKICAgICAgICBkZXNjcmlwdGlvbiAiVGhlIE5SIFNlY3RvciBDYXJyaWVyIG9iamVjdCBwcm92aWRlcwogICAgICAgICAgICAgICAgICAgIHRoZSBhdHRyaWJ1dGVzIGZvciBkZWZpbmluZyB0aGUgbG9naWNhbAogICAgICAgICAgICAgICAgICAgIGNoYXJhY3RlcmlzdGljcyBvZiBhIGNhcnJpZXIgKGNlbGwpIGluIGEKICAgICAgICAgICAgICAgICAgICBzZWN0b3IuIEEgc2VjdG9yIGlzIGEgY292ZXJhZ2UgYXJlYSBhc3NvY2lhdGVkCiAgICAgICAgICAgICAgICAgICAgd2l0aCBhIGJhc2Ugc3RhdGlvbiBoYXZpbmcgaXRzIG93biBhbnRlbm5hcywKICAgICAgICAgICAgICAgICAgICByYWRpbyBwb3J0cywgYW5kIGNvbnRyb2wgY2hhbm5lbHMuIFRoZSBjb25jZXB0CiAgICAgICAgICAgICAgICAgICAgb2Ygc2VjdG9ycyB3YXMgZGV2ZWxvcGVkIHRvIGltcHJvdmUgY28tY2hhbm5lbAogICAgICAgICAgICAgICAgICAgIGludGVyZmVyZW5jZSBpbiBjZWxsdWxhciBzeXN0ZW1zLCBhbmQgbW9zdCB3aXJlbGVzcwogICAgICAgICAgICAgICAgICAgIHN5c3RlbXMgdXNlIHRocmVlIHNlY3RvciBjZWxscy4iOwoKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6VG9wX0dycF9UeXBlOwogICAgICAgIGtleSBpZDsKCiAgICAgICAgY29udGFpbmVyIGF0dHJpYnV0ZXMgewogICAgICAgICAgICBsZWFmIGZkbiB7CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiVGhpcyBGdWxsIERpc3Rpbmd1aXNoZWQgTmFtZSAoRkROKSBpZGVudGlmaWVzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbiBpbnN0YW5jZSBvZiB0aGUgTlJTZWN0b3JDYXJyaWVyIE1PLiBJdCBjb250YWlucwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGZ1bGwgcGF0aCBmcm9tIHRoZSBTdWJuZXR3b3JrIHRvIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgTlJTZWN0b3JDYXJyaWVyLiI7CiAgICAgICAgICAgICAgICB0eXBlIG9yLXRlaXYtdHlwZXM6XzNHUFBfRkROX1R5cGU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGxlYWYgYXJmY25ETCB7CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiTlIgQWJzb2x1dGUgUmFkaW8gRnJlcXVlbmN5IENoYW5uZWwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE51bWJlciAoTlItQVJGQ04pIGZvciBkb3dubGluayI7CiAgICAgICAgICAgICAgICB0eXBlIHVpbnQzMjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbGVhZiBhcmZjblVMIHsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJOUiBBYnNvbHV0ZSBSYWRpbyBmcmVxdWVuY3kgQ2hhbm5lbCBOdW1iZXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIChOUi1BUkZDTikgZm9yIHVwbGluay4iOwogICAgICAgICAgICAgICAgdHlwZSB1aW50MzI7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGxlYWYgZnJlcXVlbmN5REwgewogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIlJGIFJlZmVyZW5jZSBGcmVxdWVuY3kgb2YgZG93bmxpbmsgY2hhbm5lbCI7CiAgICAgICAgICAgICAgICB0eXBlIHVpbnQzMjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbGVhZiBmcmVxdWVuY3lVTCB7CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiUkYgUmVmZXJlbmNlIEZyZXF1ZW5jeSBvZiB1cGxpbmsgY2hhbm5lbCI7CiAgICAgICAgICAgICAgICB0eXBlIHVpbnQzMjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbGVhZiBiU0NoYW5uZWxCd0RMIHsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJCUyBDaGFubmVsIGJhbmR3aWR0aCBpbiBNSHogZm9yIGRvd25saW5rLiI7CiAgICAgICAgICAgICAgICB0eXBlIHVpbnQzMjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgY29udGFpbmVyIGNtSWQgewogICAgICAgICAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOkNNX0lEOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIGxpc3QgTFRFU2VjdG9yQ2FycmllciB7CiAgICAgICAgZGVzY3JpcHRpb24gIlRoZSBMVEUgU2VjdG9yIENhcnJpZXIgb2JqZWN0IHByb3ZpZGVzIHRoZQogICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXMgZm9yIGRlZmluaW5nIHRoZSBsb2dpY2FsIGNoYXJhY3RlcmlzdGljcwogICAgICAgICAgICAgICAgICAgIG9mIGEgY2FycmllciAoY2VsbCkgaW4gYSBzZWN0b3IuIEEgc2VjdG9yIGlzIGEgY292ZXJhZ2UKICAgICAgICAgICAgICAgICAgICBhcmVhIGFzc29jaWF0ZWQgd2l0aCBhIGJhc2Ugc3RhdGlvbiBoYXZpbmcKICAgICAgICAgICAgICAgICAgICBpdHMgb3duIGFudGVubmFzLCByYWRpbyBwb3J0cywgYW5kIGNvbnRyb2wgY2hhbm5lbHMuCiAgICAgICAgICAgICAgICAgICAgVGhlIGNvbmNlcHQgb2Ygc2VjdG9ycyB3YXMgZGV2ZWxvcGVkIHRvIGltcHJvdmUgY28tY2hhbm5lbAogICAgICAgICAgICAgICAgICAgIGludGVyZmVyZW5jZSBpbiBjZWxsdWxhciBzeXN0ZW1zLCBhbmQgbW9zdCB3aXJlbGVzcyBzeXN0ZW1zCiAgICAgICAgICAgICAgICAgICAgdXNlIHRocmVlIHNlY3RvciBjZWxscy4iOwoKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6VG9wX0dycF9UeXBlOwogICAgICAgIGtleSBpZDsKCiAgICAgICAgY29udGFpbmVyIGF0dHJpYnV0ZXMgewogICAgICAgICAgICBsZWFmIGZkbiB7CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiVGhpcyBGdWxsIERpc3Rpbmd1aXNoZWQgTmFtZSAoRkROKSBpZGVudGlmaWVzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbiBpbnN0YW5jZSBvZiB0aGUgU2VjdG9yQ2FycmllciBNTy4gSXQgY29udGFpbnMKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBmdWxsIHBhdGggZnJvbSB0aGUgU3VibmV0d29yayB0byB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY3RvckNhcnJpZXIuIjsKICAgICAgICAgICAgICAgIHR5cGUgb3ItdGVpdi10eXBlczpfM0dQUF9GRE5fVHlwZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbGVhZiBzZWN0b3JDYXJyaWVyVHlwZSB7CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiSW5kaWNhdGVzIHdoZXRoZXIgb3Igbm90IHRoZSBzZWN0b3IgY2FycmllcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kZWxsZWQgYnkgTU8gU2VjdG9yQ2FycmllciBpcyBhIGRpZ2l0YWwgc2VjdG9yLiI7CiAgICAgICAgICAgICAgICB0eXBlIGVudW1lcmF0aW9uIHsKICAgICAgICAgICAgICAgICAgICBlbnVtIG5vcm1hbF9zZWN0b3IgewogICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSAwOwogICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiTm90IGEgZGlnaXRhbCBzZWN0b3IiOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbnVtIGxlZnRfZGlnaXRhbF9zZWN0b3IgewogICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSAxOwogICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiTGVmdCBkaWdpdGFsIHNlY3RvciBmb3IgMkRTIjsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZW51bSByaWdodF9kaWdpdGFsX3NlY3RvciB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlIDI7CiAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJSaWdodCBkaWdpdGFsIHNlY3RvciBmb3IgMkRTIjsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZW51bSBsZWZ0X2RpZ2l0YWxfc2VjdG9yXzNkcyB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlIDM7CiAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJMZWZ0IGRpZ2l0YWwgc2VjdG9yIGZvciAzRFMiOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbnVtIHJpZ2h0X2RpZ2l0YWxfc2VjdG9yXzNkcyB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlIDQ7CiAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJSaWdodCBkaWdpdGFsIHNlY3RvciBmb3IgM0RTIjsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZW51bSBtaWRkbGVfZGlnaXRhbF9zZWN0b3IgewogICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA1OwogICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiTWlkZGxlIGRpZ2l0YWwgc2VjdG9yIGZvciAzRFMiOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgY29udGFpbmVyIGNtSWQgewogICAgICAgICAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOkNNX0lEOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIGxpc3QgQW50ZW5uYUNhcGFiaWxpdHkgewogICAgICAgIGRlc2NyaXB0aW9uICJUaGlzIE1PIHNlcnZlcyBhcyBhIG1hcHBpbmcgYmV0d2VlbiB0aGUgY2VsbAogICAgICAgICAgICAgICAgICAgIGFuZCB0aGUgUkJTIGVxdWlwbWVudCB1c2VkIHRvIHByb3ZpZGUgY292ZXJhZ2UKICAgICAgICAgICAgICAgICAgICBpbiBhIGNlcnRhaW4gZ2VvZ3JhcGhpY2FsIGFyZWEuIFRoZSBNTyBhbHNvCiAgICAgICAgICAgICAgICAgICAgY29udHJvbHMgdGhlIG1heGltdW0gb3V0cHV0IHBvd2VyIG9mIHRoZSBzZWN0b3IuIjsKCiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOlRvcF9HcnBfVHlwZTsKICAgICAgICBrZXkgaWQ7CgogICAgICAgIGNvbnRhaW5lciBhdHRyaWJ1dGVzIHsKICAgICAgICAgICAgbGVhZiBmZG4gewogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIlRoaXMgRnVsbCBEaXN0aW5ndWlzaGVkIE5hbWUgKEZETikgaWRlbnRpZmllcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYW4gaW5zdGFuY2Ugb2YgdGhlIFNlY3RvckVxdWlwbWVudEZ1bmN0aW9uIE1PLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgSXQgY29udGFpbnMgdGhlIGZ1bGwgcGF0aCBmcm9tIHRoZSBTdWJuZXR3b3JrCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byB0aGUgU2VjdG9yRXF1aXBtZW50RnVuY3Rpb24uIjsKICAgICAgICAgICAgICAgIHR5cGUgb3ItdGVpdi10eXBlczpfM0dQUF9GRE5fVHlwZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbGVhZi1saXN0IGVVdHJhbkZxQmFuZHMgewogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIkxpc3Qgb2YgTFRFIGZyZXF1ZW5jeSBiYW5kcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdCBhc3NvY2lhdGVkIGhhcmR3YXJlIHN1cHBvcnRzIjsKICAgICAgICAgICAgICAgIHR5cGUgc3RyaW5nOwogICAgICAgICAgICB9CgogICAgICAgICAgICBsZWFmLWxpc3QgZ2VyYW5GcUJhbmRzIHsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJMaXN0IG9mIEdFUkFOIGZyZXF1ZW5jeSBiYW5kcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdCBhc3NvY2lhdGVkIGhhcmR3YXJlIHN1cHBvcnRzIjsKICAgICAgICAgICAgICAgIHR5cGUgc3RyaW5nOwogICAgICAgICAgICB9CgogICAgICAgICAgICBsZWFmLWxpc3QgblJGcUJhbmRzIHsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJMaXN0IG9mIE5SIGZyZXF1ZW5jeSBiYW5kcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNzb2NpYXRlZCBoYXJkd2FyZSBzdXBwb3J0cyI7CiAgICAgICAgICAgICAgICB0eXBlIHN0cmluZzsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgY29udGFpbmVyIGNtSWQgewogICAgICAgICAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOkNNX0lEOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIGxpc3QgU2VjdG9yIHsKICAgICAgICBkZXNjcmlwdGlvbiAiQSBncm91cCBvZiBjby1sb2NhdGVkIENlbGxzIHRoYXQKICAgICAgICAgICAgICAgICAgICBoYXZlIGEgc2hhcmVkIGNvdmVyYWdlIGFyZWEuIjsKCiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOlRvcF9HcnBfVHlwZTsKICAgICAgICBrZXkgaWQ7CgogICAgICAgIGNvbnRhaW5lciBhdHRyaWJ1dGVzIHsKICAgICAgICAgICAgbGVhZiBzZWN0b3JJZCB7CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiVW5pdmVyc2FsbHkgdW5pcXVlIElEIGdlbmVyYXRlZCBieSB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlY3RvcidzIGRpc2NvdmVyeSBtZWNoYW5pc20uIjsKICAgICAgICAgICAgICAgIHR5cGUgdWludDY0OwogICAgICAgICAgICB9CgogICAgICAgICAgICB1c2VzIGdlbzpnZW8tbG9jYXRpb247CgogICAgICAgICAgICBsZWFmIGF6aW11dGggewogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIkF2ZXJhZ2UgdmFsdWUgb2YgdGhlIGF6aW11dGhzIG9mIHRoZSBjZWxscwogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcHJpc2luZyB0aGUgc2VjdG9yLCBkZXRlcm1pbmVkIGR1cmluZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VjdG9yIGRpc2NvdmVyeS4iOwogICAgICAgICAgICAgICAgdHlwZSBkZWNpbWFsNjR7CiAgICAgICAgICAgICAgICAgICAgZnJhY3Rpb24tZGlnaXRzIDY7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB1bml0cyAiZGVncmVlcyI7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgoKICAgIG9yLXRlaXYteWV4dDpiaURpcmVjdGlvbmFsVG9wb2xvZ3lSZWxhdGlvbnNoaXAgRU5PREVCRlVOQ1RJT05fUFJPVklERVNfRVVUUkFOQ0VMTCB7IC8vIDEgdG8gMC4ubgoKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6VG9wX0dycF9UeXBlOwogICAgICAgIGtleSBpZDsKCiAgICAgICAgbGVhZi1saXN0IHByb3ZpZGVkLWV1VHJhbkNlbGwgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiZU5vZGVCIEZ1bmN0aW9uIHByb3ZpZGVzIEVVVFJBTiBDZWxsLiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDphU2lkZSBFTm9kZUJGdW5jdGlvbjsKICAgICAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgIH0KCiAgICAgICAgbGVhZiBwcm92aWRlZC1ieS1lbm9kZWJGdW5jdGlvbiB7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJFVVRSQU4gQ2VsbCBwcm92aWRlZCBieSBlTm9kZUIgRnVuY3Rpb24uIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmJTaWRlIEVVdHJhbkNlbGw7CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICAgICAgbWFuZGF0b3J5IHRydWU7CiAgICAgICAgfQogICAgfQoKICAgIG9yLXRlaXYteWV4dDpiaURpcmVjdGlvbmFsVG9wb2xvZ3lSZWxhdGlvbnNoaXAgRU5PREVCRlVOQ1RJT05fUFJPVklERVNfTFRFU0VDVE9SQ0FSUklFUiB7IC8vIDEgdG8gMC4ubgoKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6VG9wX0dycF9UeXBlOwogICAgICAgIGtleSBpZDsKCiAgICAgICAgbGVhZi1saXN0IHByb3ZpZGVkLWx0ZVNlY3RvckNhcnJpZXIgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiZU5vZGVCIEZ1bmN0aW9uIHByb3ZpZGVzIExURSBTZWN0b3IgQ2Fycmllci4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YVNpZGUgRU5vZGVCRnVuY3Rpb247CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICB9CgogICAgICAgIGxlYWYgcHJvdmlkZWQtYnktZW5vZGViRnVuY3Rpb24gewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiTFRFIFNlY3RvciBDYXJyaWVyIHByb3ZpZGVkIGJ5IGVOb2RlQiBGdW5jdGlvbi4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YlNpZGUgTFRFU2VjdG9yQ2FycmllcjsKICAgICAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgICAgICBtYW5kYXRvcnkgdHJ1ZTsKICAgICAgICB9CiAgICB9CgogICAgb3ItdGVpdi15ZXh0OmJpRGlyZWN0aW9uYWxUb3BvbG9neVJlbGF0aW9uc2hpcCBHTkJEVUZVTkNUSU9OX1BST1ZJREVTX05SQ0VMTERVIHsgLy8gMSB0byAwLi5uCgogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICAgICAga2V5IGlkOwoKICAgICAgICBsZWFmLWxpc3QgcHJvdmlkZWQtbnJDZWxsRHUgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiZ05vZGVCLURVIEZ1bmN0aW9uIHByb3ZpZGVzIE5SIENlbGwtRFUuIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmFTaWRlIEdOQkRVRnVuY3Rpb247CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICB9CgogICAgICAgIGxlYWYgcHJvdmlkZWQtYnktZ25iZHVGdW5jdGlvbiB7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJOUiBDZWxsLURVIHByb3ZpZGVkIGJ5IGdOb2RlQi1EVSBGdW5jdGlvbi4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YlNpZGUgTlJDZWxsRFU7CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICAgICAgbWFuZGF0b3J5IHRydWU7CiAgICAgICAgfQogICAgfQoKICAgIG9yLXRlaXYteWV4dDpiaURpcmVjdGlvbmFsVG9wb2xvZ3lSZWxhdGlvbnNoaXAgR05CRFVGVU5DVElPTl9QUk9WSURFU19OUlNFQ1RPUkNBUlJJRVIgeyAvLyAxIHRvIDAuLm4KCiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOlRvcF9HcnBfVHlwZTsKICAgICAgICBrZXkgaWQ7CgogICAgICAgIGxlYWYtbGlzdCBwcm92aWRlZC1uclNlY3RvckNhcnJpZXIgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiZ05vZGVCLURVIEZ1bmN0aW9uIHByb3ZpZGVzIE5SIFNlY3RvciBDYXJyaWVyLiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDphU2lkZSBHTkJEVUZ1bmN0aW9uOwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgfQoKICAgICAgICBsZWFmIHByb3ZpZGVkLWJ5LWduYmR1RnVuY3Rpb24gewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiTlIgU2VjdG9yIENhcnJpZXIgcHJvdmlkZWQgYnkgZ05vZGVCLURVIEZ1bmN0aW9uLiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDpiU2lkZSBOUlNlY3RvckNhcnJpZXI7CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICAgICAgbWFuZGF0b3J5IHRydWU7CiAgICAgICAgfQogICAgfQoKICAgIG9yLXRlaXYteWV4dDpiaURpcmVjdGlvbmFsVG9wb2xvZ3lSZWxhdGlvbnNoaXAgR05CQ1VDUEZVTkNUSU9OX1BST1ZJREVTX05SQ0VMTENVIHsgLy8gMSB0byAwLi5uCgogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICAgICAga2V5IGlkOwoKICAgICAgICBsZWFmLWxpc3QgcHJvdmlkZWQtbnJDZWxsQ3UgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiZ05vZGVCLUNVQ1AgRnVuY3Rpb24gcHJvdmlkZXMgTlIgQ2VsbC1DVS4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YVNpZGUgR05CQ1VDUEZ1bmN0aW9uOwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgfQoKICAgICAgICBsZWFmIHByb3ZpZGVkLWJ5LWduYmN1Y3BGdW5jdGlvbiB7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJOUiBDZWxsLUNVIHByb3ZpZGVkIGJ5IGdOb2RlQi1DVUNQIEZ1bmN0aW9uLiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDpiU2lkZSBOUkNlbGxDVTsKICAgICAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgICAgICBtYW5kYXRvcnkgdHJ1ZTsKICAgICAgICB9CiAgICB9CgogICAgb3ItdGVpdi15ZXh0OmJpRGlyZWN0aW9uYWxUb3BvbG9neVJlbGF0aW9uc2hpcCBFVVRSQU5DRUxMX1VTRVNfTFRFU0VDVE9SQ0FSUklFUiB7IC8vIDAuLjEgdG8gMC4ubgoKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6VG9wX0dycF9UeXBlOwogICAgICAgIGtleSBpZDsKCiAgICAgICAgbGVhZi1saXN0IHVzZWQtbHRlU2VjdG9yQ2FycmllciB7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJFVVRSQU4gQ2VsbCB1c2VzIExURSBTZWN0b3IgQ2Fycmllci4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YVNpZGUgRVV0cmFuQ2VsbDsKICAgICAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgIH0KCiAgICAgICAgbGVhZiB1c2VkLWJ5LWV1VHJhbkNlbGwgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiTFRFIFNlY3RvciBDYXJyaWVyIHVzZWQgYnkgRVVUUkFOIENlbGwuIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmJTaWRlIExURVNlY3RvckNhcnJpZXI7CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICB9CiAgICB9CgogICAgb3ItdGVpdi15ZXh0OmJpRGlyZWN0aW9uYWxUb3BvbG9neVJlbGF0aW9uc2hpcCBMVEVTRUNUT1JDQVJSSUVSX1VTRVNfQU5URU5OQUNBUEFCSUxJVFkgeyAvLyAwLi5uIHRvIDAuLjEKCiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOlRvcF9HcnBfVHlwZTsKICAgICAgICBrZXkgaWQ7CgogICAgICAgIGxlYWYgdXNlZC1hbnRlbm5hQ2FwYWJpbGl0eSB7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJMVEUgU2VjdG9yIENhcnJpZXIgdXNlcyBBbnRlbm5hIENhcGFiaWxpdHkuIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmFTaWRlIExURVNlY3RvckNhcnJpZXI7CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICB9CgogICAgICAgIGxlYWYtbGlzdCB1c2VkLWJ5LWx0ZVNlY3RvckNhcnJpZXIgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiQW50ZW5uYSBDYXBhYmlsaXR5IHVzZWQgYnkgTFRFIFNlY3RvciBDYXJyaWVyLiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDpiU2lkZSBBbnRlbm5hQ2FwYWJpbGl0eTsKICAgICAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgIH0KICAgIH0KCiAgICBvci10ZWl2LXlleHQ6YmlEaXJlY3Rpb25hbFRvcG9sb2d5UmVsYXRpb25zaGlwIE5SQ0VMTERVX1VTRVNfTlJTRUNUT1JDQVJSSUVSIHsgLy8gMC4uMSB0byAwLi5uCgogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICAgICAga2V5IGlkOwoKICAgICAgICBsZWFmLWxpc3QgdXNlZC1uclNlY3RvckNhcnJpZXIgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiTlIgQ2VsbC1EVSB1c2VzIE5SIFNlY3RvciBDYXJyaWVyLiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDphU2lkZSBOUkNlbGxEVTsKICAgICAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgIH0KCiAgICAgICAgbGVhZiB1c2VkLWJ5LW5yQ2VsbER1IHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIk5SIFNlY3RvciBDYXJyaWVyIHVzZWQgYnkgTlIgQ2VsbC1EVS4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YlNpZGUgTlJTZWN0b3JDYXJyaWVyOwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgfQogICAgfQoKICAgIG9yLXRlaXYteWV4dDpiaURpcmVjdGlvbmFsVG9wb2xvZ3lSZWxhdGlvbnNoaXAgTlJTRUNUT1JDQVJSSUVSX1VTRVNfQU5URU5OQUNBUEFCSUxJVFkgeyAvLyAwLi5uIHRvIDAuLjEKCiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOlRvcF9HcnBfVHlwZTsKICAgICAgICBrZXkgaWQ7CgogICAgICAgIGxlYWYgdXNlZC1hbnRlbm5hQ2FwYWJpbGl0eSB7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJOUiBTZWN0b3IgQ2FycmllciB1c2VzIEFudGVubmEgQ2FwYWJpbGl0eS4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YVNpZGUgTlJTZWN0b3JDYXJyaWVyOwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgfQoKICAgICAgICBsZWFmLWxpc3QgdXNlZC1ieS1uclNlY3RvckNhcnJpZXIgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiQW50ZW5uYSBDYXBhYmlsaXR5IHVzZWQgYnkgTlIgU2VjdG9yIENhcnJpZXIuIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmJTaWRlIEFudGVubmFDYXBhYmlsaXR5OwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgfQogICAgfQoKICAgIG9yLXRlaXYteWV4dDpiaURpcmVjdGlvbmFsVG9wb2xvZ3lSZWxhdGlvbnNoaXAgU0VDVE9SX0dST1VQU19OUkNFTExEVSB7IC8vIDAuLjEgdG8gMC4ubgoKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6VG9wX0dycF9UeXBlOwogICAgICAgIGtleSBpZDsKCiAgICAgICAgbGVhZi1saXN0IGdyb3VwZWQtbnJDZWxsRHUgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiU2VjdG9yIGdyb3VwcyBOUiBDZWxsLURVLiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDphU2lkZSBTZWN0b3I7CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICB9CgogICAgICAgIGxlYWYgZ3JvdXBlZC1ieS1zZWN0b3IgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiTlIgQ2VsbC1EVSBncm91cGVkIGJ5IFNlY3Rvci4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YlNpZGUgTlJDZWxsRFU7CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICB9CiAgICB9CgogICAgb3ItdGVpdi15ZXh0OmJpRGlyZWN0aW9uYWxUb3BvbG9neVJlbGF0aW9uc2hpcCBTRUNUT1JfR1JPVVBTX0VVVFJBTkNFTEwgeyAvLyAwLi4xIHRvIDAuLm4KCiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOlRvcF9HcnBfVHlwZTsKICAgICAgICBrZXkgaWQ7CgogICAgICAgIGxlYWYtbGlzdCBncm91cGVkLWV1VHJhbkNlbGwgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiU2VjdG9yIGdyb3VwcyBFVVRSQU4gQ2VsbC4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YVNpZGUgU2VjdG9yOwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgfQoKICAgICAgICBsZWFmIGdyb3VwZWQtYnktc2VjdG9yIHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIkVVVFJBTiBDZWxsIGdyb3VwZWQgYnkgU2VjdG9yLiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDpiU2lkZSBFVXRyYW5DZWxsOwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgfQogICAgfQp9        BUILT_IN_MODULE IN_USAGE
-o-ran-smo-teiv-equipment       urn:o-ran:smo-teiv-equipment    EQUIPMENT       []      2024-05-02      bW9kdWxlIG8tcmFuLXNtby10ZWl2LWVxdWlwbWVudCB7CiAgICB5YW5nLXZlcnNpb24gMS4xOwogICAgbmFtZXNwYWNlICJ1cm46by1yYW46c21vLXRlaXYtZXF1aXBtZW50IjsKICAgIHByZWZpeCBvci10ZWl2LWVxdWlwOwoKICAgIGltcG9ydCBvLXJhbi1zbW8tdGVpdi1jb21tb24teWFuZy10eXBlcyB7cHJlZml4IG9yLXRlaXYtdHlwZXM7IH0KCiAgICBpbXBvcnQgby1yYW4tc21vLXRlaXYtY29tbW9uLXlhbmctZXh0ZW5zaW9ucyB7cHJlZml4IG9yLXRlaXYteWV4dDsgfQoKICAgIGltcG9ydCBpZXRmLWdlby1sb2NhdGlvbiB7CiAgICAgICAgcHJlZml4IGdlbzsKICAgICAgICByZWZlcmVuY2UgIlJGQyA5MTc5OiBBIFlBTkcgR3JvdXBpbmcgZm9yIEdlb2dyYXBoaWMgTG9jYXRpb25zIjsKICAgIH0KCiAgICBvcmdhbml6YXRpb24gIkVyaWNzc29uIEFCIjsKICAgIGNvbnRhY3QgIkVyaWNzc29uIGZpcnN0IGxpbmUgc3VwcG9ydCB2aWEgZW1haWwiOwogICAgZGVzY3JpcHRpb24KICAgICJSQU4gRXF1aXBtZW50IHRvcG9sb2d5IG1vZGVsLgoKICAgIENvcHlyaWdodCAoYykgMjAyMyBFcmljc3NvbiBBQi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KCiAgICBUaGlzIG1vZGVsIGNvbnRhaW5zIHRoZSB0b3BvbG9neSBlbnRpdGllcyBhbmQgcmVsYXRpb25zIGluIHRoZQogICAgUkFOIEVxdWlwbWVudCBkb21haW4sIHdoaWNoIGlzIG1vZGVsbGVkIHRvIHVuZGVyc3RhbmQgdGhlIHBoeXNpY2FsCiAgICBsb2NhdGlvbiBvZiBlcXVpcG1lbnQgc3VjaCBhcyBhbnRlbm5hcyBhc3NvY2lhdGVkIHdpdGggYSBjZWxsL2NhcnJpZXIKICAgIGFuZCB0aGVpciByZWxldmFudCBwcm9wZXJ0aWVzIGUuZy4gdGlsdCwgbWF4IHBvd2VyIGV0Yy4iOwoKICAgIHJldmlzaW9uICIyMDI0LTA1LTAyIiB7CiAgICAgICAgZGVzY3JpcHRpb24gIkluaXRpYWwgcmV2aXNpb24uIjsKICAgICAgICBvci10ZWl2LXlleHQ6bGFiZWwgMC4zLjA7CiAgICB9CgogICAgb3ItdGVpdi15ZXh0OmRvbWFpbiBFUVVJUE1FTlQ7CgogICAgbGlzdCBBbnRlbm5hTW9kdWxlIHsKICAgICAgICBkZXNjcmlwdGlvbiAiQW4gQW50ZW5uYSBNb2R1bGUgcmVwcmVzZW50cyB0aGUKICAgICAgICAgICAgICAgICAgICBwaHlzaWNhbCBhc3BlY3Qgb2YgYW4gYW50ZW5uYS4iOwoKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6VG9wX0dycF9UeXBlOwogICAgICAgIGtleSBpZDsKCiAgICAgICAgY29udGFpbmVyIGF0dHJpYnV0ZXMgewogICAgICAgICAgICBsZWFmIGZkbiB7CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiVGhpcyBGdWxsIERpc3Rpbmd1aXNoZWQgTmFtZSAoRkROKSBpZGVudGlmaWVzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbiBpbnN0YW5jZSBvZiB0aGUgQW50ZW5uYVN1YlVuaXQgTU8uIEl0IGNvbnRhaW5zCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgZnVsbCBwYXRoIGZyb20gdGhlIFN1Ym5ldHdvcmsgdG8gdGhlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbnRlbm5hU3ViVW5pdC4iOwogICAgICAgICAgICAgICAgdHlwZSBvci10ZWl2LXR5cGVzOl8zR1BQX0ZETl9UeXBlOwogICAgICAgICAgICB9CgogICAgICAgICAgICBsZWFmIGFudGVubmFNb2RlbE51bWJlciB7CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiVmVuZG9yLXNwZWNpZmljIGFudGVubmEgbW9kZWwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkZW50aWZpZXIuIFRoaXMgYXR0cmlidXRlIGlzIHBhcnQgb2YKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFJU0cgdjMgQURCIFN0YW5kYXJkIGFuZCBoYXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vIG9wZXJhdGlvbmFsIGltcGFjdC4iOwogICAgICAgICAgICAgICAgdHlwZSBzdHJpbmc7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGxlYWYgbWVjaGFuaWNhbEFudGVubmFCZWFyaW5nIHsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJBbnRlbm5hIGJlYXJpbmcgb24gYW50ZW5uYSBzdWJ1bml0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGVyZSBhbnRlbm5hIHVuaXQgaXMgaW5zdGFsbGVkLiI7CiAgICAgICAgICAgICAgICB0eXBlIHVpbnQzMjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbGVhZiBtZWNoYW5pY2FsQW50ZW5uYVRpbHQgewogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIlRoZSBmaXhlZCBhbnRlbm5hIHRpbHQgb2YgdGhlIGluc3RhbGxhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZWQgYXMgdGhlIGluY2xpbmF0aW9uIG9mIHRoZSBhbnRlbm5hCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50IHJlc3BlY3QgdG8gdGhlIHZlcnRpY2FsIHBsYW5lLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgSXQgaXMgYSBzaWduZWQgdmFsdWUuIFBvc2l0aXZlIGluZGljYXRlcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZG93bnRpbHQsIGFuZCBuZWdhdGl2ZSBpbmRpY2F0ZXMgdXB0aWx0LiI7CiAgICAgICAgICAgICAgICB0eXBlIHVpbnQzMjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbGVhZiBwb3NpdGlvbldpdGhpblNlY3RvciB7CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiQW50ZW5uYSB1bml0IHBvc2l0aW9uIHdpdGhpbiBzZWN0b3IuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIGF0dHJpYnV0ZSBpcyBwYXJ0IG9mIEFJU0cgdjMgQURCCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdGFuZGFyZCBhbmQgaGFzIG5vIG9wZXJhdGlvbmFsIGltcGFjdC4iOwogICAgICAgICAgICAgICAgdHlwZSBzdHJpbmc7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGxlYWYgdG90YWxUaWx0IHsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJUb3RhbCBhbnRlbm5hIGVsZXZhdGlvbiBpbmNsdWRpbmcgdGhlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YWxsZWQgdGlsdCBhbmQgdGhlIHRpbHQgYXBwbGllZCBieQogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIFJlbW90ZSBFbGVjdHJpY2FsIFRpbHQgKFJFVCkuIjsKICAgICAgICAgICAgICAgIHR5cGUgdWludDMyOwogICAgICAgICAgICB9CgogICAgICAgICAgICBsZWFmIGVsZWN0cmljYWxBbnRlbm5hVGlsdCB7CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiRWxlY3RyaWNhbGx5LWNvbnRyb2xsZWQgdGlsdCBvZiBtYWluIGJlYW0gbWF4aW11bQogICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCByZXNwZWN0IHRvIGRpcmVjdGlvbiBvcnRob2dvbmFsIHRvIGFudGVubmEKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQgYXhpcyAoc2VlIDNHUFAgVFMgMjUuNDY2KS4gVmFsdWUgaXMgc2lnbmVkOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGlsdCBkb3duIGlzIHBvc2l0aXZlLCB0aWx0IHVwIGlzIG5lZ2F0aXZlLiI7CiAgICAgICAgICAgICAgICB0eXBlIHVpbnQzMjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbGVhZi1saXN0IGFudGVubmFCZWFtV2lkdGggewogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIlRoZSBhbmd1bGFyIHNwYW4gb2YgdGhlIG1haW4gbG9iZSBvZiB0aGUgYW50ZW5uYSByYWRpYXRpb24KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0dGVybiBpbiB0aGUgaG9yaXpvbnRhbCBwbGFuZS4gTWVhc3VyZWQgaW4gZGVncmVlcy4iOwogICAgICAgICAgICAgICAgdHlwZSB1aW50MzI7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHVzZXMgZ2VvOmdlby1sb2NhdGlvbjsKCiAgICAgICAgICAgIGNvbnRhaW5lciBjbUlkIHsKICAgICAgICAgICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpDTV9JRDsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBsaXN0IFNpdGUgewogICAgICAgIGRlc2NyaXB0aW9uICJBIHNpdGUgaXMgYSBwaHlzaWNhbCBsb2NhdGlvbiB3aGVyZSBhbiBBbnRlbm5hIG9yCiAgICAgICAgICAgICAgICAgICAgUGh5c2ljYWwgTkYgY2FuIGJlIGluc3RhbGxlZC4iOwoKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6VG9wX0dycF9UeXBlOwogICAgICAgIGtleSBpZDsKCiAgICAgICAgY29udGFpbmVyIGF0dHJpYnV0ZXMgewogICAgICAgICAgICBsZWFmIG5hbWUgewogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIk5hbWUgb2YgU2l0ZSI7CiAgICAgICAgICAgICAgICB0eXBlIHN0cmluZzsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgdXNlcyBnZW86Z2VvLWxvY2F0aW9uOwoKICAgICAgICAgICAgY29udGFpbmVyIGNtSWQgewogICAgICAgICAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOkNNX0lEOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIGxpc3QgUGh5c2ljYWxORiB7CiAgICAgICAgZGVzY3JpcHRpb24gIlJlcHJlc2VudHMgYSBQaHlzaWNhbCBORiwKICAgICAgICAgICAgICAgICAgICB3aGljaCBpcyB1c2VkIHRvIHJlYWxpc2UgTmV0d29yayBGdW5jdGlvbnMuIjsKCiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOlRvcF9HcnBfVHlwZTsKICAgICAgICBrZXkgaWQ7CgogICAgICAgIGNvbnRhaW5lciBhdHRyaWJ1dGVzIHsKICAgICAgICAgICAgbGVhZiBuYW1lIHsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJOYW1lIG9mIFBoeXNpY2FsIE5GLiI7CiAgICAgICAgICAgICAgICB0eXBlIHN0cmluZzsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbGVhZiB0eXBlIHsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJUeXBlIG9mIFBoeXNpY2FsIE5GLiI7CiAgICAgICAgICAgICAgICB0eXBlIHN0cmluZzsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgdXNlcyBnZW86Z2VvLWxvY2F0aW9uOwoKICAgICAgICAgICAgY29udGFpbmVyIGNtSWQgewogICAgICAgICAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOkNNX0lEOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIG9yLXRlaXYteWV4dDpiaURpcmVjdGlvbmFsVG9wb2xvZ3lSZWxhdGlvbnNoaXAgQU5URU5OQU1PRFVMRV9JTlNUQUxMRURfQVRfU0lURSB7IC8vIDAuLm4gdG8gMC4uMQoKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6VG9wX0dycF9UeXBlOwogICAgICAgIGtleSBpZDsKCiAgICAgICAgbGVhZiBpbnN0YWxsZWQtYXQtc2l0ZSB7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJBbnRlbm5hIE1vZHVsZSBpbnN0YWxsZWQgYXQgU2l0ZS4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YVNpZGUgQW50ZW5uYU1vZHVsZTsKICAgICAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgIH0KCiAgICAgICAgbGVhZi1saXN0IGluc3RhbGxlZC1hbnRlbm5hTW9kdWxlIHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIlNpdGUgd2hlcmUgQW50ZW5uYSBNb2R1bGUgaXMgaW5zdGFsbGVkLiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDpiU2lkZSBTaXRlOwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgfQogICAgfQoKICAgIG9yLXRlaXYteWV4dDpiaURpcmVjdGlvbmFsVG9wb2xvZ3lSZWxhdGlvbnNoaXAgUEhZU0lDQUxORl9JTlNUQUxMRURfQVRfU0lURSB7IC8vIDEuLm4gdG8gMC4uMQoKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6VG9wX0dycF9UeXBlOwogICAgICAgIGtleSBpZDsKCiAgICAgICAgbGVhZiBpbnN0YWxsZWQtYXQtc2l0ZSB7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJQaHlzaWNhbCBORiBpbnN0YWxsZWQgYXQgU2l0ZS4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YVNpZGUgUGh5c2ljYWxORjsKICAgICAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgIH0KCiAgICAgICAgbGVhZi1saXN0IGluc3RhbGxlZC1waHlzaWNhbE5GIHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIlNpdGUgd2hlcmUgUGh5c2ljYWwgTkYgaXMgaW5zdGFsbGVkLiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDpiU2lkZSBTaXRlOwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgICAgIG1pbi1lbGVtZW50cyAxOwogICAgICAgIH0KICAgIH0KfQ==        BUILT_IN_MODULE IN_USAGE
-o-ran-smo-teiv-cloud-to-ran    urn:o-ran:smo-teiv-cloud-to-ran CLOUD_TO_RAN    ["o-ran-smo-teiv-cloud", "o-ran-smo-teiv-ran"]  2024-05-02      bW9kdWxlIG8tcmFuLXNtby10ZWl2LWNsb3VkLXRvLXJhbiB7CiAgICB5YW5nLXZlcnNpb24gMS4xOwogICAgbmFtZXNwYWNlICJ1cm46by1yYW46c21vLXRlaXYtY2xvdWQtdG8tcmFuIjsKICAgIHByZWZpeCBvci10ZWl2LWNsb3VkdG9yYW47CgogICAgaW1wb3J0IG8tcmFuLXNtby10ZWl2LWNvbW1vbi15YW5nLXR5cGVzIHtwcmVmaXggb3ItdGVpdi10eXBlczsgfQoKICAgIGltcG9ydCBvLXJhbi1zbW8tdGVpdi1jb21tb24teWFuZy1leHRlbnNpb25zIHtwcmVmaXggb3ItdGVpdi15ZXh0OyB9CgogICAgaW1wb3J0IG8tcmFuLXNtby10ZWl2LWNsb3VkIHtwcmVmaXggb3ItdGVpdi1jbG91ZDsgfQoKICAgIGltcG9ydCBvLXJhbi1zbW8tdGVpdi1yYW4ge3ByZWZpeCBvci10ZWl2LXJhbjsgfQoKICAgIG9yZ2FuaXphdGlvbiAiRXJpY3Nzb24gQUIiOwogICAgY29udGFjdCAiRXJpY3Nzb24gZmlyc3QgbGluZSBzdXBwb3J0IHZpYSBlbWFpbCI7CiAgICBkZXNjcmlwdGlvbgogICAgIlJBTiBDbG91ZCB0byBSQU4gTG9naWNhbCB0b3BvbG9neSBtb2RlbC4KCiAgICBDb3B5cmlnaHQgKGMpIDIwMjMgRXJpY3Nzb24gQUIuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCgogICAgVGhpcyBtb2RlbCBjb250YWlucyB0aGUgUkFOIENsb3VkIHRvIFJBTiBMb2dpY2FsIHRvcG9sb2d5IHJlbGF0aW9ucyI7CgogICAgcmV2aXNpb24gIjIwMjQtMDUtMDIiIHsKICAgICAgICBkZXNjcmlwdGlvbiAiSW5pdGlhbCByZXZpc2lvbi4iOwogICAgICAgIG9yLXRlaXYteWV4dDpsYWJlbCAwLjMuMDsKICAgIH0KCiAgICBvci10ZWl2LXlleHQ6ZG9tYWluIENMT1VEX1RPX1JBTjsKCiAgICBvci10ZWl2LXlleHQ6YmlEaXJlY3Rpb25hbFRvcG9sb2d5UmVsYXRpb25zaGlwIE5GREVQTE9ZTUVOVF9TRVJWRVNfR05CRFVGVU5DVElPTiB7IC8vIDAuLm4gdG8gMC4ubQoKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6VG9wX0dycF9UeXBlOwogICAgICAgIGtleSBpZDsKCiAgICAgICAgbGVhZi1saXN0IHNlcnZpY2VkLWduYmR1RnVuY3Rpb24gewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiZ05vZGVCRFUgRnVuY3Rpb24gc2VydmljZWQgYnkgdGhpcyBORiBEZXBsb3ltZW50LiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDphU2lkZSBvci10ZWl2LWNsb3VkOk5GRGVwbG95bWVudDsKICAgICAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgIH0KCiAgICAgICAgbGVhZi1saXN0IHNlcnZpbmctbkZEZXBsb3ltZW50IHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIk5GIERlcGxveW1lbnQgdGhhdCBzZXJ2ZXMgdGhpcyBnTm9kZUJEVSBGdW5jdGlvbi4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YlNpZGUgb3ItdGVpdi1yYW46R05CRFVGdW5jdGlvbjsKICAgICAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgIH0KICAgIH0KCiAgICBvci10ZWl2LXlleHQ6YmlEaXJlY3Rpb25hbFRvcG9sb2d5UmVsYXRpb25zaGlwIE5GREVQTE9ZTUVOVF9TRVJWRVNfR05CQ1VDUEZVTkNUSU9OIHsgLy8gMC4ubiB0byAwLi5tCgogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICAgICAga2V5IGlkOwoKICAgICAgICBsZWFmLWxpc3Qgc2VydmljZWQtZ25iY3VjcEZ1bmN0aW9uIHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gImdOb2RlQi1DVS1DUCBGdW5jdGlvbiBzZXJ2aWNlZCBieSB0aGlzIE5GIERlcGxveW1lbnQuIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmFTaWRlIG9yLXRlaXYtY2xvdWQ6TkZEZXBsb3ltZW50OwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgfQoKICAgICAgICBsZWFmLWxpc3Qgc2VydmluZy1uRkRlcGxveW1lbnQgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiTkYgRGVwbG95bWVudCB0aGF0IHNlcnZlcyB0aGlzIGdOb2RlQkNVQ1AgRnVuY3Rpb24uIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmJTaWRlIG9yLXRlaXYtcmFuOkdOQkNVQ1BGdW5jdGlvbjsKICAgICAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgIH0KICAgIH0KCiAgICBvci10ZWl2LXlleHQ6YmlEaXJlY3Rpb25hbFRvcG9sb2d5UmVsYXRpb25zaGlwIE5GREVQTE9ZTUVOVF9TRVJWRVNfR05CQ1VVUEZVTkNUSU9OIHsgLy8gMC4ubiB0byAwLi5tCgogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICAgICAga2V5IGlkOwoKICAgICAgICBsZWFmLWxpc3Qgc2VydmljZWQtZ25iY3V1cEZ1bmN0aW9uIHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gImdOb2RlQi1DVS1VUCBGdW5jdGlvbiBzZXJ2aWNlZCBieSB0aGlzIE5GIERlcGxveW1lbnQuIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmFTaWRlIG9yLXRlaXYtY2xvdWQ6TkZEZXBsb3ltZW50OwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgfQoKICAgICAgICBsZWFmLWxpc3Qgc2VydmluZy1uRkRlcGxveW1lbnQgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiTkYgRGVwbG95bWVudCB0aGF0IHNlcnZlcyB0aGlzIGdOb2RlQkNVVVAgRnVuY3Rpb24uIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmJTaWRlIG9yLXRlaXYtcmFuOkdOQkNVVVBGdW5jdGlvbjsKICAgICAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgIH0KICAgIH0KfQ==    BUILT_IN_MODULE IN_USAGE
-o-ran-smo-teiv-cloud   urn:o-ran:smo-teiv-cloud        CLOUD   []      2024-05-02      bW9kdWxlIG8tcmFuLXNtby10ZWl2LWNsb3VkIHsKICAgIHlhbmctdmVyc2lvbiAxLjE7CiAgICBuYW1lc3BhY2UgInVybjpvLXJhbjpzbW8tdGVpdi1jbG91ZCI7CiAgICBwcmVmaXggb3ItdGVpdi1jbG91ZDsKCiAgICBpbXBvcnQgby1yYW4tc21vLXRlaXYtY29tbW9uLXlhbmctdHlwZXMge3ByZWZpeCBvci10ZWl2LXR5cGVzOyB9CgogICAgaW1wb3J0IG8tcmFuLXNtby10ZWl2LWNvbW1vbi15YW5nLWV4dGVuc2lvbnMge3ByZWZpeCBvci10ZWl2LXlleHQ7IH0KCiAgICBpbXBvcnQgaWV0Zi1nZW8tbG9jYXRpb24gewogICAgICAgIHByZWZpeCBnZW87CiAgICAgICAgcmVmZXJlbmNlICJSRkMgOTE3OTogQSBZQU5HIEdyb3VwaW5nIGZvciBHZW9ncmFwaGljIExvY2F0aW9ucyI7CiAgICB9CgogICAgb3JnYW5pemF0aW9uICJFcmljc3NvbiBBQiI7CiAgICBjb250YWN0ICJFcmljc3NvbiBmaXJzdCBsaW5lIHN1cHBvcnQgdmlhIGVtYWlsIjsKICAgIGRlc2NyaXB0aW9uCiAgICAiUkFOIENsb3VkIHRvcG9sb2d5IG1vZGVsLgoKICAgIENvcHlyaWdodCAoYykgMjAyMyBFcmljc3NvbiBBQi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KCiAgICBUaGlzIG1vZGVsIGNvbnRhaW5zIHRoZSB0b3BvbG9neSBlbnRpdGllcyBhbmQgcmVsYXRpb25zIGluIHRoZQogICAgUkFOIENMT1VEIGRvbWFpbiwgd2hpY2ggY29tcHJpc2VzIGNsb3VkIGluZnJhc3RydWN0dXJlIGFuZAogICAgZGVwbG95bWVudCBhc3BlY3RzIHRoYXQgY2FuIGJlIHVzZWQgaW4gdGhlIHRvcG9sb2d5IG1vZGVsLiI7CgogICAgcmV2aXNpb24gIjIwMjQtMDUtMDIiIHsKICAgICAgICBkZXNjcmlwdGlvbiAiSW5pdGlhbCByZXZpc2lvbi4iOwogICAgICAgIG9yLXRlaXYteWV4dDpsYWJlbCAwLjMuMDsKICAgIH0KCiAgICBvci10ZWl2LXlleHQ6ZG9tYWluIENMT1VEOwoKICAgIGxpc3QgQ2xvdWRpZmllZE5GIHsKICAgICAgICBkZXNjcmlwdGlvbiAiQSBSQU4gTmV0d29yayBGdW5jdGlvbiBzb2Z0d2FyZSB0aGF0IGlzIGRlcGxveWVkIGluIHRoZSBPLUNsb3VkIHZpYSBvbmUgb3IgbW9yZSBORiBEZXBsb3ltZW50cy4iOwoKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6VG9wX0dycF9UeXBlOwogICAgICAgIGtleSBpZDsKCiAgICAgICAgY29udGFpbmVyIGF0dHJpYnV0ZXMgewogICAgICAgICAgICBsZWFmIG5hbWUgewogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIk5hbWUgb2YgQ2xvdWRpZmllZCBORiI7CiAgICAgICAgICAgICAgICB0eXBlIHN0cmluZzsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBsaXN0IE5GRGVwbG95bWVudCB7CiAgICAgICAgZGVzY3JpcHRpb24gIkEgc29mdHdhcmUgZGVwbG95bWVudCBvbiBPLUNsb3VkIHJlc291cmNlcyB0aGF0IHJlYWxpemVzLCBhbGwgb3IgcGFydCBvZiwgYSBDbG91ZGlmaWVkIE5GLiI7CgogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICAgICAga2V5IGlkOwoKICAgICAgICBjb250YWluZXIgYXR0cmlidXRlcyB7CiAgICAgICAgICAgIGxlYWYgbmFtZSB7CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiTmFtZSBvZiBORiBEZXBsb3ltZW50IjsKICAgICAgICAgICAgICAgIHR5cGUgc3RyaW5nOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIGxpc3QgQ2xvdWROYW1lc3BhY2UgewogICAgICAgIGRlc2NyaXB0aW9uICJDbG91ZE5hbWVzcGFjZSBwcm92aWRlIGEgbWVjaGFuaXNtIGZvciBpc29sYXRpbmcKICAgICAgICAgICAgICAgICAgICBncm91cHMgb2YgcmVzb3VyY2VzIHdpdGhpbiBhIHNpbmdsZSBjbHVzdGVyLiI7CgogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICAgICAga2V5IGlkOwoKICAgICAgICBjb250YWluZXIgYXR0cmlidXRlcyB7CiAgICAgICAgICAgIGxlYWYgbmFtZSB7CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiTmFtZSBvZiBDbG91ZCBOYW1lc3BhY2UiOwogICAgICAgICAgICAgICAgdHlwZSBzdHJpbmc7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgbGlzdCBOb2RlQ2x1c3RlciB7CiAgICAgICAgZGVzY3JpcHRpb24gIkEgTm9kZUNsdXN0ZXIgbWFuYWdlcyBhIGNvbGxlY3Rpb24gb2YgTm9kZXMuIjsKCiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOlRvcF9HcnBfVHlwZTsKICAgICAgICBrZXkgaWQ7CgogICAgICAgIGNvbnRhaW5lciBhdHRyaWJ1dGVzIHsKICAgICAgICAgICAgbGVhZiBuYW1lIHsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJOYW1lIG9mIE5vZGUgQ2x1c3RlciI7CiAgICAgICAgICAgICAgICB0eXBlIHN0cmluZzsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBsaXN0IENsb3VkU2l0ZSB7CiAgICAgICAgZGVzY3JpcHRpb24gIlJlcHJlc2VudHMgdGhlIGluZnJhc3RydWN0dXJlIHRoYXQKICAgICAgICAgICAgICAgICAgICBob3N0cyB0aGUgTkYgRGVwbG95bWVudC4iOwoKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6VG9wX0dycF9UeXBlOwogICAgICAgIGtleSBpZDsKCiAgICAgICAgY29udGFpbmVyIGF0dHJpYnV0ZXMgewogICAgICAgICAgICBsZWFmIG5hbWUgewogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIk5hbWUgb2YgQ2xvdWQgU2l0ZSI7CiAgICAgICAgICAgICAgICB0eXBlIHN0cmluZzsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgdXNlcyBnZW86Z2VvLWxvY2F0aW9uOwogICAgICAgIH0KICAgIH0KCgogICAgb3ItdGVpdi15ZXh0OmJpRGlyZWN0aW9uYWxUb3BvbG9neVJlbGF0aW9uc2hpcCBDTE9VRElGSUVETkZfQ09NUFJJU0VTX05GREVQTE9ZTUVOVCB7IC8vIDEgdG8gMS4ubgoKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6VG9wX0dycF9UeXBlOwogICAgICAgIGtleSBpZDsKCiAgICAgICAgbGVhZi1saXN0IGNvbXByaXNlZC1uRkRlcGxveW1lbnQgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiQ2xvdWRpZmllZCBORiBjb21wcmlzZXMgb2YgdGhlc2UgTkYgRGVwbG95bWVudC4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YVNpZGUgQ2xvdWRpZmllZE5GOwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgICAgIG1pbi1lbGVtZW50cyAxOwogICAgICAgIH0KCiAgICAgICAgbGVhZiBjb21wcmlzZWQtYnktY2xvdWRpZmllZE5GIHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIk5GIERlcGxveW1lbnQgcGFydCBvZiBDbG91ZGlmaWVkIE5GLiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDpiU2lkZSBORkRlcGxveW1lbnQ7CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICAgICAgbWFuZGF0b3J5IHRydWU7CiAgICAgICAgfQogICAgfQoKICAgIG9yLXRlaXYteWV4dDpiaURpcmVjdGlvbmFsVG9wb2xvZ3lSZWxhdGlvbnNoaXAgTkZERVBMT1lNRU5UX0RFUExPWUVEX09OX0NMT1VETkFNRVNQQUNFIHsgLy8gMS4ubiB0byAxLi5uCgogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICAgICAga2V5IGlkOwoKICAgICAgICBsZWFmLWxpc3QgZGVwbG95ZWQtb24tY2xvdWROYW1lc3BhY2UgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiTkYgRGVwbG95bWVudCBkZXBsb3llZCBvbiBDbG91ZCBOYW1lc3BhY2UuIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmFTaWRlIE5GRGVwbG95bWVudDsKICAgICAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgICAgICBtaW4tZWxlbWVudHMgMTsKICAgICAgICB9CgogICAgICAgIGxlYWYtbGlzdCBkZXBsb3llZC1uRkRlcGxveW1lbnQgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiQ2xvdWQgTmFtZXNwYWNlIGRlcGxveXMgTkYgRGVwbG95bWVudC4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YlNpZGUgQ2xvdWROYW1lc3BhY2U7CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICAgICAgbWluLWVsZW1lbnRzIDE7CiAgICAgICAgfQogICAgfQoKICAgIG9yLXRlaXYteWV4dDpiaURpcmVjdGlvbmFsVG9wb2xvZ3lSZWxhdGlvbnNoaXAgQ0xPVUROQU1FU1BBQ0VfREVQTE9ZRURfT05fTk9ERUNMVVNURVIgeyAvLyAxLi5uIHRvIDEKCiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOlRvcF9HcnBfVHlwZTsKICAgICAgICBrZXkgaWQ7CgogICAgICAgIGxlYWYgZGVwbG95ZWQtb24tbm9kZUNsdXN0ZXIgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiQ2xvdWQgTmFtZXNwYWNlIGRlcGxveWVkIG9uIE5vZGUgQ2x1c3Rlci4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YVNpZGUgQ2xvdWROYW1lc3BhY2U7CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICAgICAgbWFuZGF0b3J5IHRydWU7CiAgICAgICAgfQoKICAgICAgICBsZWFmLWxpc3QgZGVwbG95ZWQtY2xvdWROYW1lc3BhY2UgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiTm9kZSBDbHVzdGVyIGRlcGxveXMgQ2xvdWQgTmFtZXNwYWNlLiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDpiU2lkZSBOb2RlQ2x1c3RlcjsKICAgICAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgICAgICBtaW4tZWxlbWVudHMgMTsKICAgICAgICB9CiAgICB9CgogICAgb3ItdGVpdi15ZXh0OmJpRGlyZWN0aW9uYWxUb3BvbG9neVJlbGF0aW9uc2hpcCBOT0RFQ0xVU1RFUl9MT0NBVEVEX0FUX0NMT1VEU0lURSB7IC8vIDEuLm4gdG8gMS4ubgoKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6VG9wX0dycF9UeXBlOwogICAgICAgIGtleSBpZDsKCiAgICAgICAgbGVhZi1saXN0IGxvY2F0ZWQtYXQtY2xvdWRTaXRlIHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIk5vZGUgQ2x1c3RlciBsb2NhdGVkIGF0IENsb3VkIFNpdGUuIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmFTaWRlIE5vZGVDbHVzdGVyOwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgICAgIG1pbi1lbGVtZW50cyAxOwogICAgICAgIH0KCiAgICAgICAgbGVhZi1saXN0IGxvY2F0aW9uLW9mLW5vZGVDbHVzdGVyIHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIkNsb3VkIFNpdGUgaXMgbG9jYXRpb24gb2YgTm9kZSBDbHVzdGVyLiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDpiU2lkZSBDbG91ZFNpdGU7CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICAgICAgbWluLWVsZW1lbnRzIDE7CiAgICAgICAgfQogICAgfQp9        BUILT_IN_MODULE IN_USAGE
-o-ran-smo-teiv-equipment-to-ran        urn:o-ran:smo-teiv-equipment-to-ran     EQUIPMENT_TO_RAN        ["o-ran-smo-teiv-equipment", "o-ran-smo-teiv-ran"]      2024-05-02      bW9kdWxlIG8tcmFuLXNtby10ZWl2LWVxdWlwbWVudC10by1yYW4gewogICAgeWFuZy12ZXJzaW9uIDEuMTsKICAgIG5hbWVzcGFjZSAidXJuOm8tcmFuOnNtby10ZWl2LWVxdWlwbWVudC10by1yYW4iOwogICAgcHJlZml4IG9yLXRlaXYtZXF1aXB0b3JhbjsKCiAgICBpbXBvcnQgby1yYW4tc21vLXRlaXYtY29tbW9uLXlhbmctdHlwZXMge3ByZWZpeCBvci10ZWl2LXR5cGVzOyB9CgogICAgaW1wb3J0IG8tcmFuLXNtby10ZWl2LWNvbW1vbi15YW5nLWV4dGVuc2lvbnMge3ByZWZpeCBvci10ZWl2LXlleHQ7IH0KCiAgICBpbXBvcnQgby1yYW4tc21vLXRlaXYtZXF1aXBtZW50IHtwcmVmaXggb3ItdGVpdi1lcXVpcDsgfQoKICAgIGltcG9ydCBvLXJhbi1zbW8tdGVpdi1yYW4ge3ByZWZpeCBvci10ZWl2LXJhbjsgfQoKICAgIG9yZ2FuaXphdGlvbiAiRXJpY3Nzb24gQUIiOwogICAgY29udGFjdCAiRXJpY3Nzb24gZmlyc3QgbGluZSBzdXBwb3J0IHZpYSBlbWFpbCI7CiAgICBkZXNjcmlwdGlvbgogICAgIlJBTiBFcXVpcG1lbnQgdG8gTG9naWNhbCB0b3BvbG9neSBtb2RlbC4KCiAgICBDb3B5cmlnaHQgKGMpIDIwMjMgRXJpY3Nzb24gQUIuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCgogICAgVGhpcyBtb2RlbCBjb250YWlucyB0aGUgUkFOIEVxdWlwbWVudCB0byBMb2dpY2FsIHRvcG9sb2d5CiAgICBlbnRpdGllcyBhbmQgcmVsYXRpb25zLiI7CgogICAgcmV2aXNpb24gIjIwMjQtMDUtMDIiIHsKICAgICAgICBkZXNjcmlwdGlvbiAiSW5pdGlhbCByZXZpc2lvbi4iOwogICAgICAgIG9yLXRlaXYteWV4dDpsYWJlbCAwLjMuMDsKICAgIH0KCiAgICBvci10ZWl2LXlleHQ6ZG9tYWluIEVRVUlQTUVOVF9UT19SQU47CgogICAgb3ItdGVpdi15ZXh0OmJpRGlyZWN0aW9uYWxUb3BvbG9neVJlbGF0aW9uc2hpcCBQSFlTSUNBTE5GX1NFUlZFU19HTkJEVUZVTkNUSU9OIHsgLy8gMC4uMSB0byAwLi5uCgogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICAgICAga2V5IGlkOwoKICAgICAgICBsZWFmLWxpc3Qgc2VydmljZWQtZ25iZHVGdW5jdGlvbiB7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJnTm9kZUItRFUgRnVuY3Rpb24gc2VydmljZWQgYnkgdGhpcyBQaHlzaWNhbCBORi4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YVNpZGUgb3ItdGVpdi1lcXVpcDpQaHlzaWNhbE5GOwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgfQoKICAgICAgICBsZWFmIHNlcnZpbmctcGh5c2ljYWxORiB7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJQaHlzaWNhbCBORiBzZXJ2ZXMgdGhpcyBnTm9kZUItRFUgRnVuY3Rpb24uIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmJTaWRlIG9yLXRlaXYtcmFuOkdOQkRVRnVuY3Rpb247CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICB9CiAgICB9CgogICAgb3ItdGVpdi15ZXh0OmJpRGlyZWN0aW9uYWxUb3BvbG9neVJlbGF0aW9uc2hpcCBQSFlTSUNBTE5GX1NFUlZFU19HTkJDVUNQRlVOQ1RJT04geyAvLyAwLi4xIHRvIDAuLm4KCiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOlRvcF9HcnBfVHlwZTsKICAgICAgICBrZXkgaWQ7CgogICAgICAgIGxlYWYtbGlzdCBzZXJ2aWNlZC1nbmJjdWNwRnVuY3Rpb24gewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiZ05vZGVCLUNVQ1AgRnVuY3Rpb24gc2VydmljZWQgYnkgdGhpcyBQaHlzaWNhbCBORi4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YVNpZGUgb3ItdGVpdi1lcXVpcDpQaHlzaWNhbE5GOwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgfQoKICAgICAgICBsZWFmIHNlcnZpbmctcGh5c2ljYWxORiB7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJQaHlzaWNhbCBORiBzZXJ2ZXMgdGhpcyBnTm9kZUItQ1VDUCBGdW5jdGlvbi4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YlNpZGUgb3ItdGVpdi1yYW46R05CQ1VDUEZ1bmN0aW9uOwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgfQogICAgfQoKICAgIG9yLXRlaXYteWV4dDpiaURpcmVjdGlvbmFsVG9wb2xvZ3lSZWxhdGlvbnNoaXAgUEhZU0lDQUxORl9TRVJWRVNfR05CQ1VVUEZVTkNUSU9OIHsgLy8gMC4uMSB0byAwLi5uCgogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICAgICAga2V5IGlkOwoKICAgICAgICBsZWFmLWxpc3Qgc2VydmljZWQtZ25iY3V1cEZ1bmN0aW9uIHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gImdOb2RlQi1DVVVQIEZ1bmN0aW9uIHNlcnZpY2VkIGJ5IHRoaXMgUGh5c2ljYWwgTkYuIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmFTaWRlIG9yLXRlaXYtZXF1aXA6UGh5c2ljYWxORjsKICAgICAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgIH0KCiAgICAgICAgbGVhZiBzZXJ2aW5nLXBoeXNpY2FsTkYgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiUGh5c2ljYWwgTkYgc2VydmVzIHRoaXMgZ05vZGVCLUNVVVAgRnVuY3Rpb24uIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmJTaWRlIG9yLXRlaXYtcmFuOkdOQkNVVVBGdW5jdGlvbjsKICAgICAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgIH0KICAgIH0KCiAgICBvci10ZWl2LXlleHQ6YmlEaXJlY3Rpb25hbFRvcG9sb2d5UmVsYXRpb25zaGlwIFBIWVNJQ0FMTkZfU0VSVkVTX0VOT0RFQkZVTkNUSU9OIHsgLy8gMC4uMSB0byAwLi5uCgogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICAgICAga2V5IGlkOwoKICAgICAgICBsZWFmLWxpc3Qgc2VydmljZWQtZW5vZGViRnVuY3Rpb24gewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiZU5vZGVCIEZ1bmN0aW9uIHNlcnZpY2VkIGJ5IHRoaXMgUGh5c2ljYWwgTkYuIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmFTaWRlIG9yLXRlaXYtZXF1aXA6UGh5c2ljYWxORjsKICAgICAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgIH0KCiAgICAgICAgbGVhZiBzZXJ2aW5nLXBoeXNpY2FsTkYgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiUGh5c2ljYWwgTkYgc2VydmVzIHRoaXMgZU5vZGVCIEZ1bmN0aW9uLiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDpiU2lkZSBvci10ZWl2LXJhbjpFTm9kZUJGdW5jdGlvbjsKICAgICAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgIH0KICAgIH0KCiAgICBvci10ZWl2LXlleHQ6YmlEaXJlY3Rpb25hbFRvcG9sb2d5UmVsYXRpb25zaGlwIEFOVEVOTkFNT0RVTEVfU0VSVkVTX0FOVEVOTkFDQVBBQklMSVRZIHsgLy8gMC4ubiB0byAwLi5tCgogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICAgICAga2V5IGlkOwoKICAgICAgICBsZWFmLWxpc3Qgc2VydmljZWQtYW50ZW5uYUNhcGFiaWxpdHkgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiQW50ZW5uYSBDYXBhYmlsaXR5IHNlcnZpY2VkIGJ5IHRoaXMgQW50ZW5uYSBNb2R1bGUuIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmFTaWRlIG9yLXRlaXYtZXF1aXA6QW50ZW5uYU1vZHVsZTsKICAgICAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgIH0KCiAgICAgICAgbGVhZi1saXN0IHNlcnZpbmctYW50ZW5uYU1vZHVsZSB7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJBbnRlbm5hIE1vZHVsZSBzZXJ2ZXMgdGhpcyBBbnRlbm5hIENhcGFiaWxpdHkuIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmJTaWRlIG9yLXRlaXYtcmFuOkFudGVubmFDYXBhYmlsaXR5OwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgfQogICAgfQoKICAgIG9yLXRlaXYteWV4dDpiaURpcmVjdGlvbmFsVG9wb2xvZ3lSZWxhdGlvbnNoaXAgU0VDVE9SX0dST1VQU19BTlRFTk5BTU9EVUxFIHsgLy8gMC4uMSB0byAwLi5uCgogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICAgICAga2V5IGlkOwoKICAgICAgICBsZWFmLWxpc3QgZ3JvdXBlZC1hbnRlbm5hTW9kdWxlIHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIlNlY3RvciBncm91cHMgQW50ZW5uYSBNb2R1bGUuIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmFTaWRlIG9yLXRlaXYtcmFuOlNlY3RvcjsKICAgICAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgIH0KCiAgICAgICAgbGVhZiBncm91cGVkLWJ5LXNlY3RvciB7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJBbnRlbm5hIE1vZHVsZSBncm91cGVkIGJ5IFNlY3Rvci4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YlNpZGUgb3ItdGVpdi1lcXVpcDpBbnRlbm5hTW9kdWxlOwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgfQogICAgfQp9        BUILT_IN_MODULE IN_USAGE
+o-ran-smo-teiv-common-yang-extensions  urn:o-ran:smo-teiv-common-yang-extensions       \N      []      2024-05-24      bW9kdWxlIG8tcmFuLXNtby10ZWl2LWNvbW1vbi15YW5nLWV4dGVuc2lvbnMgewoKICB5YW5nLXZlcnNpb24gMS4xOwogIG5hbWVzcGFjZSAidXJuOm8tcmFuOnNtby10ZWl2LWNvbW1vbi15YW5nLWV4dGVuc2lvbnMiOwogIHByZWZpeCBvci10ZWl2LXlleHQ7CgogIG9yZ2FuaXphdGlvbiAiT1JBTiI7CiAgY29udGFjdCAiVGhlIEF1dGhvcnMiOwogIGRlc2NyaXB0aW9uCiAgIlRvcG9sb2d5IGFuZCBJbnZlbnRvcnkgWUFORyBleHRlbnNpb25zIG1vZGVsCgogIFRoaXMgbW9kZWwgY29udGFpbnMgZXh0ZW5zaW9ucyB0byB0aGUgWUFORyBsYW5ndWFnZSB0aGF0IHRvcG9sb2d5IGFuZAogIGludmVudG9yeSBtb2RlbHMgd2lsbCB1c2UgdG8gZGVmaW5lIGFuZCBhbm5vdGF0ZSB0eXBlcyBhbmQgcmVsYXRpb25zaGlwcy4KCiAgQ29weXJpZ2h0IChDKSAyMDI0IEVyaWNzc29uCiAgTW9kaWZpY2F0aW9ucyBDb3B5cmlnaHQgKEMpIDIwMjQgT3BlbkluZnJhIEZvdW5kYXRpb24gRXVyb3BlCgogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7CiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAoKICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKCiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUywKICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCgogIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIjsKCiAgICByZXZpc2lvbiAiMjAyNC0wNS0yNCIgewogICAgICAgIGRlc2NyaXB0aW9uICJJbml0aWFsIHJldmlzaW9uLiI7CiAgICAgICAgb3ItdGVpdi15ZXh0OmxhYmVsIDAuMy4wOwogICAgfQoKICAgIGV4dGVuc2lvbiBiaURpcmVjdGlvbmFsVG9wb2xvZ3lSZWxhdGlvbnNoaXAgewogICAgICAgIGRlc2NyaXB0aW9uCiAgICAgICAgICAgICJEZWZpbmVzIGEgYmktZGlyZWN0aW9uYWwgcmVsYXRpb25zaGlwIGluIHRoZSB0b3BvbG9neS4KCiAgICAgICAgICAgIEEgYmktZGlyZWN0aW9uYWwtYXNzb2NpYXRpb24gKEJEQSkgaXMgYSByZWxhdGlvbnNoaXAgY29tcHJpc2luZyBvZgogICAgICAgICAgICBhbiBBLXNpZGUgYW5kIGEgQi1zaWRlLiBUaGUgQS1zaWRlIGlzIGNvbnNpZGVyZWQgdGhlIG9yaWdpbmF0aW5nCiAgICAgICAgICAgIHNpZGUgb2YgdGhlIHJlbGF0aW9uc2hpcDsgdGhlIEItc2lkZSBpcyBjb25zaWRlcmVkIHRoZSB0ZXJtaW5hdGluZwogICAgICAgICAgICBzaWRlIG9mIHRoZSByZWxhdGlvbnNoaXAuIFRoZSBvcmRlciBvZiBBLXNpZGUgYW5kIEItc2lkZSBpcyBvZgogICAgICAgICAgICBpbXBvcnRhbmNlIGFuZCBNVVNUIE5PVCBiZSBjaGFuZ2VkIG9uY2UgZGVmaW5lZC4KCiAgICAgICAgICAgIEJvdGggQS1zaWRlIGFuZCBCLXNpZGUgYXJlIGRlZmluZWQgb24gYSB0eXBlLCBhbmQgYXJlIGdpdmVuIGEgcm9sZS4KICAgICAgICAgICAgQSB0eXBlIG1heSBoYXZlIG11bHRpcGxlIG9yaWdpbmF0aW5nIGFuZC9vciB0ZXJtaW5hdGluZyBzaWRlcyBvZiBhCiAgICAgICAgICAgIHJlbGF0aW9uc2hpcCwgYWxsIGRpc3Rpbmd1aXNoZWQgYnkgcm9sZSBuYW1lLgoKICAgICAgICAgICAgVGhlIHN0YXRlbWVudCBNVVNUIG9ubHkgYmUgYSBzdWJzdGF0ZW1lbnQgb2YgdGhlICdtb2R1bGUnIHN0YXRlbWVudC4KICAgICAgICAgICAgTXVsdGlwbGUgJ2JpLWRpcmVjdGlvbmFsLXRvcG9sb2d5LXJlbGF0aW9uc2hpcCcgc3RhdGVtZW50cyBhcmUKICAgICAgICAgICAgYWxsb3dlZCBwZXIgcGFyZW50IHN0YXRlbWVudC4KCiAgICAgICAgICAgIFN1YnN0YXRlbWVudHMgdG8gdGhlICdiaS1kaXJlY3Rpb25hbC10b3BvbG9neS1yZWxhdGlvbnNoaXAnIGRlZmluZQogICAgICAgICAgICB0aGUgQS1zaWRlIGFuZCB0aGUgQi1zaWRlLCByZXNwZWN0aXZlbHksIGFuZCBvcHRpb25hbGx5IHByb3BlcnRpZXMKICAgICAgICAgICAgb2YgdGhlIHJlbGF0aW9uc2hpcC4gRGF0YSBub2RlcyBvZiB0eXBlcyAnbGVhZicgYW5kICdsZWFmLWxpc3QnIGFyZQogICAgICAgICAgICB1c2VkIGZvciB0aGlzIHB1cnBvc2UuIE9uZSBvZiB0aGUgZGF0YSBub2RlcyBNVVNUIGJlIGFubm90YXRlZCB3aXRoCiAgICAgICAgICAgIHRoZSAnYS1zaWRlJyBleHRlbnNpb247IGFub3RoZXIgZGF0YSBub2RlIE1VU1QgYmUgYW5ub3RhdGVkIHdpdGggdGhlCiAgICAgICAgICAgICdiLXNpZGUnIGV4dGVuc2lvbi4gT3RoZXIgZGF0YSBub2RlcyBkZWZpbmUgcHJvcGVydGllcyBvZiB0aGUKICAgICAgICAgICAgcmVsYXRpb25zaGlwLgoKICAgICAgICAgICAgVGhlIGFyZ3VtZW50IGlzIHRoZSBuYW1lIG9mIHRoZSByZWxhdGlvbnNoaXAuIFRoZSByZWxhdGlvbnNoaXAgbmFtZQogICAgICAgICAgICBpcyBzY29wZWQgdG8gdGhlIG5hbWVzcGFjZSBvZiB0aGUgZGVjbGFyaW5nIG1vZHVsZSBhbmQgTVVTVCBiZQogICAgICAgICAgICB1bmlxdWUgd2l0aGluIHRoZSBzY29wZS4iOwoKICAgICAgICBhcmd1bWVudCByZWxhdGlvbnNoaXBOYW1lOwogICAgfQoKICAgIGV4dGVuc2lvbiBhU2lkZSB7CiAgICAgICAgZGVzY3JpcHRpb24KICAgICAgICAgICAgIkRlZmluZXMgdGhlIEEtc2lkZSBvZiBhIHJlbGF0aW9uc2hpcC4KCiAgICAgICAgICAgIFRoZSBzdGF0ZW1lbnQgTVVTVCBvbmx5IGJlIGEgc3Vic3RhdGVtZW50IG9mIGEgJ2xlYWYnIG9yICdsZWFmLWxpc3QnCiAgICAgICAgICAgIHN0YXRlbWVudCwgd2hpY2ggaXRzZWxmIG11c3QgYmUgYSBzdWJzdGF0ZW1lbnQgb2YgdGhlCiAgICAgICAgICAgICd1bmktZGlyZWN0aW9uYWwtdG9wb2xvZ3ktcmVsYXRpb25zaGlwJyBzdGF0ZW1lbnQuCgogICAgICAgICAgICBUaGUgZGF0YSB0eXBlIG9mIHRoZSBwYXJlbnQgJ2xlYWYnIG9yICdsZWFmLWxpc3QnIE1VU1QgYmUKICAgICAgICAgICAgJ2luc3RhbmNlLWlkZW50aWZpZXInLiBDb25zdHJhaW50cyBNQVkgYmUgdXNlZCBhcyBwYXJ0IG9mIHRoZSBwYXJlbnQKICAgICAgICAgICAgJ2xlYWYnIG9yICdsZWFmLWxpc3QnIHRvIGVuZm9yY2UgY2FyZGluYWxpdHkuCgogICAgICAgICAgICBUaGUgaWRlbnRpZmllciBvZiB0aGUgcGFyZW50ICdsZWFmJyBvciAnbGVhZi1saXN0JyBpcyB1c2VkIGFzIG5hbWUKICAgICAgICAgICAgb2YgdGhlIHJvbGUgb2YgdGhlIEEtc2lkZSBvZiB0aGUgcmVsYXRpb25zaGlwLiBUaGUgbmFtZSBvZiB0aGUgcm9sZQogICAgICAgICAgICBpcyBzY29wZWQgdG8gdGhlIHR5cGUgb24gd2hpY2ggdGhlIEEtc2lkZSBpcyBkZWZpbmVkIGFuZCBNVVNUIGJlCiAgICAgICAgICAgIHVuaXF1ZSB3aXRoaW4gdGhlIHNjb3BlLgoKICAgICAgICAgICAgV2hpbGUgdGhlIHBhcmVudCAnbGVhZicgb3IgJ2xlYWYtbGlzdCcgZG9lcyBub3QgcmVzdWx0IGluIGEgcHJvcGVydHkKICAgICAgICAgICAgb2YgdGhlIHJlbGF0aW9uc2hpcCwgaXQgaXMgUkVDT01NRU5ERUQgdG8gYXZvaWQgdXNpbmcgdGhlIG5hbWUgb2YgYW4KICAgICAgICAgICAgZXhpc3RpbmcgdHlwZSBwcm9wZXJ0eSBhcyByb2xlIG5hbWUgdG8gYXZvaWQgcG90ZW50aWFsIGFtYmlndWl0aWVzCiAgICAgICAgICAgIGJldHdlZW4gcHJvcGVydGllcyBvZiBhIHR5cGUsIGFuZCByb2xlcyBvZiBhIHJlbGF0aW9uc2hpcCBvbiB0aGUKICAgICAgICAgICAgdHlwZS4KCiAgICAgICAgICAgIFRoZSBhcmd1bWVudCBpcyB0aGUgbmFtZSBvZiB0aGUgdHlwZSBvbiB3aGljaCB0aGUgQS1zaWRlIHJlc2lkZXMuCiAgICAgICAgICAgIElmIHRoZSB0eXBlIGlzIGRlY2xhcmVkIGluIGFub3RoZXIgbW9kdWxlLCB0aGUgdHlwZSBtdXN0IGJlCiAgICAgICAgICAgIHByZWZpeGVkLCBhbmQgYSBjb3JyZXNwb25kaW5nICdpbXBvcnQnIHN0YXRlbWVudCBiZSB1c2VkIHRvIGRlY2xhcmUKICAgICAgICAgICAgdGhlIHByZWZpeC4iOwoKICAgICAgICBhcmd1bWVudCBhU2lkZVR5cGU7CiAgICB9CgogICAgZXh0ZW5zaW9uIGJTaWRlIHsKICAgICAgICBkZXNjcmlwdGlvbgogICAgICAgICAgICAiRGVmaW5lcyB0aGUgQi1zaWRlIG9mIGEgcmVsYXRpb25zaGlwLgoKICAgICAgICAgICAgVGhlIHN0YXRlbWVudCBNVVNUIG9ubHkgYmUgYSBzdWJzdGF0ZW1lbnQgb2YgYSAnbGVhZicgb3IgJ2xlYWYtbGlzdCcKICAgICAgICAgICAgc3RhdGVtZW50LCB3aGljaCBpdHNlbGYgbXVzdCBiZSBhIHN1YnN0YXRlbWVudCBvZiB0aGUKICAgICAgICAgICAgJ3VuaS1kaXJlY3Rpb25hbC10b3BvbG9neS1yZWxhdGlvbnNoaXAnIHN0YXRlbWVudC4KCiAgICAgICAgICAgIFRoZSBkYXRhIHR5cGUgb2YgdGhlIHBhcmVudCAnbGVhZicgb3IgJ2xlYWYtbGlzdCcgTVVTVCBiZQogICAgICAgICAgICAnaW5zdGFuY2UtaWRlbnRpZmllcicuIENvbnN0cmFpbnRzIE1BWSBiZSB1c2VkIGFzIHBhcnQgb2YgdGhlIHBhcmVudAogICAgICAgICAgICAnbGVhZicgb3IgJ2xlYWYtbGlzdCcgdG8gZW5mb3JjZSBjYXJkaW5hbGl0eS4KCiAgICAgICAgICAgIFRoZSBpZGVudGlmaWVyIG9mIHRoZSBwYXJlbnQgJ2xlYWYnIG9yICdsZWFmLWxpc3QnIGlzIHVzZWQgYXMgbmFtZQogICAgICAgICAgICBvZiB0aGUgcm9sZSBvZiB0aGUgQi1zaWRlIG9mIHRoZSByZWxhdGlvbnNoaXAuIFRoZSBuYW1lIG9mIHRoZSByb2xlCiAgICAgICAgICAgIGlzIHNjb3BlZCB0byB0aGUgdHlwZSBvbiB3aGljaCB0aGUgQi1zaWRlIGlzIGRlZmluZWQgYW5kIE1VU1QgYmUKICAgICAgICAgICAgdW5pcXVlIHdpdGhpbiB0aGUgc2NvcGUuCgogICAgICAgICAgICBXaGlsZSB0aGUgcGFyZW50ICdsZWFmJyBvciAnbGVhZi1saXN0JyBkb2VzIG5vdCByZXN1bHQgaW4gYSBwcm9wZXJ0eQogICAgICAgICAgICBvZiB0aGUgcmVsYXRpb25zaGlwLCBpdCBpcyBSRUNPTU1FTkRFRCB0byBhdm9pZCB1c2luZyB0aGUgbmFtZSBvZiBhbgogICAgICAgICAgICBleGlzdGluZyB0eXBlIHByb3BlcnR5IGFzIHJvbGUgbmFtZSB0byBhdm9pZCBwb3RlbnRpYWwgYW1iaWd1aXRpZXMKICAgICAgICAgICAgYmV0d2VlbiBwcm9wZXJ0aWVzIG9mIGEgdHlwZSwgYW5kIHJvbGVzIG9mIGEgcmVsYXRpb25zaGlwIG9uIHRoZQogICAgICAgICAgICB0eXBlLgoKICAgICAgICAgICAgVGhlIGFyZ3VtZW50IGlzIHRoZSBuYW1lIG9mIHRoZSB0eXBlIG9uIHdoaWNoIHRoZSBCLXNpZGUgcmVzaWRlcy4KICAgICAgICAgICAgSWYgdGhlIHR5cGUgaXMgZGVjbGFyZWQgaW4gYW5vdGhlciBtb2R1bGUsIHRoZSB0eXBlIG11c3QgYmUKICAgICAgICAgICAgcHJlZml4ZWQsIGFuZCBhIGNvcnJlc3BvbmRpbmcgJ2ltcG9ydCcgc3RhdGVtZW50IGJlIHVzZWQgdG8gZGVjbGFyZQogICAgICAgICAgICB0aGUgcHJlZml4LiI7CgogICAgICAgIGFyZ3VtZW50IGJTaWRlVHlwZTsKICAgIH0KCiAgICBleHRlbnNpb24gZG9tYWluIHsKICAgICAgICBkZXNjcmlwdGlvbiAiS2V5d29yZCB1c2VkIHRvIGNhcnJ5IGRvbWFpbiBpbmZvcm1hdGlvbi4iOwogICAgICAgIGFyZ3VtZW50IGRvbWFpbk5hbWU7CiAgICB9CgogICAgZXh0ZW5zaW9uIGxhYmVsIHsKICAgICAgICBkZXNjcmlwdGlvbgogICAgICAgICAgICAiVGhlIGxhYmVsIGNhbiBiZSB1c2VkIHRvIGdpdmUgbW9kdWxlcyBhbmQgc3VibW9kdWxlcyBhIHNlbWFudGljCiAgICAgICAgICAgIHZlcnNpb24sIGluIGFkZGl0aW9uIHRvIHRoZWlyIHJldmlzaW9uLgoKICAgICAgICAgICAgVGhlIGZvcm1hdCBvZiB0aGUgbGFiZWwgaXMgP3gueS56PyA/IGV4cHJlc3NlZCBhcyBwYXR0ZXJuLCBpdCBpcwogICAgICAgICAgICBbMC05XStcXC5bMC05XStcXC5bMC05XSsKCiAgICAgICAgICAgIFRoZSBzdGF0ZW1lbnQgTVVTVCBvbmx5IGJlIGEgc3Vic3RhdGVtZW50IG9mIHRoZSByZXZpc2lvbiBzdGF0ZW1lbnQuCiAgICAgICAgICAgIFplcm8gb3Igb25lIHJldmlzaW9uIGxhYmVsIHN0YXRlbWVudHMgcGVyIHBhcmVudCBzdGF0ZW1lbnQgYXJlCiAgICAgICAgICAgIGFsbG93ZWQuCgogICAgICAgICAgICBSZXZpc2lvbiBsYWJlbHMgTVVTVCBiZSB1bmlxdWUgYW1vbmdzdCBhbGwgcmV2aXNpb25zIG9mIGEgbW9kdWxlIG9yCiAgICAgICAgICAgIHN1Ym1vZHVsZS4iOwoKICAgICAgICBhcmd1bWVudCBzZW12ZXJzaW9uOwogICAgfQp9    BUILT_IN_MODULE IN_USAGE
+o-ran-smo-teiv-rel-oam-ran     urn:o-ran:smo-teiv-rel-oam-ran  REL_OAM_RAN     ["o-ran-smo-teiv-oam", "o-ran-smo-teiv-ran"]    2024-05-24      bW9kdWxlIG8tcmFuLXNtby10ZWl2LXJlbC1vYW0tcmFuIHsKICAgIHlhbmctdmVyc2lvbiAxLjE7CiAgICBuYW1lc3BhY2UgInVybjpvLXJhbjpzbW8tdGVpdi1yZWwtb2FtLXJhbiI7CiAgICBwcmVmaXggb3ItdGVpdi1yZWwtb2FtcmFuOwoKICAgIGltcG9ydCBvLXJhbi1zbW8tdGVpdi1jb21tb24teWFuZy10eXBlcyB7IHByZWZpeCBvci10ZWl2LXR5cGVzOyB9CgogICAgaW1wb3J0IG8tcmFuLXNtby10ZWl2LWNvbW1vbi15YW5nLWV4dGVuc2lvbnMgeyBwcmVmaXggb3ItdGVpdi15ZXh0OyB9CgogICAgaW1wb3J0IG8tcmFuLXNtby10ZWl2LW9hbSB7IHByZWZpeCBvci10ZWl2LW9hbTsgfQoKICAgIGltcG9ydCBvLXJhbi1zbW8tdGVpdi1yYW4geyBwcmVmaXggb3ItdGVpdi1yYW47IH0KCiAgICBvcmdhbml6YXRpb24gIk9SQU4iOwogICAgY29udGFjdCAiVGhlIEF1dGhvcnMiOwogICAgZGVzY3JpcHRpb24KICAgICJSQU4gTyZNIHRvIExvZ2ljYWwgdG9wb2xvZ3kgbW9kZWwuCgogICAgVGhpcyBtb2RlbCBjb250YWlucyB0aGUgUkFOIE8mTSB0byBMb2dpY2FsIHRvcG9sb2d5IHJlbGF0aW9ucwoKICAgIENvcHlyaWdodCAoQykgMjAyNCBFcmljc3NvbgogICAgTW9kaWZpY2F0aW9ucyBDb3B5cmlnaHQgKEMpIDIwMjQgT3BlbkluZnJhIEZvdW5kYXRpb24gRXVyb3BlCgogICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTsKICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KICAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdCI7CgogICAgcmV2aXNpb24gIjIwMjQtMDUtMjQiIHsKICAgICAgICBkZXNjcmlwdGlvbiAiSW5pdGlhbCByZXZpc2lvbi4iOwogICAgICAgIG9yLXRlaXYteWV4dDpsYWJlbCAwLjMuMDsKICAgIH0KCiAgICBvci10ZWl2LXlleHQ6ZG9tYWluIFJFTF9PQU1fUkFOOwoKICAgIG9yLXRlaXYteWV4dDpiaURpcmVjdGlvbmFsVG9wb2xvZ3lSZWxhdGlvbnNoaXAgTUFOQUdFREVMRU1FTlRfTUFOQUdFU19FTk9ERUJGVU5DVElPTiB7ICAgLy8gMSB0byAwLi5uCgogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICAgICAga2V5IGlkOwoKICAgICAgICBsZWFmLWxpc3QgbWFuYWdlZC1lbm9kZWJGdW5jdGlvbiB7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJNYW5hZ2VkIEVsZW1lbnQgbWFuYWdlcyBlTm9kZUIgRnVuY3Rpb24uIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmFTaWRlIG9yLXRlaXYtb2FtOk1hbmFnZWRFbGVtZW50OwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgfQoKICAgICAgICBsZWFmIG1hbmFnZWQtYnktbWFuYWdlZEVsZW1lbnQgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiZU5vZGVCIEZ1bmN0aW9uIG1hbmFnZWQgYnkgTWFuYWdlZCBFbGVtZW50LiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDpiU2lkZSBvci10ZWl2LXJhbjpFTm9kZUJGdW5jdGlvbjsKICAgICAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgICAgICBtYW5kYXRvcnkgdHJ1ZTsKICAgICAgICB9CiAgICB9CgogICAgb3ItdGVpdi15ZXh0OmJpRGlyZWN0aW9uYWxUb3BvbG9neVJlbGF0aW9uc2hpcCBNQU5BR0VERUxFTUVOVF9NQU5BR0VTX0dOQkRVRlVOQ1RJT04geyAgICAvLyAxIHRvIDAuLm4KCiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOlRvcF9HcnBfVHlwZTsKICAgICAgICBrZXkgaWQ7CgogICAgICAgIGxlYWYtbGlzdCBtYW5hZ2VkLWduYmR1RnVuY3Rpb24gewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiTWFuYWdlZCBFbGVtZW50IG1hbmFnZXMgZ05vZGVCLURVIEZ1bmN0aW9uLiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDphU2lkZSBvci10ZWl2LW9hbTpNYW5hZ2VkRWxlbWVudDsKICAgICAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgIH0KCiAgICAgICAgbGVhZiBtYW5hZ2VkLWJ5LW1hbmFnZWRFbGVtZW50IHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gImdOb2RlQi1EVSBGdW5jdGlvbiBtYW5hZ2VkIGJ5IE1hbmFnZWQgRWxlbWVudC4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YlNpZGUgb3ItdGVpdi1yYW46R05CRFVGdW5jdGlvbjsKICAgICAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgICAgICBtYW5kYXRvcnkgdHJ1ZTsKICAgICAgICB9CiAgICB9CgogICAgb3ItdGVpdi15ZXh0OmJpRGlyZWN0aW9uYWxUb3BvbG9neVJlbGF0aW9uc2hpcCBNQU5BR0VERUxFTUVOVF9NQU5BR0VTX0dOQkNVQ1BGVU5DVElPTiB7ICAgIC8vIDEgdG8gMC4ubgoKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6VG9wX0dycF9UeXBlOwogICAgICAgIGtleSBpZDsKCiAgICAgICAgbGVhZi1saXN0IG1hbmFnZWQtZ25iY3VjcEZ1bmN0aW9uIHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIk1hbmFnZWQgRWxlbWVudCBtYW5hZ2VzIGdOb2RlQi1DVS1DUCBGdW5jdGlvbi4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YVNpZGUgb3ItdGVpdi1vYW06TWFuYWdlZEVsZW1lbnQ7CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICB9CgogICAgICAgIGxlYWYgbWFuYWdlZC1ieS1tYW5hZ2VkRWxlbWVudCB7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJnTm9kZUItQ1UtQ1AgRnVuY3Rpb24gbWFuYWdlZCBieSBNYW5hZ2VkIEVsZW1lbnQuIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmJTaWRlIG9yLXRlaXYtcmFuOkdOQkNVQ1BGdW5jdGlvbjsKICAgICAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgICAgICBtYW5kYXRvcnkgdHJ1ZTsKICAgICAgICB9CiAgICB9CgogICAgb3ItdGVpdi15ZXh0OmJpRGlyZWN0aW9uYWxUb3BvbG9neVJlbGF0aW9uc2hpcCBNQU5BR0VERUxFTUVOVF9NQU5BR0VTX0dOQkNVVVBGVU5DVElPTiB7ICAgIC8vIDEgdG8gMC4ubgoKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6VG9wX0dycF9UeXBlOwogICAgICAgIGtleSBpZDsKCiAgICAgICAgbGVhZi1saXN0IG1hbmFnZWQtZ25iY3V1cEZ1bmN0aW9uIHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIk1hbmFnZWQgRWxlbWVudCBtYW5hZ2VzIGdOb2RlQi1DVS1VUCBGdW5jdGlvbi4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YVNpZGUgb3ItdGVpdi1vYW06TWFuYWdlZEVsZW1lbnQ7CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICB9CgogICAgICAgIGxlYWYgbWFuYWdlZC1ieS1tYW5hZ2VkRWxlbWVudCB7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJnTm9kZUItQ1UtVVAgRnVuY3Rpb24gbWFuYWdlZCBieSBNYW5hZ2VkIEVsZW1lbnQuIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmJTaWRlIG9yLXRlaXYtcmFuOkdOQkNVVVBGdW5jdGlvbjsKICAgICAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgICAgICBtYW5kYXRvcnkgdHJ1ZTsKICAgICAgICB9CiAgICB9Cn0=    BUILT_IN_MODULE IN_USAGE
+o-ran-smo-teiv-common-yang-types       urn:o-ran:smo-teiv-common-yang-types    \N      []      2024-05-24      bW9kdWxlIG8tcmFuLXNtby10ZWl2LWNvbW1vbi15YW5nLXR5cGVzIHsKICAgIHlhbmctdmVyc2lvbiAxLjE7CiAgICBuYW1lc3BhY2UgInVybjpvLXJhbjpzbW8tdGVpdi1jb21tb24teWFuZy10eXBlcyI7CiAgICBwcmVmaXggb3ItdGVpdi10eXBlczsKCiAgICBpbXBvcnQgby1yYW4tc21vLXRlaXYtY29tbW9uLXlhbmctZXh0ZW5zaW9ucyB7IHByZWZpeCBvci10ZWl2LXlleHQ7IH0KCiAgICBpbXBvcnQgXzNncHAtY29tbW9uLXlhbmctdHlwZXMgeyBwcmVmaXggdHlwZXMzZ3BwOyB9CgogIG9yZ2FuaXphdGlvbiAiT1JBTiI7CiAgY29udGFjdCAiVGhlIEF1dGhvcnMiOwogIGRlc2NyaXB0aW9uCiAgIlRvcG9sb2d5IGFuZCBJbnZlbnRvcnkgY29tbW9uIHR5cGVzIG1vZGVsCgogIFRoaXMgbW9kZWwgY29udGFpbnMgcmUtdXNhYmxlIGRhdGEgdHlwZXMgdGhhdCB0b3BvbG9neSBhbmQgaW52ZW50b3J5IG1vZGVscwogIHdpbGwgZnJlcXVlbnRseSB1c2UgYXMgcGFydCBvZiB0eXBlcyBhbmQgcmVsYXRpb25zaGlwcy4KCiAgQ29weXJpZ2h0IChDKSAyMDI0IEVyaWNzc29uCiAgTW9kaWZpY2F0aW9ucyBDb3B5cmlnaHQgKEMpIDIwMjQgT3BlbkluZnJhIEZvdW5kYXRpb24gRXVyb3BlCgogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7CiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAoKICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKCiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUywKICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCgogIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIjsKCiAgICByZXZpc2lvbiAiMjAyNC0wNS0yNCIgewogICAgICAgIGRlc2NyaXB0aW9uICJJbml0aWFsIHJldmlzaW9uLiI7CiAgICAgICAgb3ItdGVpdi15ZXh0OmxhYmVsIDAuMy4wOwogICAgfQoKICAgIGdyb3VwaW5nIFRvcF9HcnBfVHlwZSB7CiAgICAgICAgZGVzY3JpcHRpb24gIkdyb3VwaW5nIGNvbnRhaW5pbmcgdGhlIGtleSBhdHRyaWJ1dGUgY29tbW9uIHRvIGFsbCB0eXBlcy4KICAgICAgICAgICAgQWxsIHR5cGVzIE1VU1QgdXNlIHRoaXMgZ3JvdXBpbmcuIjsKCiAgICAgICAgbGVhZiBpZCB7CiAgICAgICAgICAgIHR5cGUgc3RyaW5nOwogICAgICAgICAgICBkZXNjcmlwdGlvbiAiVW5pcXVlIGlkZW50aWZpZXIgb2YgdG9wb2xvZ3kgZW50aXRpZXMuIFJlcHJlc2VudHMgdGhlCiAgICAgICAgICAgICAgICBFbnRpdHkgSW5zdGFuY2UgSWRlbnRpZmllci4iOwogICAgICAgIH0KICAgIH0KCiAgICBjb250YWluZXIgZGVjb3JhdG9ycyB7CiAgICAgICAgZGVzY3JpcHRpb24KICAgICAgICAgICAgIlRoaXMgY29udGFpbmVyIHNlcnZlcyBhcyBleHRlbnNpb24gcG9pbnQgZm9yIGFwcGxpY2F0aW9ucyB3aXNoaW5nCiAgICAgICAgICAgIHRvIGRlZmluZSB0aGVpciBvd24gZGVjb3JhdG9ycy4gVGhpcyBpcyBkb25lIHZpYSBhdWdtZW50YXRpb25zLiBUaGV5CiAgICAgICAgICAgIGNhbiBvbmx5IGJlIGRlZmluZWQgaW4gbmFtZSB2YWx1ZSBwYWlyLgoKICAgICAgICAgICAgVGhpcyBpcyBhIGNvbnN1bWVyIGRhdGEgYW5kIGNhbiBiZSBhdHRhY2hlZCB0byBUb3BvbG9neSBFbnRpdHkgb3IKICAgICAgICAgICAgVG9wb2xvZ3kgUmVsYXRpb24gaW5zdGFuY2UsIG91dHNpZGUgb2YgdGhlIGRlY2xhcmVkIFRvcG9sb2d5IEVudGl0eQogICAgICAgICAgICBvciBUb3BvbG9neSBSZWxhdGlvbnNoaXAncyBhdHRyaWJ1dGVzLiBUaGlzIGNhbm5vdCBiZSBpbnN0YW50aWF0ZWQsCiAgICAgICAgICAgIGFuZCBpdCBNVVNUIE5PVCBiZSBhdWdtZW50ZWQgb3IgZGV2aWF0ZWQgaW4gYW55IHdheSwgdW5sZXNzIHN0YXRlZAogICAgICAgICAgICBvdGhlcndpc2UuIjsKICAgIH0KCiAgICBsZWFmLWxpc3QgY2xhc3NpZmllcnMgewogICAgICAgIGRlc2NyaXB0aW9uCiAgICAgICAgICAgICJDb25zdW1lciBkZWZpbmVkIHRhZ3MgdG8gdG9wb2xvZ3kgZW50aXRpZXMgYW5kIHJlbGF0aW9uc2hpcHMuCgogICAgICAgICAgICBUaGlzIGlzIGEgY29uc3VtZXIgZGF0YSBhbmQgY2FuIGJlIGF0dGFjaGVkIHRvIFRvcG9sb2d5IEVudGl0eSBvcgogICAgICAgICAgICBUb3BvbG9neSBSZWxhdGlvbiBpbnN0YW5jZSwgb3V0c2lkZSBvZiB0aGUgZGVjbGFyZWQgVG9wb2xvZ3kgRW50aXR5CiAgICAgICAgICAgIG9yIFRvcG9sb2d5IFJlbGF0aW9uc2hpcCdzIGF0dHJpYnV0ZXMuIFRoaXMgY2Fubm90IGJlIGluc3RhbnRpYXRlZCwKICAgICAgICAgICAgYW5kIGl0IE1VU1QgTk9UIGJlIGF1Z21lbnRlZCBvciBkZXZpYXRlZCBpbiBhbnkgd2F5LCB1bmxlc3Mgc3RhdGVkCiAgICAgICAgICAgIG90aGVyd2lzZS4iOwoKICAgICAgICB0eXBlIGlkZW50aXR5cmVmIHsgYmFzZSBjbGFzc2lmaWVyOyB9CiAgICB9CgogICAgbGVhZi1saXN0IHNvdXJjZUlkcyB7CiAgICAgICAgZGVzY3JpcHRpb24KICAgICAgICAgICAgIkFuIG9yZGVyZWQgbGlzdCBvZiBpZGVudGl0aWVzIHRoYXQgcmVwcmVzZW50IHRoZSBzZXQgb2YgbmF0aXZlCiAgICAgICAgICAgIHNvdXJjZSBpZGVudGlmaWVycyBmb3IgcGFydGljaXBhdGluZyBlbnRpdGllcy4KCiAgICAgICAgICAgIFRoaXMgaXMgYSBjb25zdW1lciBkYXRhIGFuZCBjYW4gYmUgYXR0YWNoZWQgdG8gVG9wb2xvZ3kgRW50aXR5IG9yCiAgICAgICAgICAgIFRvcG9sb2d5IFJlbGF0aW9uIGluc3RhbmNlLCBvdXRzaWRlIG9mIHRoZSBkZWNsYXJlZCBUb3BvbG9neSBFbnRpdHkKICAgICAgICAgICAgb3IgVG9wb2xvZ3kgUmVsYXRpb25zaGlwJ3MgYXR0cmlidXRlcy4gVGhpcyBjYW5ub3QgYmUgaW5zdGFudGlhdGVkLAogICAgICAgICAgICBhbmQgaXQgTVVTVCBOT1QgYmUgYXVnbWVudGVkIG9yIGRldmlhdGVkIGluIGFueSB3YXksIHVubGVzcyBzdGF0ZWQKICAgICAgICAgICAgb3RoZXJ3aXNlLiI7CgogICAgICAgIHR5cGUgc3RyaW5nOwogICAgICAgIG9yZGVyZWQtYnkgdXNlcjsKICAgIH0KCiAgICBjb250YWluZXIgbWV0YWRhdGEgewogICAgICAgIGRlc2NyaXB0aW9uCiAgICAgICAgICAgICJUaGlzIGNvbnRhaW5lciBzZXJ2ZXMgYXMgZXh0ZW5zaW9uIHBvaW50IHRvIGRlZmluZSBtZXRhZGF0YS4gVGhleQogICAgICAgICAgICBjYW4gb25seSBiZSBkZWZpbmVkIGluIG5hbWUgdmFsdWUgcGFpci4KCiAgICAgICAgICAgIFRoaXMgaXMgYSBjb25zdW1lciBkYXRhIGFuZCBjYW4gYmUgYXR0YWNoZWQgdG8gVG9wb2xvZ3kgRW50aXR5IG9yCiAgICAgICAgICAgIFRvcG9sb2d5IFJlbGF0aW9uIGluc3RhbmNlLCBvdXRzaWRlIG9mIHRoZSBkZWNsYXJlZCBUb3BvbG9neSBFbnRpdHkKICAgICAgICAgICAgb3IgVG9wb2xvZ3kgUmVsYXRpb25zaGlwJ3MgYXR0cmlidXRlcy4gVGhpcyBjYW5ub3QgYmUgaW5zdGFudGlhdGVkLAogICAgICAgICAgICBhbmQgaXQgTVVTVCBOT1QgYmUgYXVnbWVudGVkIG9yIGRldmlhdGVkIGluIGFueSB3YXksIHVubGVzcyBzdGF0ZWQKICAgICAgICAgICAgb3RoZXJ3aXNlLiI7CiAgICB9CgogICAgaWRlbnRpdHkgY2xhc3NpZmllcnsKICAgICAgICBkZXNjcmlwdGlvbiAiVGhlIGNsYXNzaWZpZXIgaXMgdXNlZCBhcyBhIGJhc2UgdG8gcHJvdmlkZSBhbGwgY2xhc3NpZmllcnMKICAgICAgICAgICAgd2l0aCBpZGVudGl0eS4gIjsKICAgIH0KfQ==        BUILT_IN_MODULE IN_USAGE
+o-ran-smo-teiv-oam     urn:o-ran:smo-teiv-oam  OAM     []      2024-05-24      bW9kdWxlIG8tcmFuLXNtby10ZWl2LW9hbSB7CiAgICB5YW5nLXZlcnNpb24gMS4xOwogICAgbmFtZXNwYWNlICJ1cm46by1yYW46c21vLXRlaXYtb2FtIjsKICAgIHByZWZpeCBvci10ZWl2LW9hbTsKCiAgICBpbXBvcnQgby1yYW4tc21vLXRlaXYtY29tbW9uLXlhbmctdHlwZXMgeyBwcmVmaXggb3ItdGVpdi10eXBlczsgfQoKICAgIGltcG9ydCBvLXJhbi1zbW8tdGVpdi1jb21tb24teWFuZy1leHRlbnNpb25zIHsgcHJlZml4IG9yLXRlaXYteWV4dDsgfQoKICAgIG9yZ2FuaXphdGlvbiAiT1JBTiI7CiAgICBjb250YWN0ICJUaGUgQXV0aG9ycyI7CiAgICBkZXNjcmlwdGlvbiAKICAgICJSQU4gTyZNIHRvcG9sb2d5IG1vZGVsLgoKICAgIFRoaXMgbW9kZWwgY29udGFpbnMgdGhlIHRvcG9sb2d5IGVudGl0aWVzIGFuZCByZWxhdGlvbnMgaW4gdGhlCiAgICBSQU4gTyZNIGRvbWFpbiwgd2hpY2ggYXJlIGludGVuZGVkIHRvIHJlcHJlc2VudCBtYW5hZ2VtZW50IHN5c3RlbXMKICAgIGFuZCBtYW5hZ2VtZW50IGludGVyZmFjZXMuCgogICAgQ29weXJpZ2h0IChDKSAyMDI0IEVyaWNzc29uCiAgICBNb2RpZmljYXRpb25zIENvcHlyaWdodCAoQykgMjAyNCBPcGVuSW5mcmEgRm91bmRhdGlvbiBFdXJvcGUKCiAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpOwogICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CgogICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCgogICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLAogICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCiAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCiAgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KCiAgICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCI7CgogICAgcmV2aXNpb24gIjIwMjQtMDUtMjQiIHsKICAgICAgICBkZXNjcmlwdGlvbiAiSW5pdGlhbCByZXZpc2lvbi4iOwogICAgICAgIG9yLXRlaXYteWV4dDpsYWJlbCAwLjMuMDsKICAgIH0KCiAgICBvci10ZWl2LXlleHQ6ZG9tYWluIE9BTTsKCiAgICBsaXN0IE1hbmFnZWRFbGVtZW50IHsKICAgICAgICBkZXNjcmlwdGlvbiAiQSBNYW5hZ2VkIEVsZW1lbnQgKE1FKSBpcyBhIG5vZGUgaW50byBhIHRlbGVjb21tdW5pY2F0aW9uCiAgICAgICAgICAgIG5ldHdvcmsgcHJvdmlkaW5nIHN1cHBvcnQgYW5kL29yIHNlcnZpY2UgdG8gc3Vic2NyaWJlcnMuIEFuIE1FCiAgICAgICAgICAgIGNvbW11bmljYXRlcyB3aXRoIGEgbWFuYWdlciBhcHBsaWNhdGlvbiAoZGlyZWN0bHkgb3IgaW5kaXJlY3RseSkKICAgICAgICAgICAgb3ZlciBvbmUgb3IgbW9yZSBpbnRlcmZhY2VzIGZvciB0aGUgcHVycG9zZSBvZiBiZWluZyBtb25pdG9yZWQKICAgICAgICAgICAgYW5kL29yIGNvbnRyb2xsZWQuIjsKCiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOlRvcF9HcnBfVHlwZTsKICAgICAgICBrZXkgaWQ7CiAgICB9Cn0=    BUILT_IN_MODULE IN_USAGE
+o-ran-smo-teiv-ran     urn:o-ran:smo-teiv-ran  RAN     []      2024-05-24      bW9kdWxlIG8tcmFuLXNtby10ZWl2LXJhbiB7CiAgICB5YW5nLXZlcnNpb24gMS4xOwogICAgbmFtZXNwYWNlICJ1cm46by1yYW46c21vLXRlaXYtcmFuIjsKICAgIHByZWZpeCBvci10ZWl2LXJhbjsKCiAgICBpbXBvcnQgby1yYW4tc21vLXRlaXYtY29tbW9uLXlhbmctdHlwZXMge3ByZWZpeCBvci10ZWl2LXR5cGVzOyB9CgogICAgaW1wb3J0IG8tcmFuLXNtby10ZWl2LWNvbW1vbi15YW5nLWV4dGVuc2lvbnMge3ByZWZpeCBvci10ZWl2LXlleHQ7IH0KCiAgICBpbXBvcnQgXzNncHAtY29tbW9uLXlhbmctdHlwZXMgeyBwcmVmaXggdHlwZXMzZ3BwOyB9CgogICAgaW1wb3J0IGlldGYtZ2VvLWxvY2F0aW9uIHsKICAgICAgICBwcmVmaXggZ2VvOwogICAgICAgIHJlZmVyZW5jZSAiUkZDIDkxNzk6IEEgWUFORyBHcm91cGluZyBmb3IgR2VvZ3JhcGhpYyBMb2NhdGlvbnMiOwogICAgfQoKICAgIG9yZ2FuaXphdGlvbiAiT1JBTiI7CiAgICBjb250YWN0ICJUaGUgQXV0aG9ycyI7CiAgICBkZXNjcmlwdGlvbgogICAgIlJBTiBMb2dpY2FsIHRvcG9sb2d5IG1vZGVsLgoKICAgIFRoaXMgbW9kZWwgY29udGFpbnMgdGhlIHRvcG9sb2d5IGVudGl0aWVzIGFuZCByZWxhdGlvbnMgaW4gdGhlCiAgICBSQU4gTG9naWNhbCBkb21haW4sIHdoaWNoIHJlcHJlc2VudHMgdGhlIGZ1bmN0aW9uYWwgY2FwYWJpbGl0eQogICAgb2YgdGhlIGRlcGxveWVkIFJBTiB0aGF0IGFyZSByZWxldmFudCB0byByQXBwcyB1c2UgY2FzZXMuCgogICAgQ29weXJpZ2h0IChDKSAyMDI0IEVyaWNzc29uCiAgICBNb2RpZmljYXRpb25zIENvcHlyaWdodCAoQykgMjAyNCBPcGVuSW5mcmEgRm91bmRhdGlvbiBFdXJvcGUKCiAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpOwogICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CgogICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCgogICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLAogICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCiAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCiAgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KCiAgICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCI7CgogICAgcmV2aXNpb24gIjIwMjQtMDUtMjQiIHsKICAgICAgICBkZXNjcmlwdGlvbiAiSW5pdGlhbCByZXZpc2lvbi4iOwogICAgICAgIG9yLXRlaXYteWV4dDpsYWJlbCAwLjMuMDsKICAgIH0KCiAgICBvci10ZWl2LXlleHQ6ZG9tYWluIFJBTjsKCiAgICBsaXN0IEdOQkRVRnVuY3Rpb24gewogICAgICAgIGRlc2NyaXB0aW9uICJnTm9kZUIgRGlzdHJpYnV0ZWQgVW5pdCAoZ05CLURVKS4KCiAgICAgICAgICAgIEEgZ05CIG1heSBjb25zaXN0IG9mIGEgZ05CLUNlbnRyYWxpemVkIFVuaXQgKGdOQi1DVSkgYW5kIGEgZ05CLURVLgogICAgICAgICAgICBUaGUgQ1UgcHJvY2Vzc2VzIG5vbi1yZWFsIHRpbWUgcHJvdG9jb2xzIGFuZCBzZXJ2aWNlcywgYW5kIHRoZSBEVQogICAgICAgICAgICBwcm9jZXNzZXMgUEhZIGxldmVsIHByb3RvY29sIGFuZCByZWFsIHRpbWUgc2VydmljZXMuIFRoZSBnTkItQ1UgYW5kCiAgICAgICAgICAgIHRoZSBnTkItRFUgdW5pdHMgYXJlIGNvbm5lY3RlZCB2aWEgRjEgbG9naWNhbCBpbnRlcmZhY2UuCgogICAgICAgICAgICBUaGUgZm9sbG93aW5nIGlzIHRydWUgZm9yIGEgZ05CLURVOgogICAgICAgICAgICBJcyBjb25uZWN0ZWQgdG8gdGhlIGdOQi1DVS1DUCB0aHJvdWdoIHRoZSBGMS1DIGludGVyZmFjZS4gSXMKICAgICAgICAgICAgY29ubmVjdGVkIHRvIHRoZSBnTkItQ1UtVVAgdGhyb3VnaCB0aGUgRjEtVSBpbnRlcmZhY2UuIE9uZSBnTkItRFUgaXMKICAgICAgICAgICAgY29ubmVjdGVkIHRvIG9ubHkgb25lIGdOQi1DVS1DUC4gT25lIGdOQi1EVSBjYW4gYmUgY29ubmVjdGVkIHRvCiAgICAgICAgICAgIG11bHRpcGxlIGdOQi1DVS1VUHMgdW5kZXIgdGhlIGNvbnRyb2wgb2YgdGhlIHNhbWUgZ05CLUNVLUNQLgoKICAgICAgICAgICAgTm90ZTogQSBnTkIgbWF5IGNvbnNpc3Qgb2YgYSBnTkItQ1UtQ1AsIG11bHRpcGxlIGdOQi1DVS1VUHMgYW5kCiAgICAgICAgICAgIG11bHRpcGxlIGdOQi1EVXMuIGdOQi1EVSBpcyBhIGNvbmNyZXRlIGNsYXNzIHRoYXQgZXh0ZW5kcyB0aGUgTkctUkFOCiAgICAgICAgICAgIG5vZGUgb2JqZWN0LiBJbiBUb3BvbG9neSwgeW91IGNhbiBjcmVhdGUsIHJlYWQsIHVwZGF0ZSwgYW5kIGRlbGV0ZQogICAgICAgICAgICB0aGUgZ05CLURVIG9iamVjdC4iOwoKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6VG9wX0dycF9UeXBlOwogICAgICAgIGtleSBpZDsKCiAgICAgICAgY29udGFpbmVyIGF0dHJpYnV0ZXMgewogICAgICAgICAgICBjb250YWluZXIgZFVwTE1OSWQgewogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIlBMTU4gaWRlbnRpZmllciB1c2VkIGFzIHBhcnQgb2YgUE0gRXZlbnRzIGRhdGEiOwogICAgICAgICAgICAgICAgdXNlcyB0eXBlczNncHA6UExNTklkOwogICAgICAgICAgICB9CgogICAgICAgICAgICBsZWFmIGdOQkRVSWQgewogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIlVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgRFUgd2l0aGluIGEgZ05vZGVCIjsKICAgICAgICAgICAgICAgIHR5cGUgaW50NjQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGxlYWYgZ05CSWQgewogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIklkZW50aXR5IG9mIGdOb2RlQiB3aXRoaW4gYSBQTE1OIjsKICAgICAgICAgICAgICAgIHR5cGUgaW50NjQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGxlYWYgZ05CSWRMZW5ndGggewogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIkxlbmd0aCBvZiBnTkJJZCBiaXQgc3RyaW5nIHJlcHJlc2VudGF0aW9uIjsKICAgICAgICAgICAgICAgIHR5cGUgaW50MzI7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgbGlzdCBHTkJDVUNQRnVuY3Rpb24gewogICAgICAgIGRlc2NyaXB0aW9uICJnTm9kZUIgQ2VudHJhbGl6ZWQgVW5pdCBDb250cm9sIFBsYW5lIChnTkItQ1UtQ1ApCgogICAgICAgICAgICBUaGlzIGlzIGEgbG9naWNhbCBub2RlIGhvc3RpbmcgdGhlIFJhZGlvIFJlc291cmNlIENvbnRyb2wgKFJSQykgYW5kCiAgICAgICAgICAgIHRoZSBjb250cm9sIHBsYW5lIHBhcnQgb2YgdGhlIFBhY2tldCBEYXRhIENvbnZlcmdlbmNlIFByb3RvY29sCiAgICAgICAgICAgIChQRENQKSBvZiB0aGUgZ05vZGVCIENlbnRyYWxpemVkIFVuaXQgKGdOQi1DVSkgZm9yIGFuIEUtVVRSQU4gZ05vZGVCCiAgICAgICAgICAgIChlbi1nTkIpIG9yIGEgZ05vZGVCIChnTkIpLiBUaGUgZ05CLUNVLUNQIHRlcm1pbmF0ZXMgdGhlIEUxCiAgICAgICAgICAgIGludGVyZmFjZSBjb25uZWN0ZWQgd2l0aCB0aGUgZ05CLUNVLVVQIGFuZCB0aGUgRjEtQyBpbnRlcmZhY2UKICAgICAgICAgICAgY29ubmVjdGVkIHdpdGggdGhlIGdOb2RlQiBEaXN0cmlidXRlZCBVbml0IChnTkItRFUpLgoKICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBpcyB0cnVlIGZvciBhIGdOQi1DVS1DUDoKICAgICAgICAgICAgSXMgY29ubmVjdGVkIHRvIHRoZSBnTkItRFUgdGhyb3VnaCB0aGUgRjEtQyBpbnRlcmZhY2UuIElzIGNvbm5lY3RlZAogICAgICAgICAgICB0byB0aGUgZ05CLUNVLVVQIHRocm91Z2ggdGhlIEUxIGludGVyZmFjZS4gT25seSBvbmUgZ05CLUNVLUNQIGlzCiAgICAgICAgICAgIGNvbm5lY3RlZCB0byBvbmUgZ05CLURVLiBPbmx5IG9uZSBnTkItQ1UtQ1AgaXMgY29ubmVjdGVkIHRvIG9uZQogICAgICAgICAgICBnTkItQ1UtVVAuIE9uZSBnTkItRFUgY2FuIGJlIGNvbm5lY3RlZCB0byBtdWx0aXBsZSBnTkItQ1UtVVBzIHVuZGVyCiAgICAgICAgICAgIHRoZSBjb250cm9sIG9mIHRoZSBzYW1lIGdOQi1DVS1DUC5PbmUgZ05CLUNVLVVQIGNhbiBiZSBjb25uZWN0ZWQgdG8KICAgICAgICAgICAgbXVsdGlwbGUgRFVzIHVuZGVyIHRoZSBjb250cm9sIG9mIHRoZSBzYW1lIGdOQi1DVS1DUC4KCiAgICAgICAgICAgIE5vdGU6IEEgZ05CIG1heSBjb25zaXN0IG9mIGEgZ05CLUNVLUNQLCBtdWx0aXBsZSBnTkItQ1UtVVBzIGFuZAogICAgICAgICAgICBtdWx0aXBsZSBnTkItRFVzLiBBIGdOQi1DVS1DUCBpcyBhIGNvbmNyZXRlIGNsYXNzIHRoYXQgZXh0ZW5kcyB0aGUKICAgICAgICAgICAgTkctUkFOIG5vZGUgb2JqZWN0LiBJbiBUb3BvbG9neSwgeW91IGNhbiBjcmVhdGUsIHJlYWQsIHVwZGF0ZSwgYW5kCiAgICAgICAgICAgIGRlbGV0ZSB0aGUgZ05CLUNVLUNQIG9iamVjdC4iOwoKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6VG9wX0dycF9UeXBlOwogICAgICAgIGtleSBpZDsKCiAgICAgICAgY29udGFpbmVyIGF0dHJpYnV0ZXMgewogICAgICAgICAgICBsZWFmIGdOQkNVTmFtZSB7CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiTmFtZSBvZiBnTm9kZUItQ1UiOwogICAgICAgICAgICAgICAgdHlwZSBzdHJpbmc7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGxlYWYgZ05CSWQgewogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIklkZW50aXR5IG9mIGdOb2RlQiB3aXRoaW4gYSBQTE1OIjsKICAgICAgICAgICAgICAgIHR5cGUgaW50NjQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGxlYWYgZ05CSWRMZW5ndGggewogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIkxlbmd0aCBvZiBnTkJJZCBiaXQgc3RyaW5nIHJlcHJlc2VudGF0aW9uIjsKICAgICAgICAgICAgICAgIHR5cGUgaW50MzI7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGNvbnRhaW5lciBwTE1OSWQgewogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIlBMTU4gaWRlbnRpZmllciB0byBiZSB1c2VkIGFzIHBhcnQgb2YgZ2xvYmFsIFJBTgogICAgICAgICAgICAgICAgICAgIG5vZGUgaWRlbnRpdHkiOwogICAgICAgICAgICAgICAgdXNlcyB0eXBlczNncHA6UExNTklkOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIGxpc3QgR05CQ1VVUEZ1bmN0aW9uIHsKICAgICAgICBkZXNjcmlwdGlvbiAiZ05vZGVCIENlbnRyYWxpemVkIFVuaXQgVXNlciBQbGFuZSAoZ05CLUNVLVVQKQoKICAgICAgICAgICAgQSBnTkItQ1UtVVAgaXMgYSBsb2dpY2FsIG5vZGUgaG9zdGluZyB0aGUgVXNlciBQbGFuZSBwYXJ0IG9mIHRoZQogICAgICAgICAgICBQYWNrZXQgRGF0YSBDb252ZXJnZW5jZSwgUHJvdG9jb2wgKFBEQ1ApIG9mIHRoZSBnTm9kZUIgQ2VudHJhbGl6ZWQKICAgICAgICAgICAgVW5pdCAoZ05CLUNVKSBmb3IgYW4gRS1VVFJBTiBnTm9kZUIgKGVuLWdOQiksIGFuZCB0aGUgVXNlciBQbGFuZQogICAgICAgICAgICBwYXJ0IG9mIHRoZSBQRENQIHByb3RvY29sIGFuZCB0aGUgU2VydmljZSBEYXRhIEFkYXB0YXRpb24gUHJvdG9jb2wKICAgICAgICAgICAgKFNEQVApIG9mIHRoZSBnTkItQ1UgZm9yIGEgZ05vZGVCIChnTkIpLiBUaGUgZ05CLUNVLVVQIHRlcm1pbmF0ZXMKICAgICAgICAgICAgdGhlIEUxIGludGVyZmFjZSBjb25uZWN0ZWQgd2l0aCB0aGUgZ05CLUNVLUNQIGFuZCB0aGUgRjEtVSBpbnRlcmZhY2UKICAgICAgICAgICAgY29ubmVjdGVkIHdpdGggdGhlIGdOb2RlQiBEaXN0cmlidXRlZCBVbml0IChnTkItRFUpLgoKICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBpcyB0cnVlIGZvciBhIGdOQi1DVS1VUDoKICAgICAgICAgICAgSXMgY29ubmVjdGVkIHRvIHRoZSBnTkItRFUgdGhyb3VnaCB0aGUgRjEtVSBpbnRlcmZhY2UuIElzIGNvbm5lY3RlZAogICAgICAgICAgICB0byB0aGUgZ05CLUNVLUNQIHRocm91Z2ggdGhlIEUxIGludGVyZmFjZS4gT25lIGdOQi1DVS1VUCBpcwogICAgICAgICAgICBjb25uZWN0ZWQgdG8gb25seSBvbmUgZ05CLUNVLUNQLiBPbmUgZ05CLURVIGNhbiBiZSBjb25uZWN0ZWQgdG8KICAgICAgICAgICAgbXVsdGlwbGUgZ05CLUNVLVVQcyB1bmRlciB0aGUgY29udHJvbCBvZiB0aGUgc2FtZSBnTkItQ1UtQ1AuIE9uZQogICAgICAgICAgICBnTkItQ1UtVVAgY2FuIGJlIGNvbm5lY3RlZCB0byBtdWx0aXBsZSBEVXMgdW5kZXIgdGhlIGNvbnRyb2wgb2YgdGhlCiAgICAgICAgICAgIHNhbWUgZ05CLUNVLUNQLgoKICAgICAgICAgICAgTm90ZTogQSBnTkIgbWF5IGNvbnNpc3Qgb2YgYSBnTkItQ1UtQ1AsIG11bHRpcGxlIGdOQi1DVS1VUHMgYW5kCiAgICAgICAgICAgIG11bHRpcGxlIGdOQi1EVXMuIEEgZ05CLUNVLVVQIGlzIGEgY29uY3JldGUgY2xhc3MgdGhhdCBleHRlbmRzIHRoZQogICAgICAgICAgICBORy1SQU4gbm9kZSBvYmplY3QuIEluIFRvcG9sb2d5LCB5b3UgY2FuIGNyZWF0ZSwgcmVhZCwgdXBkYXRlLCBhbmQKICAgICAgICAgICAgZGVsZXRlIHRoZSBnTkItQ1UtVVAgb2JqZWN0LiI7CgogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICAgICAga2V5IGlkOwoKICAgICAgICBjb250YWluZXIgYXR0cmlidXRlcyB7CiAgICAgICAgICAgIGxlYWYgZ05CSWQgewogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIklkZW50aXR5IG9mIGdOb2RlQiB3aXRoaW4gYSBQTE1OIjsKICAgICAgICAgICAgICAgIHR5cGUgaW50NjQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGxlYWYgZ05CSWRMZW5ndGggewogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIkxlbmd0aCBvZiBnTkJJZCBiaXQgc3RyaW5nIHJlcHJlc2VudGF0aW9uIjsKICAgICAgICAgICAgICAgIHR5cGUgaW50MzI7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgbGlzdCBOUkNlbGxDVSB7CiAgICAgICAgZGVzY3JpcHRpb24gIlJlcHJlc2VudHMgYW4gTlIgQ2VsbCBpbiBnTm9kZUItQ1UuCgogICAgICAgICAgICA1RyBOUiBpcyBhIG5ldyByYWRpbyBhY2Nlc3MgdGVjaG5vbG9neSAoUkFUKSBkZXZlbG9wZWQgYnkgM0dQUCBmb3IKICAgICAgICAgICAgdGhlIDVHIChmaWZ0aCBnZW5lcmF0aW9uKSBtb2JpbGUgbmV0d29yay4gSXQgaXMgZGVzaWduZWQgdG8gYmUgdGhlCiAgICAgICAgICAgIGdsb2JhbCBzdGFuZGFyZCBmb3IgdGhlIGFpciBpbnRlcmZhY2Ugb2YgNUcgbmV0d29ya3MuCgogICAgICAgICAgICA1RyBOUiBoYXMgc3luY2hyb25pemF0aW9uIHNpZ25hbCB0aGF0IGlzIGtub3duIGFzIFByaW1hcnkKICAgICAgICAgICAgU3luY2hyb25pemF0aW9uIFNpZ25hbCAoUFNTKSBhbmQgU2Vjb25kYXJ5IFN5bmNocm9uaXphdGlvbgogICAgICAgICAgICBTaWduYWwgKFNTUykuIFRoZXNlIHNpZ25hbHMgYXJlIHNwZWNpZmljIHRvIE5SIHBoeXNpY2FsIGxheWVyIGFuZAogICAgICAgICAgICBwcm92aWRlIHRoZSBmb2xsb3dpbmcgaW5mb3JtYXRpb24gcmVxdWlyZWQgYnkgVUUgZm9yIGRvd25saW5rCiAgICAgICAgICAgIHN5bmNocm9uaXphdGlvbjogUFNTIHByb3ZpZGVzIFJhZGlvIEZyYW1lIEJvdW5kYXJ5IChQb3NpdGlvbiBvZiAxc3QKICAgICAgICAgICAgU3ltYm9sIGluIGEgUmFkaW8gZnJhbWUpIFNTUyBwcm92aWRlcyBTdWJmcmFtZSBCb3VuZGFyeSAoUG9zaXRpb24gb2YKICAgICAgICAgICAgMXN0IFN5bWJvbCBpbiBhIFN1YmZyYW1lKSBQaHlzaWNhbCBMYXllciBDZWxsIElEIChQQ0kpIGluZm9ybWF0aW9uCiAgICAgICAgICAgIHVzaW5nIGJvdGggUFNTIGFuZCBTU1MuIjsKCiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOlRvcF9HcnBfVHlwZTsKICAgICAgICBrZXkgaWQ7CgogICAgICAgIGNvbnRhaW5lciBhdHRyaWJ1dGVzIHsKICAgICAgICAgICAgbGVhZiBjZWxsTG9jYWxJZCB7CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiVXNlZCB0b2dldGhlciB3aXRoIGdOb2RlQiBpZGVudGlmaWVyIHRvIGlkZW50aWZ5IE5SCiAgICAgICAgICAgICAgICAgICAgY2VsbCBpbiBQTE1OLiBVc2VkIHRvZ2V0aGVyIHdpdGggZ05CSWQgdG8gZm9ybSBOQ0kuIjsKICAgICAgICAgICAgICAgIHR5cGUgaW50MzI7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGNvbnRhaW5lciBwbG1uSWQgewogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIlBMTU4gSUQgZm9yIE5SIENHSS4gSWYgZW1wdHksCiAgICAgICAgICAgICAgICAgICAgR05CQ1VDUEZ1bmN0aW9uOjpwTE1OSWQgaXMgdXNlZCBmb3IgUExNTiBJRCBpbiBOUiBDR0kiOwogICAgICAgICAgICAgICAgdXNlcyB0eXBlczNncHA6UExNTklkOwogICAgICAgICAgICB9CgogICAgICAgICAgICBsZWFmIG5DSSB7CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiTlIgQ2VsbCBJZGVudGl0eSI7CiAgICAgICAgICAgICAgICB0eXBlIGludDY0OwogICAgICAgICAgICB9CgogICAgICAgICAgICBsZWFmIG5SVEFDIHsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJOUiBUcmFja2luZyBBcmVhIENvZGUgKFRBQykiOwogICAgICAgICAgICAgICAgdHlwZSBpbnQzMjsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBsaXN0IE5SQ2VsbERVIHsKICAgICAgICBkZXNjcmlwdGlvbiAiUmVwcmVzZW50cyBhbiBOUiBDZWxsIGluIGdOb2RlQi1EVS4KCiAgICAgICAgICAgIDVHIE5SIGlzIGEgbmV3IHJhZGlvIGFjY2VzcyB0ZWNobm9sb2d5IChSQVQpIGRldmVsb3BlZCBieSAzR1BQIGZvcgogICAgICAgICAgICB0aGUgNUcgKGZpZnRoIGdlbmVyYXRpb24pIG1vYmlsZSBuZXR3b3JrLiBJdCBpcyBkZXNpZ25lZCB0byBiZSB0aGUKICAgICAgICAgICAgZ2xvYmFsIHN0YW5kYXJkIGZvciB0aGUgYWlyIGludGVyZmFjZSBvZiA1RyBuZXR3b3Jrcy4KCiAgICAgICAgICAgIDVHIE5SIGhhcyBzeW5jaHJvbml6YXRpb24gc2lnbmFsIHRoYXQgaXMga25vd24gYXMgUHJpbWFyeQogICAgICAgICAgICBTeW5jaHJvbml6YXRpb24gc2lnbmFsIChQU1MpIGFuZCBTZWNvbmRhcnkgU3luY2hyb25pemF0aW9uIHNpZ25hbAogICAgICAgICAgICAoU1NTKS4gVGhlc2Ugc2lnbmFscyBhcmUgc3BlY2lmaWMgdG8gTlIgcGh5c2ljYWwgbGF5ZXIgYW5kIHByb3ZpZGUKICAgICAgICAgICAgdGhlIGZvbGxvd2luZyBpbmZvcm1hdGlvbiByZXF1aXJlZCBieSBVRSBmb3IgZG93bmxpbmsKICAgICAgICAgICAgc3luY2hyb25pemF0aW9uOiBQU1MgcHJvdmlkZXMgUmFkaW8gRnJhbWUgQm91bmRhcnkgKFBvc2l0aW9uIG9mIDFzdAogICAgICAgICAgICBTeW1ib2wgaW4gYSBSYWRpbyBmcmFtZSkgU1NTIHByb3ZpZGVzIFN1YmZyYW1lIEJvdW5kYXJ5IChQb3NpdGlvbiBvZgogICAgICAgICAgICAxc3QgU3ltYm9sIGluIGEgU3ViZnJhbWUpIFBoeXNpY2FsIExheWVyIENlbGwgSUQgKFBDSSkgaW5mb3JtYXRpb24KICAgICAgICAgICAgdXNpbmcgYm90aCBQU1MgYW5kIFNTUy4iOwoKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6VG9wX0dycF9UeXBlOwogICAgICAgIGtleSBpZDsKCiAgICAgICAgY29udGFpbmVyIGF0dHJpYnV0ZXMgewogICAgICAgICAgICBsZWFmIGNlbGxMb2NhbElkIHsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJVc2VkIHRvZ2V0aGVyIHdpdGggZ05vZGVCIGlkZW50aWZpZXIgdG8gaWRlbnRpZnkgTlIKICAgICAgICAgICAgICAgICAgICBjZWxsIGluIFBMTU4uIFVzZWQgdG9nZXRoZXIgd2l0aCBnTkJJZCB0byBmb3JtIE5DSS4iOwogICAgICAgICAgICAgICAgdHlwZSBpbnQzMjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbGVhZiBuQ0kgewogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIk5SIENlbGwgSWRlbnRpdHkuIjsKICAgICAgICAgICAgICAgIHR5cGUgaW50NjQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGxlYWYgblJQQ0kgewogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIlRoZSBQaHlzaWNhbCBDZWxsIElkZW50aXR5IChQQ0kpIG9mIHRoZSBOUiBjZWxsLiI7CiAgICAgICAgICAgICAgICB0eXBlIGludDMyOwogICAgICAgICAgICB9CgogICAgICAgICAgICBsZWFmIG5SVEFDIHsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJOUiBUcmFja2luZyBBcmVhIENvZGUgKFRBQykuIjsKICAgICAgICAgICAgICAgIHR5cGUgaW50MzI7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgbGlzdCBFTm9kZUJGdW5jdGlvbiB7CiAgICAgICAgZGVzY3JpcHRpb24gIkFuIEV2b2x2ZWQgTm9kZSBCIChlTm9kZUIpIGlzIHRoZSBvbmx5IG1hbmRhdG9yeSBub2RlIGluCiAgICAgICAgICAgIHRoZSByYWRpbyBhY2Nlc3MgbmV0d29yayAoUkFOKSBvZiBMb25nLVRlcm0gRXZvbHV0aW9uIChMVEUpLiBUaGUKICAgICAgICAgICAgZU5vZGVCIGlzIGEgY29tcGxleCBiYXNlIHN0YXRpb24gdGhhdCBoYW5kbGVzIHJhZGlvIGNvbW11bmljYXRpb25zCiAgICAgICAgICAgIGluIHRoZSBjZWxsIGFuZCBjYXJyaWVzIG91dCByYWRpbyByZXNvdXJjZSBtYW5hZ2VtZW50IGFuZCBoYW5kb3ZlcgogICAgICAgICAgICBkZWNpc2lvbnMuIFVubGlrZSAyLzNHIHdpcmVsZXNzIFJBTiwgdGhlcmUgaXMgbm8gY2VudHJhbGl6ZWQgcmFkaW8KICAgICAgICAgICAgbmV0d29yayBjb250cm9sbGVyIGluIExURS4gSXQgaXMgdGhlIGhhcmR3YXJlIHRoYXQgaXMgY29ubmVjdGVkIHRvCiAgICAgICAgICAgIHRoZSBtb2JpbGUgcGhvbmUgbmV0d29yayB0aGF0IGNvbW11bmljYXRlcyBkaXJlY3RseSB3aXRoIG1vYmlsZQogICAgICAgICAgICBoYW5kc2V0cyAoVXNlciBFcXVpcG1lbnQpLCBsaWtlIGEgYmFzZSB0cmFuc2NlaXZlciBzdGF0aW9uIChCVFMpIGluCiAgICAgICAgICAgIEdTTSBuZXR3b3Jrcy4gVGhpcyBzaW1wbGlmaWVzIHRoZSBhcmNoaXRlY3R1cmUgYW5kIGFsbG93cyBsb3dlcgogICAgICAgICAgICByZXNwb25zZSB0aW1lcy4iOwoKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6VG9wX0dycF9UeXBlOwogICAgICAgIGtleSBpZDsKCiAgICAgICAgY29udGFpbmVyIGF0dHJpYnV0ZXMgewogICAgICAgICAgICBsZWFmIGVOQklkIHsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJUaGUgRU5vZGVCIElEIHRoYXQgZm9ybXMgcGFydCBvZiB0aGUgQ2VsbCBHbG9iYWwKICAgICAgICAgICAgICAgICAgICBJZGVudGl0eSwgYW5kIGlzIGFsc28gdXNlZCB0byBpZGVudGlmeSB0aGUgbm9kZSBvdmVyIHRoZSBTMQogICAgICAgICAgICAgICAgICAgIGludGVyZmFjZSI7CiAgICAgICAgICAgICAgICB0eXBlIGludDMyOwogICAgICAgICAgICB9CgogICAgICAgICAgICBjb250YWluZXIgZU5vZGVCUGxtbklkIHsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJUaGUgRU5vZGVCIFB1YmxpYyBMYW5kIE1vYmlsZSBOZXR3b3JrIChQTE1OKSBJRAogICAgICAgICAgICAgICAgICAgIHRoYXQgZm9ybXMgcGFydCBvZiB0aGUgRU5vZGVCIEdsb2JhbCBJRCB1c2VkIHRvIGlkZW50aWZ5IHRoZQogICAgICAgICAgICAgICAgICAgIG5vZGUgb3ZlciB0aGUgUzEgaW50ZXJmYWNlLiBOb3RlOiBUaGUgdmFsdWUKICAgICAgICAgICAgICAgICAgICAoTUNDPTAwMSwgTU5DPTAxKSBpbmRpY2F0ZXMgdGhhdCB0aGUgUExNTiBpcyBub3QgaW5pdGlhdGVkLgogICAgICAgICAgICAgICAgICAgIFRoZSB2YWx1ZSBjYW4gbm90IGJlIHVzZWQgYXMgYSB2YWxpZCBQTE1OIElkZW50aXR5LiI7CgogICAgICAgICAgICAgICAgbGVhZiBtY2MgewogICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJUaGUgTUNDIHBhcnQgb2YgYSBQTE1OIGlkZW50aXR5IHVzZWQgaW4gdGhlCiAgICAgICAgICAgICAgICAgICAgICAgIHJhZGlvIG5ldHdvcmsuIjsKICAgICAgICAgICAgICAgICAgICB0eXBlIGludDMyIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmFuZ2UgMC4uOTk5OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGxlYWYgbW5jIHsKICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiVGhlIE1OQyBwYXJ0IG9mIGEgUExNTiBpZGVudGl0eSB1c2VkIGluIHRoZQogICAgICAgICAgICAgICAgICAgICAgICByYWRpbyBuZXR3b3JrLiI7CiAgICAgICAgICAgICAgICAgICAgdHlwZSBpbnQzMiB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJhbmdlIDAuLjk5OTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBsZWFmIG1uY0xlbmd0aCB7CiAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIlRoZSBsZW5ndGggb2YgdGhlIE1OQyBwYXJ0IG9mIGEgUExNTiBpZGVudGl0eQogICAgICAgICAgICAgICAgICAgICAgICB1c2VkIGluIHRoZSByYWRpbyBuZXR3b3JrLiI7CiAgICAgICAgICAgICAgICAgICAgdHlwZSBpbnQzMiB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJhbmdlIDIuLjM7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIGxpc3QgRVV0cmFuQ2VsbCB7CiAgICAgICAgZGVzY3JpcHRpb24gIlJlcHJlc2VudHMgYW4gRkREIG9yIFRERCBFVXRyYW5DZWxsIGFuZAogICAgICAgICAgICAgICAgICAgIGNvbnRhaW5zIHBhcmFtZXRlcnMgbmVlZGVkIGJ5IHRoZSBjZWxsLgogICAgICAgICAgICAgICAgICAgIEl0IGFsc28gY29udGFpbnMgcGFyYW1ldGVycyBmb3IgdGhlCiAgICAgICAgICAgICAgICAgICAgbWFuZGF0b3J5IGNvbW1vbiBjaGFubmVscy4gQW4gRVVUUkFOIHN0YW5kcwogICAgICAgICAgICAgICAgICAgIGZvciBFdm9sdmVkIFVuaXZlcnNhbCBNb2JpbGUgVGVsZWNvbW11bmljYXRpb25zCiAgICAgICAgICAgICAgICAgICAgU3lzdGVtIChVTVRTKSBUZXJyZXN0cmlhbCBSYWRpbyBBY2Nlc3MgTmV0d29yawogICAgICAgICAgICAgICAgICAgIHdoaWNoIGNvbnRhaW5zIGFuIGVOb2RlQi4gVGhlIGVOb2RlQiBjb25jcmV0ZQogICAgICAgICAgICAgICAgICAgIGNsYXNzIGlzIGV4dGVuZGVkIGZyb20gdGhlIEVVVFJBTiBOb2RlIGFic3RyYWN0IGNsYXNzLiI7CgogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICAgICAga2V5IGlkOwoKICAgICAgICBjb250YWluZXIgYXR0cmlidXRlcyB7CiAgICAgICAgICAgIGxlYWYgY2VsbElkewogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIlJCUyBpbnRlcm5hbCBJRCBhdHRyaWJ1dGUgZm9yIEVVdHJhbkNlbGwuIE11c3QgYmUKICAgICAgICAgICAgICAgICAgICB1bmlxdWUgaW4gdGhlIFJCUy4gVG9nZXRoZXIgd2l0aCB0aGUgTm9kZSBJRCBhbmQgUHVibGljCiAgICAgICAgICAgICAgICAgICAgTGFuZCBNb2JpbGUgTmV0d29yayAoUExNTikgdGhpcyBpcyBhIHVuaXZlcnNhbGx5IHVuaXF1ZQogICAgICAgICAgICAgICAgICAgIGNlbGwgSUQiOwogICAgICAgICAgICAgICAgdHlwZSBpbnQzMjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbGVhZiBlYXJmY25kbCB7CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiVGhlIGNoYW5uZWwgbnVtYmVyIGZvciB0aGUgY2VudHJhbCBkb3dubGluawogICAgICAgICAgICAgICAgICAgIGZyZXF1ZW5jeS4iOwogICAgICAgICAgICAgICAgdHlwZSBpbnQzMjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbGVhZiBlYXJmY251bCB7CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiQ2hhbm5lbCBudW1iZXIgZm9yIHRoZSBjZW50cmFsIHVwbGluayBmcmVxdWVuY3kiOwogICAgICAgICAgICAgICAgdHlwZSBpbnQzMjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbGVhZiBkbENoYW5uZWxCYW5kd2lkdGggewogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIlRoZSBkb3dubGluayBjaGFubmVsIGJhbmR3aWR0aCBpbiB0aGUgRkREIGNlbGwuIjsKICAgICAgICAgICAgICAgIHR5cGUgaW50MzI7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGxlYWYgZWFyZmNuIHsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJUaGUgRS1VVFJBIEFic29sdXRlIFJhZGlvIEZyZXF1ZW5jeSBDaGFubmVsIE51bWJlcgogICAgICAgICAgICAgICAgICAgIChFQVJGQ04pIGZvciB0aGUgVEREIGNlbGwiOwogICAgICAgICAgICAgICAgdHlwZSBpbnQzMjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbGVhZiBjaGFubmVsQmFuZHdpZHRoIHsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJUaGUgY2hhbm5lbCBiYW5kd2lkdGggaW4gdGhlIFRERCBjZWxsLiI7CiAgICAgICAgICAgICAgICB0eXBlIGludDMyOwogICAgICAgICAgICB9CgogICAgICAgICAgICBsZWFmIHRhYyB7CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiVHJhY2tpbmcgQXJlYSBDb2RlIGZvciB0aGUgRVV0cmFuIENlbGwiOwogICAgICAgICAgICAgICAgdHlwZSBpbnQzMjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbGVhZiBkdXBsZXhUeXBlIHsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJJbmRpY2F0b3Igb2YgRVV0cmFuQ2VsbCB0eXBlLCBGREQgb3IgVEREIjsKICAgICAgICAgICAgICAgIHR5cGUgZW51bWVyYXRpb24gewogICAgICAgICAgICAgICAgICAgIGVudW0gZmRkIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgMDsKICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIkZERCI7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVudW0gdGRkIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgMTsKICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIlRERCI7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIGxpc3QgTlJTZWN0b3JDYXJyaWVyIHsKICAgICAgICBkZXNjcmlwdGlvbiAiVGhlIE5SIFNlY3RvciBDYXJyaWVyIG9iamVjdCBwcm92aWRlcyB0aGUgYXR0cmlidXRlcyBmb3IKICAgICAgICAgICAgZGVmaW5pbmcgdGhlIGxvZ2ljYWwgY2hhcmFjdGVyaXN0aWNzIG9mIGEgY2FycmllciAoY2VsbCkgaW4gYQogICAgICAgICAgICBzZWN0b3IuIEEgc2VjdG9yIGlzIGEgY292ZXJhZ2UgYXJlYSBhc3NvY2lhdGVkIHdpdGggYSBiYXNlIHN0YXRpb24KICAgICAgICAgICAgaGF2aW5nIGl0cyBvd24gYW50ZW5uYXMsIHJhZGlvIHBvcnRzLCBhbmQgY29udHJvbCBjaGFubmVscy4gVGhlCiAgICAgICAgICAgIGNvbmNlcHQgb2Ygc2VjdG9ycyB3YXMgZGV2ZWxvcGVkIHRvIGltcHJvdmUgY28tY2hhbm5lbCBpbnRlcmZlcmVuY2UKICAgICAgICAgICAgaW4gY2VsbHVsYXIgc3lzdGVtcywgYW5kIG1vc3Qgd2lyZWxlc3Mgc3lzdGVtcyB1c2UgdGhyZWUgc2VjdG9yCiAgICAgICAgICAgIGNlbGxzLiI7CgogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICAgICAga2V5IGlkOwoKICAgICAgICBjb250YWluZXIgYXR0cmlidXRlcyB7CiAgICAgICAgICAgIGxlYWYgYXJmY25ETCB7CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiTlIgQWJzb2x1dGUgUmFkaW8gRnJlcXVlbmN5IENoYW5uZWwgTnVtYmVyCiAgICAgICAgICAgICAgICAgICAgKE5SLUFSRkNOKSBmb3IgZG93bmxpbmsiOwogICAgICAgICAgICAgICAgdHlwZSBpbnQzMjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbGVhZiBhcmZjblVMIHsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJOUiBBYnNvbHV0ZSBSYWRpbyBmcmVxdWVuY3kgQ2hhbm5lbCBOdW1iZXIKICAgICAgICAgICAgICAgICAgICAoTlItQVJGQ04pIGZvciB1cGxpbmsuIjsKICAgICAgICAgICAgICAgIHR5cGUgaW50MzI7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGxlYWYgZnJlcXVlbmN5REwgewogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIlJGIFJlZmVyZW5jZSBGcmVxdWVuY3kgb2YgZG93bmxpbmsgY2hhbm5lbCI7CiAgICAgICAgICAgICAgICB0eXBlIGludDMyOwogICAgICAgICAgICB9CgogICAgICAgICAgICBsZWFmIGZyZXF1ZW5jeVVMIHsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJSRiBSZWZlcmVuY2UgRnJlcXVlbmN5IG9mIHVwbGluayBjaGFubmVsIjsKICAgICAgICAgICAgICAgIHR5cGUgaW50MzI7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGxlYWYgYlNDaGFubmVsQndETCB7CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiQlMgQ2hhbm5lbCBiYW5kd2lkdGggaW4gTUh6IGZvciBkb3dubGluay4iOwogICAgICAgICAgICAgICAgdHlwZSBpbnQzMjsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBsaXN0IExURVNlY3RvckNhcnJpZXIgewogICAgICAgIGRlc2NyaXB0aW9uICJUaGUgTFRFIFNlY3RvciBDYXJyaWVyIG9iamVjdCBwcm92aWRlcyB0aGUgYXR0cmlidXRlcyBmb3IKICAgICAgICAgICAgZGVmaW5pbmcgdGhlIGxvZ2ljYWwgY2hhcmFjdGVyaXN0aWNzIG9mIGEgY2FycmllciAoY2VsbCkgaW4gYQogICAgICAgICAgICBzZWN0b3IuIEEgc2VjdG9yIGlzIGEgY292ZXJhZ2UgYXJlYSBhc3NvY2lhdGVkIHdpdGggYSBiYXNlIHN0YXRpb24KICAgICAgICAgICAgaGF2aW5nIGl0cyBvd24gYW50ZW5uYXMsIHJhZGlvIHBvcnRzLCBhbmQgY29udHJvbCBjaGFubmVscy4gVGhlCiAgICAgICAgICAgIGNvbmNlcHQgb2Ygc2VjdG9ycyB3YXMgZGV2ZWxvcGVkIHRvIGltcHJvdmUgY28tY2hhbm5lbCBpbnRlcmZlcmVuY2UKICAgICAgICAgICAgaW4gY2VsbHVsYXIgc3lzdGVtcywgYW5kIG1vc3Qgd2lyZWxlc3Mgc3lzdGVtcyB1c2UgdGhyZWUgc2VjdG9yCiAgICAgICAgICAgIGNlbGxzLiI7CgogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICAgICAga2V5IGlkOwoKICAgICAgICBjb250YWluZXIgYXR0cmlidXRlcyB7CiAgICAgICAgICAgIGxlYWYgc2VjdG9yQ2FycmllclR5cGUgewogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIkluZGljYXRlcyB3aGV0aGVyIG9yIG5vdCB0aGUgc2VjdG9yIGNhcnJpZXIKICAgICAgICAgICAgICAgICAgICBtb2RlbGxlZCBieSBNTyBTZWN0b3JDYXJyaWVyIGlzIGEgZGlnaXRhbCBzZWN0b3IuIjsKICAgICAgICAgICAgICAgIHR5cGUgZW51bWVyYXRpb24gewogICAgICAgICAgICAgICAgICAgIGVudW0gbm9ybWFsX3NlY3RvciB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlIDA7CiAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJOb3QgYSBkaWdpdGFsIHNlY3RvciI7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVudW0gbGVmdF9kaWdpdGFsX3NlY3RvciB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlIDE7CiAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJMZWZ0IGRpZ2l0YWwgc2VjdG9yIGZvciAyRFMiOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbnVtIHJpZ2h0X2RpZ2l0YWxfc2VjdG9yIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgMjsKICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIlJpZ2h0IGRpZ2l0YWwgc2VjdG9yIGZvciAyRFMiOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbnVtIGxlZnRfZGlnaXRhbF9zZWN0b3JfM2RzIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgMzsKICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIkxlZnQgZGlnaXRhbCBzZWN0b3IgZm9yIDNEUyI7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVudW0gcmlnaHRfZGlnaXRhbF9zZWN0b3JfM2RzIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgNDsKICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIlJpZ2h0IGRpZ2l0YWwgc2VjdG9yIGZvciAzRFMiOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbnVtIG1pZGRsZV9kaWdpdGFsX3NlY3Rvcl8zZHMgewogICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA1OwogICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiTWlkZGxlIGRpZ2l0YWwgc2VjdG9yIGZvciAzRFMiOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBsaXN0IEFudGVubmFDYXBhYmlsaXR5IHsKICAgICAgICBkZXNjcmlwdGlvbiAiVGhpcyBNTyBzZXJ2ZXMgYXMgYSBtYXBwaW5nIGJldHdlZW4gdGhlIGNlbGwgYW5kIHRoZSBSQlMKICAgICAgICAgICAgZXF1aXBtZW50IHVzZWQgdG8gcHJvdmlkZSBjb3ZlcmFnZSBpbiBhIGNlcnRhaW4gZ2VvZ3JhcGhpY2FsIGFyZWEuCiAgICAgICAgICAgIFRoZSBNTyBhbHNvIGNvbnRyb2xzIHRoZSBtYXhpbXVtIG91dHB1dCBwb3dlciBvZiB0aGUgc2VjdG9yLiI7CgogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICAgICAga2V5IGlkOwoKICAgICAgICBjb250YWluZXIgYXR0cmlidXRlcyB7CiAgICAgICAgICAgIGxlYWYtbGlzdCBlVXRyYW5GcUJhbmRzIHsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJMaXN0IG9mIExURSBmcmVxdWVuY3kgYmFuZHMgdGhhdCBhc3NvY2lhdGVkCiAgICAgICAgICAgICAgICAgICAgaGFyZHdhcmUgc3VwcG9ydHMiOwogICAgICAgICAgICAgICAgdHlwZSBzdHJpbmc7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGxlYWYtbGlzdCBnZXJhbkZxQmFuZHMgewogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIkxpc3Qgb2YgR0VSQU4gZnJlcXVlbmN5IGJhbmRzIHRoYXQgYXNzb2NpYXRlZAogICAgICAgICAgICAgICAgICAgIGhhcmR3YXJlIHN1cHBvcnRzIjsKICAgICAgICAgICAgICAgIHR5cGUgc3RyaW5nOwogICAgICAgICAgICB9CgogICAgICAgICAgICBsZWFmLWxpc3QgblJGcUJhbmRzIHsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJMaXN0IG9mIE5SIGZyZXF1ZW5jeSBiYW5kcyBhc3NvY2lhdGVkIGhhcmR3YXJlCiAgICAgICAgICAgICAgICAgICAgc3VwcG9ydHMiOwogICAgICAgICAgICAgICAgdHlwZSBzdHJpbmc7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgbGlzdCBTZWN0b3IgewogICAgICAgIGRlc2NyaXB0aW9uICJBIGdyb3VwIG9mIGNvLWxvY2F0ZWQgQ2VsbHMgdGhhdCBoYXZlIGEgc2hhcmVkCiAgICAgICAgICAgIGNvdmVyYWdlIGFyZWEuIjsKCiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOlRvcF9HcnBfVHlwZTsKICAgICAgICBrZXkgaWQ7CgogICAgICAgIGNvbnRhaW5lciBhdHRyaWJ1dGVzIHsKICAgICAgICAgICAgbGVhZiBzZWN0b3JJZCB7CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiVW5pdmVyc2FsbHkgdW5pcXVlIElEIGdlbmVyYXRlZCBieSB0aGUgc2VjdG9yJ3MKICAgICAgICAgICAgICAgICAgICBkaXNjb3ZlcnkgbWVjaGFuaXNtLiI7CiAgICAgICAgICAgICAgICB0eXBlIHVpbnQ2NDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgdXNlcyBnZW86Z2VvLWxvY2F0aW9uOwoKICAgICAgICAgICAgbGVhZiBhemltdXRoIHsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJBdmVyYWdlIHZhbHVlIG9mIHRoZSBhemltdXRocyBvZiB0aGUgY2VsbHMKICAgICAgICAgICAgICAgICAgICBjb21wcmlzaW5nIHRoZSBzZWN0b3IsIGRldGVybWluZWQgZHVyaW5nIHNlY3RvciBkaXNjb3ZlcnkuIjsKICAgICAgICAgICAgICAgIHR5cGUgZGVjaW1hbDY0ewogICAgICAgICAgICAgICAgICAgIGZyYWN0aW9uLWRpZ2l0cyA2OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgdW5pdHMgImRlZ3JlZXMiOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKCiAgICBvci10ZWl2LXlleHQ6YmlEaXJlY3Rpb25hbFRvcG9sb2d5UmVsYXRpb25zaGlwIEVOT0RFQkZVTkNUSU9OX1BST1ZJREVTX0VVVFJBTkNFTEwgeyAvLyAxIHRvIDAuLm4KCiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOlRvcF9HcnBfVHlwZTsKICAgICAgICBrZXkgaWQ7CgogICAgICAgIGxlYWYtbGlzdCBwcm92aWRlZC1ldVRyYW5DZWxsIHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gImVOb2RlQiBGdW5jdGlvbiBwcm92aWRlcyBFVVRSQU4gQ2VsbC4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YVNpZGUgRU5vZGVCRnVuY3Rpb247CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICB9CgogICAgICAgIGxlYWYgcHJvdmlkZWQtYnktZW5vZGViRnVuY3Rpb24gewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiRVVUUkFOIENlbGwgcHJvdmlkZWQgYnkgZU5vZGVCIEZ1bmN0aW9uLiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDpiU2lkZSBFVXRyYW5DZWxsOwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgICAgIG1hbmRhdG9yeSB0cnVlOwogICAgICAgIH0KICAgIH0KCiAgICBvci10ZWl2LXlleHQ6YmlEaXJlY3Rpb25hbFRvcG9sb2d5UmVsYXRpb25zaGlwIEVOT0RFQkZVTkNUSU9OX1BST1ZJREVTX0xURVNFQ1RPUkNBUlJJRVIgeyAvLyAxIHRvIDAuLm4KCiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOlRvcF9HcnBfVHlwZTsKICAgICAgICBrZXkgaWQ7CgogICAgICAgIGxlYWYtbGlzdCBwcm92aWRlZC1sdGVTZWN0b3JDYXJyaWVyIHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gImVOb2RlQiBGdW5jdGlvbiBwcm92aWRlcyBMVEUgU2VjdG9yIENhcnJpZXIuIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmFTaWRlIEVOb2RlQkZ1bmN0aW9uOwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgfQoKICAgICAgICBsZWFmIHByb3ZpZGVkLWJ5LWVub2RlYkZ1bmN0aW9uIHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIkxURSBTZWN0b3IgQ2FycmllciBwcm92aWRlZCBieSBlTm9kZUIgRnVuY3Rpb24uIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmJTaWRlIExURVNlY3RvckNhcnJpZXI7CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICAgICAgbWFuZGF0b3J5IHRydWU7CiAgICAgICAgfQogICAgfQoKICAgIG9yLXRlaXYteWV4dDpiaURpcmVjdGlvbmFsVG9wb2xvZ3lSZWxhdGlvbnNoaXAgR05CRFVGVU5DVElPTl9QUk9WSURFU19OUkNFTExEVSB7IC8vIDEgdG8gMC4ubgoKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6VG9wX0dycF9UeXBlOwogICAgICAgIGtleSBpZDsKCiAgICAgICAgbGVhZi1saXN0IHByb3ZpZGVkLW5yQ2VsbER1IHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gImdOb2RlQi1EVSBGdW5jdGlvbiBwcm92aWRlcyBOUiBDZWxsLURVLiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDphU2lkZSBHTkJEVUZ1bmN0aW9uOwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgfQoKICAgICAgICBsZWFmIHByb3ZpZGVkLWJ5LWduYmR1RnVuY3Rpb24gewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiTlIgQ2VsbC1EVSBwcm92aWRlZCBieSBnTm9kZUItRFUgRnVuY3Rpb24uIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmJTaWRlIE5SQ2VsbERVOwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgICAgIG1hbmRhdG9yeSB0cnVlOwogICAgICAgIH0KICAgIH0KCiAgICBvci10ZWl2LXlleHQ6YmlEaXJlY3Rpb25hbFRvcG9sb2d5UmVsYXRpb25zaGlwIEdOQkRVRlVOQ1RJT05fUFJPVklERVNfTlJTRUNUT1JDQVJSSUVSIHsgLy8gMSB0byAwLi5uCgogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICAgICAga2V5IGlkOwoKICAgICAgICBsZWFmLWxpc3QgcHJvdmlkZWQtbnJTZWN0b3JDYXJyaWVyIHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gImdOb2RlQi1EVSBGdW5jdGlvbiBwcm92aWRlcyBOUiBTZWN0b3IgQ2Fycmllci4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YVNpZGUgR05CRFVGdW5jdGlvbjsKICAgICAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgIH0KCiAgICAgICAgbGVhZiBwcm92aWRlZC1ieS1nbmJkdUZ1bmN0aW9uIHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIk5SIFNlY3RvciBDYXJyaWVyIHByb3ZpZGVkIGJ5IGdOb2RlQi1EVSBGdW5jdGlvbi4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YlNpZGUgTlJTZWN0b3JDYXJyaWVyOwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgICAgIG1hbmRhdG9yeSB0cnVlOwogICAgICAgIH0KICAgIH0KCiAgICBvci10ZWl2LXlleHQ6YmlEaXJlY3Rpb25hbFRvcG9sb2d5UmVsYXRpb25zaGlwIEdOQkNVQ1BGVU5DVElPTl9QUk9WSURFU19OUkNFTExDVSB7IC8vIDEgdG8gMC4ubgoKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6VG9wX0dycF9UeXBlOwogICAgICAgIGtleSBpZDsKCiAgICAgICAgbGVhZi1saXN0IHByb3ZpZGVkLW5yQ2VsbEN1IHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gImdOb2RlQi1DVUNQIEZ1bmN0aW9uIHByb3ZpZGVzIE5SIENlbGwtQ1UuIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmFTaWRlIEdOQkNVQ1BGdW5jdGlvbjsKICAgICAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgIH0KCiAgICAgICAgbGVhZiBwcm92aWRlZC1ieS1nbmJjdWNwRnVuY3Rpb24gewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiTlIgQ2VsbC1DVSBwcm92aWRlZCBieSBnTm9kZUItQ1VDUCBGdW5jdGlvbi4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YlNpZGUgTlJDZWxsQ1U7CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICAgICAgbWFuZGF0b3J5IHRydWU7CiAgICAgICAgfQogICAgfQoKICAgIG9yLXRlaXYteWV4dDpiaURpcmVjdGlvbmFsVG9wb2xvZ3lSZWxhdGlvbnNoaXAgRVVUUkFOQ0VMTF9VU0VTX0xURVNFQ1RPUkNBUlJJRVIgeyAvLyAwLi4xIHRvIDAuLm4KCiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOlRvcF9HcnBfVHlwZTsKICAgICAgICBrZXkgaWQ7CgogICAgICAgIGxlYWYtbGlzdCB1c2VkLWx0ZVNlY3RvckNhcnJpZXIgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiRVVUUkFOIENlbGwgdXNlcyBMVEUgU2VjdG9yIENhcnJpZXIuIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmFTaWRlIEVVdHJhbkNlbGw7CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICB9CgogICAgICAgIGxlYWYgdXNlZC1ieS1ldVRyYW5DZWxsIHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIkxURSBTZWN0b3IgQ2FycmllciB1c2VkIGJ5IEVVVFJBTiBDZWxsLiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDpiU2lkZSBMVEVTZWN0b3JDYXJyaWVyOwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgfQogICAgfQoKICAgIG9yLXRlaXYteWV4dDpiaURpcmVjdGlvbmFsVG9wb2xvZ3lSZWxhdGlvbnNoaXAgTFRFU0VDVE9SQ0FSUklFUl9VU0VTX0FOVEVOTkFDQVBBQklMSVRZIHsgLy8gMC4ubiB0byAwLi4xCgogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICAgICAga2V5IGlkOwoKICAgICAgICBsZWFmIHVzZWQtYW50ZW5uYUNhcGFiaWxpdHkgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiTFRFIFNlY3RvciBDYXJyaWVyIHVzZXMgQW50ZW5uYSBDYXBhYmlsaXR5LiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDphU2lkZSBMVEVTZWN0b3JDYXJyaWVyOwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgfQoKICAgICAgICBsZWFmLWxpc3QgdXNlZC1ieS1sdGVTZWN0b3JDYXJyaWVyIHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIkFudGVubmEgQ2FwYWJpbGl0eSB1c2VkIGJ5IExURSBTZWN0b3IgQ2Fycmllci4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YlNpZGUgQW50ZW5uYUNhcGFiaWxpdHk7CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICB9CiAgICB9CgogICAgb3ItdGVpdi15ZXh0OmJpRGlyZWN0aW9uYWxUb3BvbG9neVJlbGF0aW9uc2hpcCBOUkNFTExEVV9VU0VTX05SU0VDVE9SQ0FSUklFUiB7IC8vIDAuLjEgdG8gMC4ubgoKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6VG9wX0dycF9UeXBlOwogICAgICAgIGtleSBpZDsKCiAgICAgICAgbGVhZi1saXN0IHVzZWQtbnJTZWN0b3JDYXJyaWVyIHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIk5SIENlbGwtRFUgdXNlcyBOUiBTZWN0b3IgQ2Fycmllci4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YVNpZGUgTlJDZWxsRFU7CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICB9CgogICAgICAgIGxlYWYgdXNlZC1ieS1uckNlbGxEdSB7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJOUiBTZWN0b3IgQ2FycmllciB1c2VkIGJ5IE5SIENlbGwtRFUuIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmJTaWRlIE5SU2VjdG9yQ2FycmllcjsKICAgICAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgIH0KICAgIH0KCiAgICBvci10ZWl2LXlleHQ6YmlEaXJlY3Rpb25hbFRvcG9sb2d5UmVsYXRpb25zaGlwIE5SU0VDVE9SQ0FSUklFUl9VU0VTX0FOVEVOTkFDQVBBQklMSVRZIHsgLy8gMC4ubiB0byAwLi4xCgogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICAgICAga2V5IGlkOwoKICAgICAgICBsZWFmIHVzZWQtYW50ZW5uYUNhcGFiaWxpdHkgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiTlIgU2VjdG9yIENhcnJpZXIgdXNlcyBBbnRlbm5hIENhcGFiaWxpdHkuIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmFTaWRlIE5SU2VjdG9yQ2FycmllcjsKICAgICAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgIH0KCiAgICAgICAgbGVhZi1saXN0IHVzZWQtYnktbnJTZWN0b3JDYXJyaWVyIHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIkFudGVubmEgQ2FwYWJpbGl0eSB1c2VkIGJ5IE5SIFNlY3RvciBDYXJyaWVyLiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDpiU2lkZSBBbnRlbm5hQ2FwYWJpbGl0eTsKICAgICAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgIH0KICAgIH0KCiAgICBvci10ZWl2LXlleHQ6YmlEaXJlY3Rpb25hbFRvcG9sb2d5UmVsYXRpb25zaGlwIFNFQ1RPUl9HUk9VUFNfTlJDRUxMRFUgeyAvLyAwLi4xIHRvIDAuLm4KCiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOlRvcF9HcnBfVHlwZTsKICAgICAgICBrZXkgaWQ7CgogICAgICAgIGxlYWYtbGlzdCBncm91cGVkLW5yQ2VsbER1IHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIlNlY3RvciBncm91cHMgTlIgQ2VsbC1EVS4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YVNpZGUgU2VjdG9yOwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgfQoKICAgICAgICBsZWFmIGdyb3VwZWQtYnktc2VjdG9yIHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIk5SIENlbGwtRFUgZ3JvdXBlZCBieSBTZWN0b3IuIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmJTaWRlIE5SQ2VsbERVOwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgfQogICAgfQoKICAgIG9yLXRlaXYteWV4dDpiaURpcmVjdGlvbmFsVG9wb2xvZ3lSZWxhdGlvbnNoaXAgU0VDVE9SX0dST1VQU19FVVRSQU5DRUxMIHsgLy8gMC4uMSB0byAwLi5uCgogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICAgICAga2V5IGlkOwoKICAgICAgICBsZWFmLWxpc3QgZ3JvdXBlZC1ldVRyYW5DZWxsIHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIlNlY3RvciBncm91cHMgRVVUUkFOIENlbGwuIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmFTaWRlIFNlY3RvcjsKICAgICAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgIH0KCiAgICAgICAgbGVhZiBncm91cGVkLWJ5LXNlY3RvciB7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJFVVRSQU4gQ2VsbCBncm91cGVkIGJ5IFNlY3Rvci4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YlNpZGUgRVV0cmFuQ2VsbDsKICAgICAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgIH0KICAgIH0KfQ==    BUILT_IN_MODULE IN_USAGE
+o-ran-smo-teiv-rel-equipment-ran       urn:o-ran:smo-teiv-rel-equipment-ran    REL_EQUIPMENT_RAN       ["o-ran-smo-teiv-equipment", "o-ran-smo-teiv-ran"]      2024-05-24      bW9kdWxlIG8tcmFuLXNtby10ZWl2LXJlbC1lcXVpcG1lbnQtcmFuIHsKICAgIHlhbmctdmVyc2lvbiAxLjE7CiAgICBuYW1lc3BhY2UgInVybjpvLXJhbjpzbW8tdGVpdi1yZWwtZXF1aXBtZW50LXJhbiI7CiAgICBwcmVmaXggb3ItdGVpdi1yZWwtZXF1aXByYW47CgogICAgaW1wb3J0IG8tcmFuLXNtby10ZWl2LWNvbW1vbi15YW5nLXR5cGVzIHsgcHJlZml4IG9yLXRlaXYtdHlwZXM7IH0KCiAgICBpbXBvcnQgby1yYW4tc21vLXRlaXYtY29tbW9uLXlhbmctZXh0ZW5zaW9ucyB7IHByZWZpeCBvci10ZWl2LXlleHQ7IH0KCiAgICBpbXBvcnQgby1yYW4tc21vLXRlaXYtZXF1aXBtZW50IHsgcHJlZml4IG9yLXRlaXYtZXF1aXA7IH0KCiAgICBpbXBvcnQgby1yYW4tc21vLXRlaXYtcmFuIHsgcHJlZml4IG9yLXRlaXYtcmFuOyB9CgoKICAgIG9yZ2FuaXphdGlvbiAiT1JBTiI7CiAgICBjb250YWN0ICJUaGUgQXV0aG9ycyI7CiAgICBkZXNjcmlwdGlvbiAKICAgICJSQU4gRXF1aXBtZW50IHRvIExvZ2ljYWwgdG9wb2xvZ3kgbW9kZWwuCgogICAgVGhpcyBtb2RlbCBjb250YWlucyB0aGUgUkFOIEVxdWlwbWVudCB0byBMb2dpY2FsIHRvcG9sb2d5CiAgICBlbnRpdGllcyBhbmQgcmVsYXRpb25zLgoKICAgIENvcHlyaWdodCAoQykgMjAyNCBFcmljc3NvbgogICAgTW9kaWZpY2F0aW9ucyBDb3B5cmlnaHQgKEMpIDIwMjQgT3BlbkluZnJhIEZvdW5kYXRpb24gRXVyb3BlCgogICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTsKICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KICAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdCI7CgogICAgcmV2aXNpb24gIjIwMjQtMDUtMjQiIHsKICAgICAgICBkZXNjcmlwdGlvbiAiSW5pdGlhbCByZXZpc2lvbi4iOwogICAgICAgIG9yLXRlaXYteWV4dDpsYWJlbCAwLjMuMDsKICAgIH0KCiAgICBvci10ZWl2LXlleHQ6ZG9tYWluIFJFTF9FUVVJUE1FTlRfUkFOOwoKICAgIG9yLXRlaXYteWV4dDpiaURpcmVjdGlvbmFsVG9wb2xvZ3lSZWxhdGlvbnNoaXAgQU5URU5OQU1PRFVMRV9TRVJWRVNfQU5URU5OQUNBUEFCSUxJVFkgeyAvLyAwLi5uIHRvIDAuLm0KCiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOlRvcF9HcnBfVHlwZTsKICAgICAgICBrZXkgaWQ7CgogICAgICAgIGxlYWYtbGlzdCBzZXJ2aWNlZC1hbnRlbm5hQ2FwYWJpbGl0eSB7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJBbnRlbm5hIENhcGFiaWxpdHkgc2VydmljZWQgYnkgdGhpcyBBbnRlbm5hIE1vZHVsZS4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YVNpZGUgb3ItdGVpdi1lcXVpcDpBbnRlbm5hTW9kdWxlOwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgfQoKICAgICAgICBsZWFmLWxpc3Qgc2VydmluZy1hbnRlbm5hTW9kdWxlIHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIkFudGVubmEgTW9kdWxlIHNlcnZlcyB0aGlzIEFudGVubmEgQ2FwYWJpbGl0eS4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YlNpZGUgb3ItdGVpdi1yYW46QW50ZW5uYUNhcGFiaWxpdHk7CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICB9CiAgICB9CgogICAgb3ItdGVpdi15ZXh0OmJpRGlyZWN0aW9uYWxUb3BvbG9neVJlbGF0aW9uc2hpcCBTRUNUT1JfR1JPVVBTX0FOVEVOTkFNT0RVTEUgeyAvLyAwLi4xIHRvIDAuLm4KCiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOlRvcF9HcnBfVHlwZTsKICAgICAgICBrZXkgaWQ7CgogICAgICAgIGxlYWYtbGlzdCBncm91cGVkLWFudGVubmFNb2R1bGUgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiU2VjdG9yIGdyb3VwcyBBbnRlbm5hIE1vZHVsZS4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YVNpZGUgb3ItdGVpdi1yYW46U2VjdG9yOwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgfQoKICAgICAgICBsZWFmIGdyb3VwZWQtYnktc2VjdG9yIHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIkFudGVubmEgTW9kdWxlIGdyb3VwZWQgYnkgU2VjdG9yLiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDpiU2lkZSBvci10ZWl2LWVxdWlwOkFudGVubmFNb2R1bGU7CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICB9CiAgICB9Cn0=        BUILT_IN_MODULE IN_USAGE
+o-ran-smo-teiv-equipment       urn:o-ran:smo-teiv-equipment    EQUIPMENT       []      2024-05-24      bW9kdWxlIG8tcmFuLXNtby10ZWl2LWVxdWlwbWVudCB7CiAgICB5YW5nLXZlcnNpb24gMS4xOwogICAgbmFtZXNwYWNlICJ1cm46by1yYW46c21vLXRlaXYtZXF1aXBtZW50IjsKICAgIHByZWZpeCBvci10ZWl2LWVxdWlwOwoKICAgIGltcG9ydCBvLXJhbi1zbW8tdGVpdi1jb21tb24teWFuZy10eXBlcyB7cHJlZml4IG9yLXRlaXYtdHlwZXM7IH0KCiAgICBpbXBvcnQgby1yYW4tc21vLXRlaXYtY29tbW9uLXlhbmctZXh0ZW5zaW9ucyB7cHJlZml4IG9yLXRlaXYteWV4dDsgfQoKICAgIGltcG9ydCBpZXRmLWdlby1sb2NhdGlvbiB7CiAgICAgICAgcHJlZml4IGdlbzsKICAgICAgICByZWZlcmVuY2UgIlJGQyA5MTc5OiBBIFlBTkcgR3JvdXBpbmcgZm9yIEdlb2dyYXBoaWMgTG9jYXRpb25zIjsKICAgIH0KCiAgICBvcmdhbml6YXRpb24gIk9SQU4iOwogICAgY29udGFjdCAiVGhlIEF1dGhvcnMiOwogICAgZGVzY3JpcHRpb24KICAgICJSQU4gRXF1aXBtZW50IHRvcG9sb2d5IG1vZGVsLgoKICAgIFRoaXMgbW9kZWwgY29udGFpbnMgdGhlIHRvcG9sb2d5IGVudGl0aWVzIGFuZCByZWxhdGlvbnMgaW4gdGhlCiAgICBSQU4gRXF1aXBtZW50IGRvbWFpbiwgd2hpY2ggaXMgbW9kZWxsZWQgdG8gdW5kZXJzdGFuZCB0aGUgcGh5c2ljYWwKICAgIGxvY2F0aW9uIG9mIGVxdWlwbWVudCBzdWNoIGFzIGFudGVubmFzIGFzc29jaWF0ZWQgd2l0aCBhIGNlbGwvY2FycmllcgogICAgYW5kIHRoZWlyIHJlbGV2YW50IHByb3BlcnRpZXMgZS5nLiB0aWx0LCBtYXggcG93ZXIgZXRjLgoKICAgIENvcHlyaWdodCAoQykgMjAyNCBFcmljc3NvbgogICAgTW9kaWZpY2F0aW9ucyBDb3B5cmlnaHQgKEMpIDIwMjQgT3BlbkluZnJhIEZvdW5kYXRpb24gRXVyb3BlCgogICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTsKICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KICAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAoKICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAoKICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUywKICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgogICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCI7CgogICAgcmV2aXNpb24gIjIwMjQtMDUtMjQiIHsKICAgICAgICBkZXNjcmlwdGlvbiAiSW5pdGlhbCByZXZpc2lvbi4iOwogICAgICAgIG9yLXRlaXYteWV4dDpsYWJlbCAwLjMuMDsKICAgIH0KCiAgICBvci10ZWl2LXlleHQ6ZG9tYWluIEVRVUlQTUVOVDsKCiAgICBsaXN0IEFudGVubmFNb2R1bGUgewogICAgICAgIGRlc2NyaXB0aW9uICJBbiBBbnRlbm5hIE1vZHVsZSByZXByZXNlbnRzIHRoZSBwaHlzaWNhbCBhc3BlY3Qgb2YgYW4KICAgICAgICAgICAgYW50ZW5uYS4iOwoKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6VG9wX0dycF9UeXBlOwogICAgICAgIGtleSBpZDsKCiAgICAgICAgY29udGFpbmVyIGF0dHJpYnV0ZXMgewogICAgICAgICAgICBsZWFmIGFudGVubmFNb2RlbE51bWJlciB7CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiVmVuZG9yLXNwZWNpZmljIGFudGVubmEgbW9kZWwgaWRlbnRpZmllci4gVGhpcwogICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSBpcyBwYXJ0IG9mIEFJU0cgdjMgQURCIFN0YW5kYXJkIGFuZCBoYXMgbm8KICAgICAgICAgICAgICAgICAgICBvcGVyYXRpb25hbCBpbXBhY3QuIjsKICAgICAgICAgICAgICAgIHR5cGUgc3RyaW5nOwogICAgICAgICAgICB9CgogICAgICAgICAgICBsZWFmIG1lY2hhbmljYWxBbnRlbm5hQmVhcmluZyB7CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiQW50ZW5uYSBiZWFyaW5nIG9uIGFudGVubmEgc3VidW5pdCB3aGVyZSBhbnRlbm5hCiAgICAgICAgICAgICAgICAgICAgdW5pdCBpcyBpbnN0YWxsZWQuIjsKICAgICAgICAgICAgICAgIHR5cGUgaW50MzI7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGxlYWYgbWVjaGFuaWNhbEFudGVubmFUaWx0IHsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJUaGUgZml4ZWQgYW50ZW5uYSB0aWx0IG9mIHRoZSBpbnN0YWxsYXRpb24sIGRlZmluZWQKICAgICAgICAgICAgICAgICAgICBhcyB0aGUgaW5jbGluYXRpb24gb2YgdGhlIGFudGVubmEgZWxlbWVudCByZXNwZWN0IHRvIHRoZQogICAgICAgICAgICAgICAgICAgIHZlcnRpY2FsIHBsYW5lLiBJdCBpcyBhIHNpZ25lZCB2YWx1ZS4gUG9zaXRpdmUgaW5kaWNhdGVzCiAgICAgICAgICAgICAgICAgICAgZG93bnRpbHQsIGFuZCBuZWdhdGl2ZSBpbmRpY2F0ZXMgdXB0aWx0LiI7CiAgICAgICAgICAgICAgICB0eXBlIGludDMyOwogICAgICAgICAgICB9CgogICAgICAgICAgICBsZWFmIHBvc2l0aW9uV2l0aGluU2VjdG9yIHsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJBbnRlbm5hIHVuaXQgcG9zaXRpb24gd2l0aGluIHNlY3Rvci4gVGhpcyBhdHRyaWJ1dGUKICAgICAgICAgICAgICAgICAgICBpcyBwYXJ0IG9mIEFJU0cgdjMgQURCIFN0YW5kYXJkIGFuZCBoYXMgbm8gb3BlcmF0aW9uYWwKICAgICAgICAgICAgICAgICAgICBpbXBhY3QuIjsKICAgICAgICAgICAgICAgIHR5cGUgc3RyaW5nOwogICAgICAgICAgICB9CgogICAgICAgICAgICBsZWFmIHRvdGFsVGlsdCB7CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiVG90YWwgYW50ZW5uYSBlbGV2YXRpb24gaW5jbHVkaW5nIHRoZSBpbnN0YWxsZWQKICAgICAgICAgICAgICAgICAgICB0aWx0IGFuZCB0aGUgdGlsdCBhcHBsaWVkIGJ5IHRoZSBSZW1vdGUgRWxlY3RyaWNhbAogICAgICAgICAgICAgICAgICAgIFRpbHQgKFJFVCkuIjsKICAgICAgICAgICAgICAgIHR5cGUgaW50MzI7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGxlYWYgZWxlY3RyaWNhbEFudGVubmFUaWx0IHsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJFbGVjdHJpY2FsbHktY29udHJvbGxlZCB0aWx0IG9mIG1haW4gYmVhbSBtYXhpbXVtCiAgICAgICAgICAgICAgICAgICAgd2l0aCByZXNwZWN0IHRvIGRpcmVjdGlvbiBvcnRob2dvbmFsIHRvIGFudGVubmEgZWxlbWVudAogICAgICAgICAgICAgICAgICAgIGF4aXMgKHNlZSAzR1BQIFRTIDI1LjQ2NikuIFZhbHVlIGlzIHNpZ25lZDsgdGlsdCBkb3duIGlzCiAgICAgICAgICAgICAgICAgICAgcG9zaXRpdmUsIHRpbHQgdXAgaXMgbmVnYXRpdmUuIjsKICAgICAgICAgICAgICAgIHR5cGUgaW50MzI7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGxlYWYtbGlzdCBhbnRlbm5hQmVhbVdpZHRoIHsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJUaGUgYW5ndWxhciBzcGFuIG9mIHRoZSBtYWluIGxvYmUgb2YgdGhlIGFudGVubmEKICAgICAgICAgICAgICAgICAgICByYWRpYXRpb24gcGF0dGVybiBpbiB0aGUgaG9yaXpvbnRhbCBwbGFuZS4gTWVhc3VyZWQgaW4KICAgICAgICAgICAgICAgICAgICBkZWdyZWVzLiI7CiAgICAgICAgICAgICAgICB0eXBlIHVpbnQzMjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgdXNlcyBnZW86Z2VvLWxvY2F0aW9uOwogICAgICAgIH0KICAgIH0KCiAgICBsaXN0IFNpdGUgewogICAgICAgIGRlc2NyaXB0aW9uICJBIHNpdGUgaXMgYSBwaHlzaWNhbCBsb2NhdGlvbiB3aGVyZSBhbiBlcXVpcG1lbnQgY2FuIGJlCiAgICAgICAgICAgIGluc3RhbGxlZC4iOwoKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6VG9wX0dycF9UeXBlOwogICAgICAgIGtleSBpZDsKCiAgICAgICAgY29udGFpbmVyIGF0dHJpYnV0ZXMgewogICAgICAgICAgICBsZWFmIG5hbWUgewogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIk5hbWUgb2YgU2l0ZSI7CiAgICAgICAgICAgICAgICB0eXBlIHN0cmluZzsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgdXNlcyBnZW86Z2VvLWxvY2F0aW9uOwoKICAgICAgICB9CiAgICB9CgogICAgb3ItdGVpdi15ZXh0OmJpRGlyZWN0aW9uYWxUb3BvbG9neVJlbGF0aW9uc2hpcCBBTlRFTk5BTU9EVUxFX0lOU1RBTExFRF9BVF9TSVRFIHsgLy8gMC4ubiB0byAwLi4xCgogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICAgICAga2V5IGlkOwoKICAgICAgICBsZWFmIGluc3RhbGxlZC1hdC1zaXRlIHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIkFudGVubmEgTW9kdWxlIGluc3RhbGxlZCBhdCBTaXRlLiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDphU2lkZSBBbnRlbm5hTW9kdWxlOwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgfQoKICAgICAgICBsZWFmLWxpc3QgaW5zdGFsbGVkLWFudGVubmFNb2R1bGUgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiU2l0ZSB3aGVyZSBBbnRlbm5hIE1vZHVsZSBpcyBpbnN0YWxsZWQuIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmJTaWRlIFNpdGU7CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICB9CiAgICB9Cn0=    BUILT_IN_MODULE IN_USAGE
+o-ran-smo-teiv-rel-oam-cloud   urn:o-ran:smo-teiv-rel-oam-cloud        REL_OAM_CLOUD   ["o-ran-smo-teiv-oam", "o-ran-smo-teiv-cloud"]  2024-05-02      bW9kdWxlIG8tcmFuLXNtby10ZWl2LXJlbC1vYW0tY2xvdWQgewogICAgeWFuZy12ZXJzaW9uIDEuMTsKICAgIG5hbWVzcGFjZSAidXJuOm8tcmFuOnNtby10ZWl2LXJlbC1vYW0tY2xvdWQiOwogICAgcHJlZml4IG9yLXRlaXYtb2FtdG9jbG91ZDsKCiAgICBpbXBvcnQgby1yYW4tc21vLXRlaXYtY29tbW9uLXlhbmctdHlwZXMge3ByZWZpeCBvci10ZWl2LXR5cGVzOyB9CgogICAgaW1wb3J0IG8tcmFuLXNtby10ZWl2LWNvbW1vbi15YW5nLWV4dGVuc2lvbnMge3ByZWZpeCBvci10ZWl2LXlleHQ7IH0KCiAgICBpbXBvcnQgby1yYW4tc21vLXRlaXYtb2FtIHtwcmVmaXggb3ItdGVpdi1vYW07IH0KCiAgICBpbXBvcnQgby1yYW4tc21vLXRlaXYtY2xvdWQge3ByZWZpeCBvci10ZWl2LWNsb3VkOyB9CgogICAgb3JnYW5pemF0aW9uICJPUkFOIjsKICAgIGNvbnRhY3QgIlRoZSBBdXRob3JzIjsKICAgIGRlc2NyaXB0aW9uIAogICAgIlJBTiBPJk0gdG8gQ2xvdWQgdG9wb2xvZ3kgbW9kZWwuCgogICAgVGhpcyBtb2RlbCBjb250YWlucyB0aGUgUkFOIE8mTSB0byBDbG91ZCB0b3BvbG9neSByZWxhdGlvbnMKCiAgICBDb3B5cmlnaHQgKEMpIDIwMjQgRXJpY3Nzb24KICAgIE1vZGlmaWNhdGlvbnMgQ29weXJpZ2h0IChDKSAyMDI0IE9wZW5JbmZyYSBGb3VuZGF0aW9uIEV1cm9wZQoKICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7CiAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKCiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKCiAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsCiAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgoKICAgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIjsKCiAgICByZXZpc2lvbiAiMjAyNC0wNS0wMiIgewogICAgICAgIGRlc2NyaXB0aW9uICJJbml0aWFsIHJldmlzaW9uLiI7CiAgICAgICAgb3ItdGVpdi15ZXh0OmxhYmVsIDAuMy4wOwogICAgfQoKICAgIG9yLXRlaXYteWV4dDpkb21haW4gUkVMX09BTV9DTE9VRDsKCiAgICBvci10ZWl2LXlleHQ6YmlEaXJlY3Rpb25hbFRvcG9sb2d5UmVsYXRpb25zaGlwIE1BTkFHRURFTEVNRU5UX0RFUExPWUVEX0FTX0NMT1VESUZJRURORiB7ICAvLyAwLi4xIHRvIDEKCiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOlRvcF9HcnBfVHlwZTsKICAgICAgICBrZXkgaWQ7CgogICAgICAgIGxlYWYgZGVwbG95ZWQtYXMtY2xvdWRpZmllZE5GIHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIk1hbmFnZWQgRWxlbWVudCBkZXBsb3llZCBhcyBDbG91ZGlmaWVkIE5GLiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDphU2lkZSBvci10ZWl2LW9hbTpNYW5hZ2VkRWxlbWVudDsKICAgICAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgIH0KCiAgICAgICAgbGVhZiBkZXBsb3llZC1tYW5hZ2VkRWxlbWVudCB7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJDbG91ZGlmaWVkIE5GIGRlcGxveXMgTWFuYWdlZCBFbGVtZW50LiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDpiU2lkZSBvci10ZWl2LWNsb3VkOkNsb3VkaWZpZWRORjsKICAgICAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgICAgICBtYW5kYXRvcnkgdHJ1ZTsKICAgICAgICB9CiAgICB9CgogICAgb3ItdGVpdi15ZXh0OmJpRGlyZWN0aW9uYWxUb3BvbG9neVJlbGF0aW9uc2hpcCBORkRFUExPWU1FTlRfU0VSVkVTX01BTkFHRURFTEVNRU5UIHsgLy8gMS4ubiB0byAxCgogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICAgICAga2V5IGlkOwoKICAgICAgICBsZWFmIHNlcnZpY2VkLW1hbmFnZWRFbGVtZW50IHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIk1hbmFnZWQgRWxlbWVudCBzZXJ2aWNlZCBieSB0aGlzIE5GIERlcGxveW1lbnQuIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmFTaWRlIG9yLXRlaXYtY2xvdWQ6TkZEZXBsb3ltZW50OwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgICAgIG1hbmRhdG9yeSB0cnVlOwogICAgICAgIH0KCiAgICAgICAgbGVhZi1saXN0IHNlcnZpbmctbkZEZXBsb3ltZW50IHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIk5GIERlcGxveW1lbnQgdGhhdCBzZXJ2ZXMgdGhpcyBNYW5hZ2VkIEVsZW1lbnQuIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmJTaWRlIG9yLXRlaXYtb2FtOk1hbmFnZWRFbGVtZW50OwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgICAgIG1pbi1lbGVtZW50cyAxOwogICAgICAgIH0KICAgIH0KfQ==        BUILT_IN_MODULE IN_USAGE
+o-ran-smo-teiv-cloud   urn:o-ran:smo-teiv-cloud        CLOUD   []      2024-05-02      bW9kdWxlIG8tcmFuLXNtby10ZWl2LWNsb3VkIHsKICAgIHlhbmctdmVyc2lvbiAxLjE7CiAgICBuYW1lc3BhY2UgInVybjpvLXJhbjpzbW8tdGVpdi1jbG91ZCI7CiAgICBwcmVmaXggb3ItdGVpdi1jbG91ZDsKCiAgICBpbXBvcnQgby1yYW4tc21vLXRlaXYtY29tbW9uLXlhbmctdHlwZXMge3ByZWZpeCBvci10ZWl2LXR5cGVzOyB9CgogICAgaW1wb3J0IG8tcmFuLXNtby10ZWl2LWNvbW1vbi15YW5nLWV4dGVuc2lvbnMge3ByZWZpeCBvci10ZWl2LXlleHQ7IH0KCiAgICBpbXBvcnQgaWV0Zi1nZW8tbG9jYXRpb24gewogICAgICAgIHByZWZpeCBnZW87CiAgICAgICAgcmVmZXJlbmNlICJSRkMgOTE3OTogQSBZQU5HIEdyb3VwaW5nIGZvciBHZW9ncmFwaGljIExvY2F0aW9ucyI7CiAgICB9CgogICAgb3JnYW5pemF0aW9uICJPUkFOIjsKICAgIGNvbnRhY3QgIlRoZSBBdXRob3JzIjsKICAgIGRlc2NyaXB0aW9uCiAgICAiUkFOIENsb3VkIHRvcG9sb2d5IG1vZGVsLgoKICAgIFRoaXMgbW9kZWwgY29udGFpbnMgdGhlIHRvcG9sb2d5IGVudGl0aWVzIGFuZCByZWxhdGlvbnMgaW4gdGhlCiAgICBSQU4gQ0xPVUQgZG9tYWluLCB3aGljaCBjb21wcmlzZXMgY2xvdWQgaW5mcmFzdHJ1Y3R1cmUgYW5kCiAgICBkZXBsb3ltZW50IGFzcGVjdHMgdGhhdCBjYW4gYmUgdXNlZCBpbiB0aGUgdG9wb2xvZ3kgbW9kZWwuCgogICAgQ29weXJpZ2h0IChDKSAyMDI0IEVyaWNzc29uCiAgICBNb2RpZmljYXRpb25zIENvcHlyaWdodCAoQykgMjAyNCBPcGVuSW5mcmEgRm91bmRhdGlvbiBFdXJvcGUKCiAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpOwogICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CgogICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCgogICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLAogICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCiAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCiAgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KCiAgICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCI7CgogICAgcmV2aXNpb24gIjIwMjQtMDUtMDIiIHsKICAgICAgICBkZXNjcmlwdGlvbiAiSW5pdGlhbCByZXZpc2lvbi4iOwogICAgICAgIG9yLXRlaXYteWV4dDpsYWJlbCAwLjMuMDsKICAgIH0KCiAgICBvci10ZWl2LXlleHQ6ZG9tYWluIENMT1VEOwoKICAgIGxpc3QgQ2xvdWRpZmllZE5GIHsKICAgICAgICBkZXNjcmlwdGlvbiAiQSBSQU4gTmV0d29yayBGdW5jdGlvbiBzb2Z0d2FyZSB0aGF0IGlzIGRlcGxveWVkIGluIHRoZSBPLUNsb3VkIHZpYSBvbmUgb3IgbW9yZSBORiBEZXBsb3ltZW50cy4iOwoKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6VG9wX0dycF9UeXBlOwogICAgICAgIGtleSBpZDsKCiAgICAgICAgY29udGFpbmVyIGF0dHJpYnV0ZXMgewogICAgICAgICAgICBsZWFmIG5hbWUgewogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIk5hbWUgb2YgQ2xvdWRpZmllZCBORiI7CiAgICAgICAgICAgICAgICB0eXBlIHN0cmluZzsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBsaXN0IE5GRGVwbG95bWVudCB7CiAgICAgICAgZGVzY3JpcHRpb24gIkEgc29mdHdhcmUgZGVwbG95bWVudCBvbiBPLUNsb3VkIHJlc291cmNlcyB0aGF0IHJlYWxpemVzLCBhbGwgb3IgcGFydCBvZiwgYSBDbG91ZGlmaWVkIE5GLiI7CgogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICAgICAga2V5IGlkOwoKICAgICAgICBjb250YWluZXIgYXR0cmlidXRlcyB7CiAgICAgICAgICAgIGxlYWYgbmFtZSB7CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiTmFtZSBvZiBORiBEZXBsb3ltZW50IjsKICAgICAgICAgICAgICAgIHR5cGUgc3RyaW5nOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIGxpc3QgQ2xvdWROYW1lc3BhY2UgewogICAgICAgIGRlc2NyaXB0aW9uICJDbG91ZE5hbWVzcGFjZSBwcm92aWRlIGEgbWVjaGFuaXNtIGZvciBpc29sYXRpbmcKICAgICAgICAgICAgICAgICAgICBncm91cHMgb2YgcmVzb3VyY2VzIHdpdGhpbiBhIHNpbmdsZSBjbHVzdGVyLiI7CgogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICAgICAga2V5IGlkOwoKICAgICAgICBjb250YWluZXIgYXR0cmlidXRlcyB7CiAgICAgICAgICAgIGxlYWYgbmFtZSB7CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiTmFtZSBvZiBDbG91ZCBOYW1lc3BhY2UiOwogICAgICAgICAgICAgICAgdHlwZSBzdHJpbmc7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgbGlzdCBOb2RlQ2x1c3RlciB7CiAgICAgICAgZGVzY3JpcHRpb24gIkEgTm9kZUNsdXN0ZXIgbWFuYWdlcyBhIGNvbGxlY3Rpb24gb2YgTm9kZXMuIjsKCiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOlRvcF9HcnBfVHlwZTsKICAgICAgICBrZXkgaWQ7CgogICAgICAgIGNvbnRhaW5lciBhdHRyaWJ1dGVzIHsKICAgICAgICAgICAgbGVhZiBuYW1lIHsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJOYW1lIG9mIE5vZGUgQ2x1c3RlciI7CiAgICAgICAgICAgICAgICB0eXBlIHN0cmluZzsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBsaXN0IENsb3VkU2l0ZSB7CiAgICAgICAgZGVzY3JpcHRpb24gIlJlcHJlc2VudHMgdGhlIGluZnJhc3RydWN0dXJlIHRoYXQKICAgICAgICAgICAgICAgICAgICBob3N0cyB0aGUgTkYgRGVwbG95bWVudC4iOwoKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6VG9wX0dycF9UeXBlOwogICAgICAgIGtleSBpZDsKCiAgICAgICAgY29udGFpbmVyIGF0dHJpYnV0ZXMgewogICAgICAgICAgICBsZWFmIG5hbWUgewogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIk5hbWUgb2YgQ2xvdWQgU2l0ZSI7CiAgICAgICAgICAgICAgICB0eXBlIHN0cmluZzsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgdXNlcyBnZW86Z2VvLWxvY2F0aW9uOwogICAgICAgIH0KICAgIH0KCgogICAgb3ItdGVpdi15ZXh0OmJpRGlyZWN0aW9uYWxUb3BvbG9neVJlbGF0aW9uc2hpcCBDTE9VRElGSUVETkZfQ09NUFJJU0VTX05GREVQTE9ZTUVOVCB7IC8vIDEgdG8gMS4ubgoKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6VG9wX0dycF9UeXBlOwogICAgICAgIGtleSBpZDsKCiAgICAgICAgbGVhZi1saXN0IGNvbXByaXNlZC1uRkRlcGxveW1lbnQgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiQ2xvdWRpZmllZCBORiBjb21wcmlzZXMgb2YgdGhlc2UgTkYgRGVwbG95bWVudC4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YVNpZGUgQ2xvdWRpZmllZE5GOwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgICAgIG1pbi1lbGVtZW50cyAxOwogICAgICAgIH0KCiAgICAgICAgbGVhZiBjb21wcmlzZWQtYnktY2xvdWRpZmllZE5GIHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIk5GIERlcGxveW1lbnQgcGFydCBvZiBDbG91ZGlmaWVkIE5GLiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDpiU2lkZSBORkRlcGxveW1lbnQ7CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICAgICAgbWFuZGF0b3J5IHRydWU7CiAgICAgICAgfQogICAgfQoKICAgIG9yLXRlaXYteWV4dDpiaURpcmVjdGlvbmFsVG9wb2xvZ3lSZWxhdGlvbnNoaXAgTkZERVBMT1lNRU5UX0RFUExPWUVEX09OX0NMT1VETkFNRVNQQUNFIHsgLy8gMS4ubiB0byAxLi5uCgogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICAgICAga2V5IGlkOwoKICAgICAgICBsZWFmLWxpc3QgZGVwbG95ZWQtb24tY2xvdWROYW1lc3BhY2UgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiTkYgRGVwbG95bWVudCBkZXBsb3llZCBvbiBDbG91ZCBOYW1lc3BhY2UuIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmFTaWRlIE5GRGVwbG95bWVudDsKICAgICAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgICAgICBtaW4tZWxlbWVudHMgMTsKICAgICAgICB9CgogICAgICAgIGxlYWYtbGlzdCBkZXBsb3llZC1uRkRlcGxveW1lbnQgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiQ2xvdWQgTmFtZXNwYWNlIGRlcGxveXMgTkYgRGVwbG95bWVudC4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YlNpZGUgQ2xvdWROYW1lc3BhY2U7CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICAgICAgbWluLWVsZW1lbnRzIDE7CiAgICAgICAgfQogICAgfQoKICAgIG9yLXRlaXYteWV4dDpiaURpcmVjdGlvbmFsVG9wb2xvZ3lSZWxhdGlvbnNoaXAgQ0xPVUROQU1FU1BBQ0VfREVQTE9ZRURfT05fTk9ERUNMVVNURVIgeyAvLyAxLi5uIHRvIDEKCiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOlRvcF9HcnBfVHlwZTsKICAgICAgICBrZXkgaWQ7CgogICAgICAgIGxlYWYgZGVwbG95ZWQtb24tbm9kZUNsdXN0ZXIgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiQ2xvdWQgTmFtZXNwYWNlIGRlcGxveWVkIG9uIE5vZGUgQ2x1c3Rlci4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YVNpZGUgQ2xvdWROYW1lc3BhY2U7CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICAgICAgbWFuZGF0b3J5IHRydWU7CiAgICAgICAgfQoKICAgICAgICBsZWFmLWxpc3QgZGVwbG95ZWQtY2xvdWROYW1lc3BhY2UgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiTm9kZSBDbHVzdGVyIGRlcGxveXMgQ2xvdWQgTmFtZXNwYWNlLiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDpiU2lkZSBOb2RlQ2x1c3RlcjsKICAgICAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgICAgICBtaW4tZWxlbWVudHMgMTsKICAgICAgICB9CiAgICB9CgogICAgb3ItdGVpdi15ZXh0OmJpRGlyZWN0aW9uYWxUb3BvbG9neVJlbGF0aW9uc2hpcCBOT0RFQ0xVU1RFUl9MT0NBVEVEX0FUX0NMT1VEU0lURSB7IC8vIDEuLm4gdG8gMS4ubgoKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6VG9wX0dycF9UeXBlOwogICAgICAgIGtleSBpZDsKCiAgICAgICAgbGVhZi1saXN0IGxvY2F0ZWQtYXQtY2xvdWRTaXRlIHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIk5vZGUgQ2x1c3RlciBsb2NhdGVkIGF0IENsb3VkIFNpdGUuIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmFTaWRlIE5vZGVDbHVzdGVyOwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgICAgIG1pbi1lbGVtZW50cyAxOwogICAgICAgIH0KCiAgICAgICAgbGVhZi1saXN0IGxvY2F0aW9uLW9mLW5vZGVDbHVzdGVyIHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIkNsb3VkIFNpdGUgaXMgbG9jYXRpb24gb2YgTm9kZSBDbHVzdGVyLiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDpiU2lkZSBDbG91ZFNpdGU7CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICAgICAgbWluLWVsZW1lbnRzIDE7CiAgICAgICAgfQogICAgfQp9    BUILT_IN_MODULE IN_USAGE
+o-ran-smo-teiv-rel-cloud-ran   urn:o-ran:smo-teiv-rel-cloud-ran        REL_CLOUD_RAN   ["o-ran-smo-teiv-cloud", "o-ran-smo-teiv-ran"]  2024-05-02      bW9kdWxlIG8tcmFuLXNtby10ZWl2LXJlbC1jbG91ZC1yYW4gewogICAgeWFuZy12ZXJzaW9uIDEuMTsKICAgIG5hbWVzcGFjZSAidXJuOm8tcmFuOnNtby10ZWl2LXJlbC1jbG91ZC1yYW4iOwogICAgcHJlZml4IG9yLXRlaXYtY2xvdWR0b3JhbjsKCiAgICBpbXBvcnQgby1yYW4tc21vLXRlaXYtY29tbW9uLXlhbmctdHlwZXMge3ByZWZpeCBvci10ZWl2LXR5cGVzOyB9CgogICAgaW1wb3J0IG8tcmFuLXNtby10ZWl2LWNvbW1vbi15YW5nLWV4dGVuc2lvbnMge3ByZWZpeCBvci10ZWl2LXlleHQ7IH0KCiAgICBpbXBvcnQgby1yYW4tc21vLXRlaXYtY2xvdWQge3ByZWZpeCBvci10ZWl2LWNsb3VkOyB9CgogICAgaW1wb3J0IG8tcmFuLXNtby10ZWl2LXJhbiB7cHJlZml4IG9yLXRlaXYtcmFuOyB9CgogICAgb3JnYW5pemF0aW9uICJPUkFOIjsKICAgIGNvbnRhY3QgIlRoZSBBdXRob3JzIjsKICAgIGRlc2NyaXB0aW9uCiAgICAiUkFOIENsb3VkIHRvIFJBTiBMb2dpY2FsIHRvcG9sb2d5IG1vZGVsLgoKICAgIFRoaXMgbW9kZWwgY29udGFpbnMgdGhlIFJBTiBDbG91ZCB0byBSQU4gTG9naWNhbCB0b3BvbG9neSByZWxhdGlvbnMuCgogICAgQ29weXJpZ2h0IChDKSAyMDI0IEVyaWNzc29uCiAgICBNb2RpZmljYXRpb25zIENvcHlyaWdodCAoQykgMjAyNCBPcGVuSW5mcmEgRm91bmRhdGlvbiBFdXJvcGUKCiAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpOwogICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CgogICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCgogICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLAogICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCiAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCiAgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KCiAgICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCI7CgogICAgcmV2aXNpb24gIjIwMjQtMDUtMDIiIHsKICAgICAgICBkZXNjcmlwdGlvbiAiSW5pdGlhbCByZXZpc2lvbi4iOwogICAgICAgIG9yLXRlaXYteWV4dDpsYWJlbCAwLjMuMDsKICAgIH0KCiAgICBvci10ZWl2LXlleHQ6ZG9tYWluIFJFTF9DTE9VRF9SQU47CgogICAgb3ItdGVpdi15ZXh0OmJpRGlyZWN0aW9uYWxUb3BvbG9neVJlbGF0aW9uc2hpcCBORkRFUExPWU1FTlRfU0VSVkVTX0dOQkRVRlVOQ1RJT04geyAvLyAwLi5uIHRvIDAuLm0KCiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOlRvcF9HcnBfVHlwZTsKICAgICAgICBrZXkgaWQ7CgogICAgICAgIGxlYWYtbGlzdCBzZXJ2aWNlZC1nbmJkdUZ1bmN0aW9uIHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gImdOb2RlQkRVIEZ1bmN0aW9uIHNlcnZpY2VkIGJ5IHRoaXMgTkYgRGVwbG95bWVudC4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YVNpZGUgb3ItdGVpdi1jbG91ZDpORkRlcGxveW1lbnQ7CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICB9CgogICAgICAgIGxlYWYtbGlzdCBzZXJ2aW5nLW5GRGVwbG95bWVudCB7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJORiBEZXBsb3ltZW50IHRoYXQgc2VydmVzIHRoaXMgZ05vZGVCRFUgRnVuY3Rpb24uIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmJTaWRlIG9yLXRlaXYtcmFuOkdOQkRVRnVuY3Rpb247CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICB9CiAgICB9CgogICAgb3ItdGVpdi15ZXh0OmJpRGlyZWN0aW9uYWxUb3BvbG9neVJlbGF0aW9uc2hpcCBORkRFUExPWU1FTlRfU0VSVkVTX0dOQkNVQ1BGVU5DVElPTiB7IC8vIDAuLm4gdG8gMC4ubQoKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6VG9wX0dycF9UeXBlOwogICAgICAgIGtleSBpZDsKCiAgICAgICAgbGVhZi1saXN0IHNlcnZpY2VkLWduYmN1Y3BGdW5jdGlvbiB7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJnTm9kZUItQ1UtQ1AgRnVuY3Rpb24gc2VydmljZWQgYnkgdGhpcyBORiBEZXBsb3ltZW50LiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDphU2lkZSBvci10ZWl2LWNsb3VkOk5GRGVwbG95bWVudDsKICAgICAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgIH0KCiAgICAgICAgbGVhZi1saXN0IHNlcnZpbmctbkZEZXBsb3ltZW50IHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIk5GIERlcGxveW1lbnQgdGhhdCBzZXJ2ZXMgdGhpcyBnTm9kZUJDVUNQIEZ1bmN0aW9uLiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDpiU2lkZSBvci10ZWl2LXJhbjpHTkJDVUNQRnVuY3Rpb247CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICB9CiAgICB9CgogICAgb3ItdGVpdi15ZXh0OmJpRGlyZWN0aW9uYWxUb3BvbG9neVJlbGF0aW9uc2hpcCBORkRFUExPWU1FTlRfU0VSVkVTX0dOQkNVVVBGVU5DVElPTiB7IC8vIDAuLm4gdG8gMC4ubQoKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6VG9wX0dycF9UeXBlOwogICAgICAgIGtleSBpZDsKCiAgICAgICAgbGVhZi1saXN0IHNlcnZpY2VkLWduYmN1dXBGdW5jdGlvbiB7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJnTm9kZUItQ1UtVVAgRnVuY3Rpb24gc2VydmljZWQgYnkgdGhpcyBORiBEZXBsb3ltZW50LiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDphU2lkZSBvci10ZWl2LWNsb3VkOk5GRGVwbG95bWVudDsKICAgICAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgIH0KCiAgICAgICAgbGVhZi1saXN0IHNlcnZpbmctbkZEZXBsb3ltZW50IHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIk5GIERlcGxveW1lbnQgdGhhdCBzZXJ2ZXMgdGhpcyBnTm9kZUJDVVVQIEZ1bmN0aW9uLiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDpiU2lkZSBvci10ZWl2LXJhbjpHTkJDVVVQRnVuY3Rpb247CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICB9CiAgICB9Cn0=    BUILT_IN_MODULE IN_USAGE
 \.
 
 COPY ties_model.entity_info("name", "moduleReferenceName") FROM stdin;
-GNBCUUPFunction        o-ran-smo-teiv-ran
-ENodeBFunction o-ran-smo-teiv-ran
-Sector o-ran-smo-teiv-ran
-LTESectorCarrier       o-ran-smo-teiv-ran
-NRCellDU       o-ran-smo-teiv-ran
+ManagedElement o-ran-smo-teiv-oam
 GNBDUFunction  o-ran-smo-teiv-ran
+GNBCUCPFunction        o-ran-smo-teiv-ran
+GNBCUUPFunction        o-ran-smo-teiv-ran
 NRCellCU       o-ran-smo-teiv-ran
+NRCellDU       o-ran-smo-teiv-ran
+ENodeBFunction o-ran-smo-teiv-ran
 EUtranCell     o-ran-smo-teiv-ran
-GNBCUCPFunction        o-ran-smo-teiv-ran
 NRSectorCarrier        o-ran-smo-teiv-ran
+LTESectorCarrier       o-ran-smo-teiv-ran
 AntennaCapability      o-ran-smo-teiv-ran
+Sector o-ran-smo-teiv-ran
+AntennaModule  o-ran-smo-teiv-equipment
+Site   o-ran-smo-teiv-equipment
+CloudifiedNF   o-ran-smo-teiv-cloud
+NFDeployment   o-ran-smo-teiv-cloud
 CloudNamespace o-ran-smo-teiv-cloud
 NodeCluster    o-ran-smo-teiv-cloud
 CloudSite      o-ran-smo-teiv-cloud
-NFDeployment   o-ran-smo-teiv-cloud
-CloudifiedNF   o-ran-smo-teiv-cloud
-ManagedElement o-ran-smo-teiv-oam
-Site   o-ran-smo-teiv-equipment
-AntennaModule  o-ran-smo-teiv-equipment
-PhysicalNF     o-ran-smo-teiv-equipment
 \.
 
 COPY ties_model.relationship_info("name", "aSideAssociationName", "aSideMOType", "aSideMinCardinality", "aSideMaxCardinality", "bSideAssociationName", "bSideMOType", "bSideMinCardinality", "bSideMaxCardinality", "associationKind", "relationshipDataLocation", "connectSameEntity", "moduleReferenceName") FROM stdin;
-ENODEBFUNCTION_PROVIDES_LTESECTORCARRIER       provided-lteSectorCarrier       ENodeBFunction  1       1       provided-by-enodebFunction      LTESectorCarrier        0       9223372036854775807     BI_DIRECTIONAL  B_SIDE  false   o-ran-smo-teiv-ran
 ENODEBFUNCTION_PROVIDES_EUTRANCELL     provided-euTranCell     ENodeBFunction  1       1       provided-by-enodebFunction      EUtranCell      0       9223372036854775807     BI_DIRECTIONAL  B_SIDE  false   o-ran-smo-teiv-ran
-SECTOR_GROUPS_EUTRANCELL       grouped-euTranCell      Sector  0       1       grouped-by-sector       EUtranCell      0       9223372036854775807     BI_DIRECTIONAL  B_SIDE  false   o-ran-smo-teiv-ran
-SECTOR_GROUPS_ANTENNAMODULE    grouped-antennaModule   Sector  0       1       grouped-by-sector       AntennaModule   0       9223372036854775807     BI_DIRECTIONAL  B_SIDE  false   o-ran-smo-teiv-equipment-to-ran
-SECTOR_GROUPS_NRCELLDU grouped-nrCellDu        Sector  0       1       grouped-by-sector       NRCellDU        0       9223372036854775807     BI_DIRECTIONAL  B_SIDE  false   o-ran-smo-teiv-ran
-LTESECTORCARRIER_USES_ANTENNACAPABILITY        used-antennaCapability  LTESectorCarrier        0       9223372036854775807     used-by-lteSectorCarrier        AntennaCapability       0       1       BI_DIRECTIONAL  A_SIDE  false   o-ran-smo-teiv-ran
-NRCELLDU_USES_NRSECTORCARRIER  used-nrSectorCarrier    NRCellDU        0       1       used-by-nrCellDu        NRSectorCarrier 0       9223372036854775807     BI_DIRECTIONAL  B_SIDE  false   o-ran-smo-teiv-ran
-GNBDUFUNCTION_PROVIDES_NRSECTORCARRIER provided-nrSectorCarrier        GNBDUFunction   1       1       provided-by-gnbduFunction       NRSectorCarrier 0       9223372036854775807     BI_DIRECTIONAL  B_SIDE  false   o-ran-smo-teiv-ran
+ENODEBFUNCTION_PROVIDES_LTESECTORCARRIER       provided-lteSectorCarrier       ENodeBFunction  1       1       provided-by-enodebFunction      LTESectorCarrier        0       9223372036854775807     BI_DIRECTIONAL  B_SIDE  false   o-ran-smo-teiv-ran
 GNBDUFUNCTION_PROVIDES_NRCELLDU        provided-nrCellDu       GNBDUFunction   1       1       provided-by-gnbduFunction       NRCellDU        0       9223372036854775807     BI_DIRECTIONAL  B_SIDE  false   o-ran-smo-teiv-ran
-EUTRANCELL_USES_LTESECTORCARRIER       used-lteSectorCarrier   EUtranCell      0       1       used-by-euTranCell      LTESectorCarrier        0       9223372036854775807     BI_DIRECTIONAL  B_SIDE  false   o-ran-smo-teiv-ran
+GNBDUFUNCTION_PROVIDES_NRSECTORCARRIER provided-nrSectorCarrier        GNBDUFunction   1       1       provided-by-gnbduFunction       NRSectorCarrier 0       9223372036854775807     BI_DIRECTIONAL  B_SIDE  false   o-ran-smo-teiv-ran
 GNBCUCPFUNCTION_PROVIDES_NRCELLCU      provided-nrCellCu       GNBCUCPFunction 1       1       provided-by-gnbcucpFunction     NRCellCU        0       9223372036854775807     BI_DIRECTIONAL  B_SIDE  false   o-ran-smo-teiv-ran
+EUTRANCELL_USES_LTESECTORCARRIER       used-lteSectorCarrier   EUtranCell      0       1       used-by-euTranCell      LTESectorCarrier        0       9223372036854775807     BI_DIRECTIONAL  B_SIDE  false   o-ran-smo-teiv-ran
+LTESECTORCARRIER_USES_ANTENNACAPABILITY        used-antennaCapability  LTESectorCarrier        0       9223372036854775807     used-by-lteSectorCarrier        AntennaCapability       0       1       BI_DIRECTIONAL  A_SIDE  false   o-ran-smo-teiv-ran
+NRCELLDU_USES_NRSECTORCARRIER  used-nrSectorCarrier    NRCellDU        0       1       used-by-nrCellDu        NRSectorCarrier 0       9223372036854775807     BI_DIRECTIONAL  B_SIDE  false   o-ran-smo-teiv-ran
 NRSECTORCARRIER_USES_ANTENNACAPABILITY used-antennaCapability  NRSectorCarrier 0       9223372036854775807     used-by-nrSectorCarrier AntennaCapability       0       1       BI_DIRECTIONAL  A_SIDE  false   o-ran-smo-teiv-ran
+SECTOR_GROUPS_NRCELLDU grouped-nrCellDu        Sector  0       1       grouped-by-sector       NRCellDU        0       9223372036854775807     BI_DIRECTIONAL  B_SIDE  false   o-ran-smo-teiv-ran
+SECTOR_GROUPS_EUTRANCELL       grouped-euTranCell      Sector  0       1       grouped-by-sector       EUtranCell      0       9223372036854775807     BI_DIRECTIONAL  B_SIDE  false   o-ran-smo-teiv-ran
+ANTENNAMODULE_INSTALLED_AT_SITE        installed-at-site       AntennaModule   0       9223372036854775807     installed-antennaModule Site    0       1       BI_DIRECTIONAL  A_SIDE  false   o-ran-smo-teiv-equipment
+MANAGEDELEMENT_DEPLOYED_AS_CLOUDIFIEDNF        deployed-as-cloudifiedNF        ManagedElement  1       1       deployed-managedElement CloudifiedNF    0       1       BI_DIRECTIONAL  A_SIDE  false   o-ran-smo-teiv-rel-oam-cloud
+NFDEPLOYMENT_SERVES_MANAGEDELEMENT     serviced-managedElement NFDeployment    1       9223372036854775807     serving-nFDeployment    ManagedElement  1       1       BI_DIRECTIONAL  A_SIDE  false   o-ran-smo-teiv-rel-oam-cloud
+MANAGEDELEMENT_MANAGES_ENODEBFUNCTION  managed-enodebFunction  ManagedElement  1       1       managed-by-managedElement       ENodeBFunction  0       9223372036854775807     BI_DIRECTIONAL  B_SIDE  false   o-ran-smo-teiv-rel-oam-ran
+MANAGEDELEMENT_MANAGES_GNBDUFUNCTION   managed-gnbduFunction   ManagedElement  1       1       managed-by-managedElement       GNBDUFunction   0       9223372036854775807     BI_DIRECTIONAL  B_SIDE  false   o-ran-smo-teiv-rel-oam-ran
+MANAGEDELEMENT_MANAGES_GNBCUCPFUNCTION managed-gnbcucpFunction ManagedElement  1       1       managed-by-managedElement       GNBCUCPFunction 0       9223372036854775807     BI_DIRECTIONAL  B_SIDE  false   o-ran-smo-teiv-rel-oam-ran
+MANAGEDELEMENT_MANAGES_GNBCUUPFUNCTION managed-gnbcuupFunction ManagedElement  1       1       managed-by-managedElement       GNBCUUPFunction 0       9223372036854775807     BI_DIRECTIONAL  B_SIDE  false   o-ran-smo-teiv-rel-oam-ran
+ANTENNAMODULE_SERVES_ANTENNACAPABILITY serviced-antennaCapability      AntennaModule   0       9223372036854775807     serving-antennaModule   AntennaCapability       0       9223372036854775807     BI_DIRECTIONAL  RELATION        false   o-ran-smo-teiv-rel-equipment-ran
+SECTOR_GROUPS_ANTENNAMODULE    grouped-antennaModule   Sector  0       1       grouped-by-sector       AntennaModule   0       9223372036854775807     BI_DIRECTIONAL  B_SIDE  false   o-ran-smo-teiv-rel-equipment-ran
+NFDEPLOYMENT_SERVES_GNBDUFUNCTION      serviced-gnbduFunction  NFDeployment    0       9223372036854775807     serving-nFDeployment    GNBDUFunction   0       9223372036854775807     BI_DIRECTIONAL  RELATION        false   o-ran-smo-teiv-rel-cloud-ran
+NFDEPLOYMENT_SERVES_GNBCUCPFUNCTION    serviced-gnbcucpFunction        NFDeployment    0       9223372036854775807     serving-nFDeployment    GNBCUCPFunction 0       9223372036854775807     BI_DIRECTIONAL  RELATION        false   o-ran-smo-teiv-rel-cloud-ran
+NFDEPLOYMENT_SERVES_GNBCUUPFUNCTION    serviced-gnbcuupFunction        NFDeployment    0       9223372036854775807     serving-nFDeployment    GNBCUUPFunction 0       9223372036854775807     BI_DIRECTIONAL  RELATION        false   o-ran-smo-teiv-rel-cloud-ran
+CLOUDIFIEDNF_COMPRISES_NFDEPLOYMENT    comprised-nFDeployment  CloudifiedNF    1       1       comprised-by-cloudifiedNF       NFDeployment    1       9223372036854775807     BI_DIRECTIONAL  B_SIDE  false   o-ran-smo-teiv-cloud
+NFDEPLOYMENT_DEPLOYED_ON_CLOUDNAMESPACE        deployed-on-cloudNamespace      NFDeployment    1       9223372036854775807     deployed-nFDeployment   CloudNamespace  1       9223372036854775807     BI_DIRECTIONAL  RELATION        false   o-ran-smo-teiv-cloud
 CLOUDNAMESPACE_DEPLOYED_ON_NODECLUSTER deployed-on-nodeCluster CloudNamespace  1       9223372036854775807     deployed-cloudNamespace NodeCluster     1       1       BI_DIRECTIONAL  A_SIDE  false   o-ran-smo-teiv-cloud
 NODECLUSTER_LOCATED_AT_CLOUDSITE       located-at-cloudSite    NodeCluster     1       9223372036854775807     location-of-nodeCluster CloudSite       1       9223372036854775807     BI_DIRECTIONAL  RELATION        false   o-ran-smo-teiv-cloud
-NFDEPLOYMENT_SERVES_GNBDUFUNCTION      serviced-gnbduFunction  NFDeployment    0       9223372036854775807     serving-nFDeployment    GNBDUFunction   0       9223372036854775807     BI_DIRECTIONAL  RELATION        false   o-ran-smo-teiv-cloud-to-ran
-NFDEPLOYMENT_DEPLOYED_ON_CLOUDNAMESPACE        deployed-on-cloudNamespace      NFDeployment    1       9223372036854775807     deployed-nFDeployment   CloudNamespace  1       9223372036854775807     BI_DIRECTIONAL  RELATION        false   o-ran-smo-teiv-cloud
-NFDEPLOYMENT_SERVES_GNBCUUPFUNCTION    serviced-gnbcuupFunction        NFDeployment    0       9223372036854775807     serving-nFDeployment    GNBCUUPFunction 0       9223372036854775807     BI_DIRECTIONAL  RELATION        false   o-ran-smo-teiv-cloud-to-ran
-NFDEPLOYMENT_SERVES_MANAGEDELEMENT     serviced-managedElement NFDeployment    1       9223372036854775807     serving-nFDeployment    ManagedElement  1       1       BI_DIRECTIONAL  A_SIDE  false   o-ran-smo-teiv-oam-to-cloud
-NFDEPLOYMENT_SERVES_GNBCUCPFUNCTION    serviced-gnbcucpFunction        NFDeployment    0       9223372036854775807     serving-nFDeployment    GNBCUCPFunction 0       9223372036854775807     BI_DIRECTIONAL  RELATION        false   o-ran-smo-teiv-cloud-to-ran
-CLOUDIFIEDNF_COMPRISES_NFDEPLOYMENT    comprised-nFDeployment  CloudifiedNF    1       1       comprised-by-cloudifiedNF       NFDeployment    1       9223372036854775807     BI_DIRECTIONAL  B_SIDE  false   o-ran-smo-teiv-cloud
-MANAGEDELEMENT_MANAGES_ENODEBFUNCTION  managed-enodebFunction  ManagedElement  1       1       managed-by-managedElement       ENodeBFunction  0       9223372036854775807     BI_DIRECTIONAL  B_SIDE  false   o-ran-smo-teiv-oam-to-ran
-MANAGEDELEMENT_DEPLOYED_AS_CLOUDIFIEDNF        deployed-as-cloudifiedNF        ManagedElement  1       1       deployed-managedElement CloudifiedNF    0       1       BI_DIRECTIONAL  A_SIDE  false   o-ran-smo-teiv-oam-to-cloud
-MANAGEDELEMENT_MANAGES_GNBCUCPFUNCTION managed-gnbcucpFunction ManagedElement  1       1       managed-by-managedElement       GNBCUCPFunction 0       9223372036854775807     BI_DIRECTIONAL  B_SIDE  false   o-ran-smo-teiv-oam-to-ran
-MANAGEDELEMENT_MANAGES_GNBCUUPFUNCTION managed-gnbcuupFunction ManagedElement  1       1       managed-by-managedElement       GNBCUUPFunction 0       9223372036854775807     BI_DIRECTIONAL  B_SIDE  false   o-ran-smo-teiv-oam-to-ran
-MANAGEDELEMENT_MANAGES_GNBDUFUNCTION   managed-gnbduFunction   ManagedElement  1       1       managed-by-managedElement       GNBDUFunction   0       9223372036854775807     BI_DIRECTIONAL  B_SIDE  false   o-ran-smo-teiv-oam-to-ran
-ANTENNAMODULE_INSTALLED_AT_SITE        installed-at-site       AntennaModule   0       9223372036854775807     installed-antennaModule Site    0       1       BI_DIRECTIONAL  A_SIDE  false   o-ran-smo-teiv-equipment
-ANTENNAMODULE_SERVES_ANTENNACAPABILITY serviced-antennaCapability      AntennaModule   0       9223372036854775807     serving-antennaModule   AntennaCapability       0       9223372036854775807     BI_DIRECTIONAL  RELATION        false   o-ran-smo-teiv-equipment-to-ran
-PHYSICALNF_INSTALLED_AT_SITE   installed-at-site       PhysicalNF      1       9223372036854775807     installed-physicalNF    Site    0       1       BI_DIRECTIONAL  A_SIDE  false   o-ran-smo-teiv-equipment
-PHYSICALNF_SERVES_GNBDUFUNCTION        serviced-gnbduFunction  PhysicalNF      0       1       serving-physicalNF      GNBDUFunction   0       9223372036854775807     BI_DIRECTIONAL  B_SIDE  false   o-ran-smo-teiv-equipment-to-ran
-PHYSICALNF_SERVES_ENODEBFUNCTION       serviced-enodebFunction PhysicalNF      0       1       serving-physicalNF      ENodeBFunction  0       9223372036854775807     BI_DIRECTIONAL  B_SIDE  false   o-ran-smo-teiv-equipment-to-ran
-PHYSICALNF_SERVES_GNBCUUPFUNCTION      serviced-gnbcuupFunction        PhysicalNF      0       1       serving-physicalNF      GNBCUUPFunction 0       9223372036854775807     BI_DIRECTIONAL  B_SIDE  false   o-ran-smo-teiv-equipment-to-ran
-PHYSICALNF_SERVES_GNBCUCPFUNCTION      serviced-gnbcucpFunction        PhysicalNF      0       1       serving-physicalNF      GNBCUCPFunction 0       9223372036854775807     BI_DIRECTIONAL  B_SIDE  false   o-ran-smo-teiv-equipment-to-ran
 \.
 
 ;
 
-COMMIT;
+COMMIT;
\ No newline at end of file
index 554c48e..42c1faf 100644 (file)
@@ -1,22 +1,22 @@
 --
---  ============LICENSE_START=======================================================
---  Copyright (C) 2024 Ericsson
---  Modifications Copyright (C) 2024 OpenInfra Foundation Europe
---  ================================================================================
---  Licensed under the Apache License, Version 2.0 (the "License");
---  you may not use this file except in compliance with the License.
---  You may obtain a copy of the License at
+-- ============LICENSE_START=======================================================
+-- Copyright (C) 2024 Ericsson
+-- Modifications Copyright (C) 2024 OpenInfra Foundation Europe
+-- ================================================================================
+-- Licensed under the Apache License, Version 2.0 (the "License");
+-- you may not use this file except in compliance with the License.
+-- You may obtain a copy of the License at
 --
---        http://www.apache.org/licenses/LICENSE-2.0
+--       http://www.apache.org/licenses/LICENSE-2.0
 --
---  Unless required by applicable law or agreed to in writing, software
---  distributed under the License is distributed on an "AS IS" BASIS,
---  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
---  See the License for the specific language governing permissions and
---  limitations under the License.
+-- Unless required by applicable law or agreed to in writing, software
+-- distributed under the License is distributed on an "AS IS" BASIS,
+-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+-- See the License for the specific language governing permissions and
+-- limitations under the License.
 --
---  SPDX-License-Identifier: Apache-2.0
---  ============LICENSE_END=========================================================
+-- SPDX-License-Identifier: Apache-2.0
+-- ============LICENSE_END=========================================================
 --
 
 BEGIN;
@@ -24,7 +24,7 @@ BEGIN;
 CREATE EXTENSION IF NOT EXISTS postgis;
 CREATE EXTENSION IF NOT EXISTS postgis_topology;
 
-GRANT USAGE ON SCHEMA topology TO topology_exposure_user;
+GRANT USAGE ON SCHEMA topology to topology_exposure_user;
 GRANT SELECT ON ALL SEQUENCES IN SCHEMA topology TO topology_exposure_user;
 GRANT SELECT ON ALL TABLES IN SCHEMA topology TO topology_exposure_user;
 
@@ -37,14 +37,14 @@ SET ROLE 'topology_exposure_user';
 
 -- Function to create CONSTRAINT only if it does not exists
 CREATE OR REPLACE FUNCTION ties_data.create_constraint_if_not_exists (
-    t_name TEXT, c_name TEXT, constraint_sql TEXT
+       t_name TEXT, c_name TEXT, constraint_sql TEXT
 )
 RETURNS void AS
 $$
 BEGIN
-    IF NOT EXISTS (SELECT constraint_name FROM information_schema.table_constraints WHERE table_name = t_name AND constraint_name = c_name) THEN
-        EXECUTE constraint_sql;
-    END IF;
+       IF NOT EXISTS (SELECT constraint_name FROM information_schema.table_constraints WHERE table_name = t_name AND constraint_name = c_name) THEN
+               EXECUTE constraint_sql;
+       END IF;
 END;
 $$ language 'plpgsql';
 
@@ -52,12 +52,12 @@ $$ language 'plpgsql';
 INSERT INTO ties_model.execution_status("schema", "status") VALUES ('ties_data', 'success');
 
 CREATE TABLE IF NOT EXISTS ties_data."ANTENNAMODULE_SERVES_ANTENNACAPABILITY" (
-    "id"            VARCHAR(511),
-    "aSide_AntennaModule"            VARCHAR(511),
-    "bSide_AntennaCapability"            VARCHAR(511),
-    "CD_sourceIds"            jsonb,
-    "CD_classifiers"            jsonb,
-    "CD_decorators"            jsonb
+       "id"                    VARCHAR(511),
+       "aSide_AntennaModule"                   VARCHAR(511),
+       "bSide_AntennaCapability"                       VARCHAR(511),
+       "CD_sourceIds"                  jsonb,
+       "CD_classifiers"                        jsonb,
+       "CD_decorators"                 jsonb
 );
 
 ALTER TABLE ONLY ties_data."ANTENNAMODULE_SERVES_ANTENNACAPABILITY" ALTER COLUMN "CD_sourceIds" SET DEFAULT '[]';
@@ -67,15 +67,13 @@ ALTER TABLE ONLY ties_data."ANTENNAMODULE_SERVES_ANTENNACAPABILITY" ALTER COLUMN
 ALTER TABLE ONLY ties_data."ANTENNAMODULE_SERVES_ANTENNACAPABILITY" ALTER COLUMN "CD_decorators" SET DEFAULT '{}';
 
 CREATE TABLE IF NOT EXISTS ties_data."AntennaCapability" (
-    "id"            VARCHAR(511),
-    "nRFqBands"            jsonb,
-    "cmId"            jsonb,
-    "geranFqBands"            jsonb,
-    "fdn"            TEXT,
-    "eUtranFqBands"            jsonb,
-    "CD_sourceIds"            jsonb,
-    "CD_classifiers"            jsonb,
-    "CD_decorators"            jsonb
+       "id"                    VARCHAR(511),
+       "eUtranFqBands"                 jsonb,
+       "geranFqBands"                  jsonb,
+       "nRFqBands"                     jsonb,
+       "CD_sourceIds"                  jsonb,
+       "CD_classifiers"                        jsonb,
+       "CD_decorators"                 jsonb
 );
 
 ALTER TABLE ONLY ties_data."AntennaCapability" ALTER COLUMN "CD_sourceIds" SET DEFAULT '[]';
@@ -85,30 +83,28 @@ ALTER TABLE ONLY ties_data."AntennaCapability" ALTER COLUMN "CD_classifiers" SET
 ALTER TABLE ONLY ties_data."AntennaCapability" ALTER COLUMN "CD_decorators" SET DEFAULT '{}';
 
 CREATE TABLE IF NOT EXISTS ties_data."AntennaModule" (
-    "id"            VARCHAR(511),
-    "totalTilt"            BIGINT,
-    "cmId"            jsonb,
-    "antennaBeamWidth"            jsonb,
-    "positionWithinSector"            TEXT,
-    "geo-location"            geography,
-    "mechanicalAntennaBearing"            BIGINT,
-    "fdn"            TEXT,
-    "electricalAntennaTilt"            BIGINT,
-    "mechanicalAntennaTilt"            BIGINT,
-    "antennaModelNumber"            TEXT,
-    "CD_sourceIds"            jsonb,
-    "CD_classifiers"            jsonb,
-    "CD_decorators"            jsonb,
-    "REL_FK_grouped-by-sector"            VARCHAR(511),
-    "REL_ID_SECTOR_GROUPS_ANTENNAMODULE"            VARCHAR(511),
-    "REL_CD_sourceIds_SECTOR_GROUPS_ANTENNAMODULE"            jsonb,
-    "REL_CD_classifiers_SECTOR_GROUPS_ANTENNAMODULE"            jsonb,
-    "REL_CD_decorators_SECTOR_GROUPS_ANTENNAMODULE"            jsonb,
-    "REL_FK_installed-at-site"            VARCHAR(511),
-    "REL_ID_ANTENNAMODULE_INSTALLED_AT_SITE"            VARCHAR(511),
-    "REL_CD_sourceIds_ANTENNAMODULE_INSTALLED_AT_SITE"            jsonb,
-    "REL_CD_classifiers_ANTENNAMODULE_INSTALLED_AT_SITE"            jsonb,
-    "REL_CD_decorators_ANTENNAMODULE_INSTALLED_AT_SITE"            jsonb
+       "id"                    VARCHAR(511),
+       "antennaModelNumber"                    TEXT,
+       "mechanicalAntennaBearing"                      BIGINT,
+       "mechanicalAntennaTilt"                 BIGINT,
+       "positionWithinSector"                  TEXT,
+       "totalTilt"                     BIGINT,
+       "electricalAntennaTilt"                 BIGINT,
+       "antennaBeamWidth"                      jsonb,
+       "geo-location"                  jsonb,
+       "CD_sourceIds"                  jsonb,
+       "CD_classifiers"                        jsonb,
+       "CD_decorators"                 jsonb,
+       "REL_FK_installed-at-site"                      VARCHAR(511),
+       "REL_ID_ANTENNAMODULE_INSTALLED_AT_SITE"                        VARCHAR(511),
+       "REL_CD_sourceIds_ANTENNAMODULE_INSTALLED_AT_SITE"                      jsonb,
+       "REL_CD_classifiers_ANTENNAMODULE_INSTALLED_AT_SITE"                    jsonb,
+       "REL_CD_decorators_ANTENNAMODULE_INSTALLED_AT_SITE"                     jsonb,
+       "REL_FK_grouped-by-sector"                      VARCHAR(511),
+       "REL_ID_SECTOR_GROUPS_ANTENNAMODULE"                    VARCHAR(511),
+       "REL_CD_sourceIds_SECTOR_GROUPS_ANTENNAMODULE"                  jsonb,
+       "REL_CD_classifiers_SECTOR_GROUPS_ANTENNAMODULE"                        jsonb,
+       "REL_CD_decorators_SECTOR_GROUPS_ANTENNAMODULE"                 jsonb
 );
 
 ALTER TABLE ONLY ties_data."AntennaModule" ALTER COLUMN "CD_sourceIds" SET DEFAULT '[]';
@@ -117,29 +113,29 @@ ALTER TABLE ONLY ties_data."AntennaModule" ALTER COLUMN "CD_classifiers" SET DEF
 
 ALTER TABLE ONLY ties_data."AntennaModule" ALTER COLUMN "CD_decorators" SET DEFAULT '{}';
 
-ALTER TABLE ONLY ties_data."AntennaModule" ALTER COLUMN "REL_CD_sourceIds_SECTOR_GROUPS_ANTENNAMODULE" SET DEFAULT '[]';
-
-ALTER TABLE ONLY ties_data."AntennaModule" ALTER COLUMN "REL_CD_classifiers_SECTOR_GROUPS_ANTENNAMODULE" SET DEFAULT '[]';
-
-ALTER TABLE ONLY ties_data."AntennaModule" ALTER COLUMN "REL_CD_decorators_SECTOR_GROUPS_ANTENNAMODULE" SET DEFAULT '{}';
-
 ALTER TABLE ONLY ties_data."AntennaModule" ALTER COLUMN "REL_CD_sourceIds_ANTENNAMODULE_INSTALLED_AT_SITE" SET DEFAULT '[]';
 
 ALTER TABLE ONLY ties_data."AntennaModule" ALTER COLUMN "REL_CD_classifiers_ANTENNAMODULE_INSTALLED_AT_SITE" SET DEFAULT '[]';
 
 ALTER TABLE ONLY ties_data."AntennaModule" ALTER COLUMN "REL_CD_decorators_ANTENNAMODULE_INSTALLED_AT_SITE" SET DEFAULT '{}';
 
+ALTER TABLE ONLY ties_data."AntennaModule" ALTER COLUMN "REL_CD_sourceIds_SECTOR_GROUPS_ANTENNAMODULE" SET DEFAULT '[]';
+
+ALTER TABLE ONLY ties_data."AntennaModule" ALTER COLUMN "REL_CD_classifiers_SECTOR_GROUPS_ANTENNAMODULE" SET DEFAULT '[]';
+
+ALTER TABLE ONLY ties_data."AntennaModule" ALTER COLUMN "REL_CD_decorators_SECTOR_GROUPS_ANTENNAMODULE" SET DEFAULT '{}';
+
 CREATE TABLE IF NOT EXISTS ties_data."CloudNamespace" (
-    "id"            VARCHAR(511),
-    "name"            TEXT,
-    "CD_sourceIds"            jsonb,
-    "CD_classifiers"            jsonb,
-    "CD_decorators"            jsonb,
-    "REL_FK_deployed-on-nodeCluster"            VARCHAR(511),
-    "REL_ID_CLOUDNAMESPACE_DEPLOYED_ON_NODECLUSTER"            VARCHAR(511),
-    "REL_CD_sourceIds_CLOUDNAMESPACE_DEPLOYED_ON_NODECLUSTER"            jsonb,
-    "REL_CD_classifiers_CLOUDNAMESPACE_DEPLOYED_ON_NODECLUSTER"            jsonb,
-    "REL_CD_decorators_CLOUDNAMESPACE_DEPLOYED_ON_NODECLUSTER"            jsonb
+       "id"                    VARCHAR(511),
+       "name"                  TEXT,
+       "CD_sourceIds"                  jsonb,
+       "CD_classifiers"                        jsonb,
+       "CD_decorators"                 jsonb,
+       "REL_FK_deployed-on-nodeCluster"                        VARCHAR(511),
+       "REL_ID_CLOUDNAMESPACE_DEPLOYED_ON_NODECLUSTER"                 VARCHAR(511),
+       "REL_CD_sourceIds_CLOUDNAMESPACE_DEPLOYED_ON_NODECLUSTER"                       jsonb,
+       "REL_CD_classifiers_CLOUDNAMESPACE_DEPLOYED_ON_NODECLUSTER"                     jsonb,
+       "REL_CD_decorators_CLOUDNAMESPACE_DEPLOYED_ON_NODECLUSTER"                      jsonb
 );
 
 ALTER TABLE ONLY ties_data."CloudNamespace" ALTER COLUMN "CD_sourceIds" SET DEFAULT '[]';
@@ -155,12 +151,12 @@ ALTER TABLE ONLY ties_data."CloudNamespace" ALTER COLUMN "REL_CD_classifiers_CLO
 ALTER TABLE ONLY ties_data."CloudNamespace" ALTER COLUMN "REL_CD_decorators_CLOUDNAMESPACE_DEPLOYED_ON_NODECLUSTER" SET DEFAULT '{}';
 
 CREATE TABLE IF NOT EXISTS ties_data."CloudSite" (
-    "id"            VARCHAR(511),
-    "name"            TEXT,
-    "geo-location"            geography,
-    "CD_sourceIds"            jsonb,
-    "CD_classifiers"            jsonb,
-    "CD_decorators"            jsonb
+       "id"                    VARCHAR(511),
+       "name"                  TEXT,
+       "geo-location"                  jsonb,
+       "CD_sourceIds"                  jsonb,
+       "CD_classifiers"                        jsonb,
+       "CD_decorators"                 jsonb
 );
 
 ALTER TABLE ONLY ties_data."CloudSite" ALTER COLUMN "CD_sourceIds" SET DEFAULT '[]';
@@ -170,11 +166,11 @@ ALTER TABLE ONLY ties_data."CloudSite" ALTER COLUMN "CD_classifiers" SET DEFAULT
 ALTER TABLE ONLY ties_data."CloudSite" ALTER COLUMN "CD_decorators" SET DEFAULT '{}';
 
 CREATE TABLE IF NOT EXISTS ties_data."CloudifiedNF" (
-    "id"            VARCHAR(511),
-    "name"            TEXT,
-    "CD_sourceIds"            jsonb,
-    "CD_classifiers"            jsonb,
-    "CD_decorators"            jsonb
+       "id"                    VARCHAR(511),
+       "name"                  TEXT,
+       "CD_sourceIds"                  jsonb,
+       "CD_classifiers"                        jsonb,
+       "CD_decorators"                 jsonb
 );
 
 ALTER TABLE ONLY ties_data."CloudifiedNF" ALTER COLUMN "CD_sourceIds" SET DEFAULT '[]';
@@ -184,24 +180,17 @@ ALTER TABLE ONLY ties_data."CloudifiedNF" ALTER COLUMN "CD_classifiers" SET DEFA
 ALTER TABLE ONLY ties_data."CloudifiedNF" ALTER COLUMN "CD_decorators" SET DEFAULT '{}';
 
 CREATE TABLE IF NOT EXISTS ties_data."ENodeBFunction" (
-    "id"            VARCHAR(511),
-    "fdn"            TEXT,
-    "cmId"            jsonb,
-    "eNodeBPlmnId"            jsonb,
-    "eNBId"            BIGINT,
-    "CD_sourceIds"            jsonb,
-    "CD_classifiers"            jsonb,
-    "CD_decorators"            jsonb,
-    "REL_FK_managed-by-managedElement"            VARCHAR(511),
-    "REL_ID_MANAGEDELEMENT_MANAGES_ENODEBFUNCTION"            VARCHAR(511),
-    "REL_CD_sourceIds_MANAGEDELEMENT_MANAGES_ENODEBFUNCTION"            jsonb,
-    "REL_CD_classifiers_MANAGEDELEMENT_MANAGES_ENODEBFUNCTION"            jsonb,
-    "REL_CD_decorators_MANAGEDELEMENT_MANAGES_ENODEBFUNCTION"            jsonb,
-    "REL_FK_serving-physicalNF"            VARCHAR(511),
-    "REL_ID_PHYSICALNF_SERVES_ENODEBFUNCTION"            VARCHAR(511),
-    "REL_CD_sourceIds_PHYSICALNF_SERVES_ENODEBFUNCTION"            jsonb,
-    "REL_CD_classifiers_PHYSICALNF_SERVES_ENODEBFUNCTION"            jsonb,
-    "REL_CD_decorators_PHYSICALNF_SERVES_ENODEBFUNCTION"            jsonb
+       "id"                    VARCHAR(511),
+       "eNBId"                 BIGINT,
+       "eNodeBPlmnId"                  jsonb,
+       "CD_sourceIds"                  jsonb,
+       "CD_classifiers"                        jsonb,
+       "CD_decorators"                 jsonb,
+       "REL_FK_managed-by-managedElement"                      VARCHAR(511),
+       "REL_ID_MANAGEDELEMENT_MANAGES_ENODEBFUNCTION"                  VARCHAR(511),
+       "REL_CD_sourceIds_MANAGEDELEMENT_MANAGES_ENODEBFUNCTION"                        jsonb,
+       "REL_CD_classifiers_MANAGEDELEMENT_MANAGES_ENODEBFUNCTION"                      jsonb,
+       "REL_CD_decorators_MANAGEDELEMENT_MANAGES_ENODEBFUNCTION"                       jsonb
 );
 
 ALTER TABLE ONLY ties_data."ENodeBFunction" ALTER COLUMN "CD_sourceIds" SET DEFAULT '[]';
@@ -216,37 +205,29 @@ ALTER TABLE ONLY ties_data."ENodeBFunction" ALTER COLUMN "REL_CD_classifiers_MAN
 
 ALTER TABLE ONLY ties_data."ENodeBFunction" ALTER COLUMN "REL_CD_decorators_MANAGEDELEMENT_MANAGES_ENODEBFUNCTION" SET DEFAULT '{}';
 
-ALTER TABLE ONLY ties_data."ENodeBFunction" ALTER COLUMN "REL_CD_sourceIds_PHYSICALNF_SERVES_ENODEBFUNCTION" SET DEFAULT '[]';
-
-ALTER TABLE ONLY ties_data."ENodeBFunction" ALTER COLUMN "REL_CD_classifiers_PHYSICALNF_SERVES_ENODEBFUNCTION" SET DEFAULT '[]';
-
-ALTER TABLE ONLY ties_data."ENodeBFunction" ALTER COLUMN "REL_CD_decorators_PHYSICALNF_SERVES_ENODEBFUNCTION" SET DEFAULT '{}';
-
 CREATE TABLE IF NOT EXISTS ties_data."EUtranCell" (
-    "id"            VARCHAR(511),
-    "earfcndl"            BIGINT,
-    "earfcnul"            BIGINT,
-    "cmId"            jsonb,
-    "tac"            BIGINT,
-    "dlChannelBandwidth"            BIGINT,
-    "fdn"            TEXT,
-    "cellId"            BIGINT,
-    "duplexType"            TEXT,
-    "channelBandwidth"            BIGINT,
-    "earfcn"            BIGINT,
-    "CD_sourceIds"            jsonb,
-    "CD_classifiers"            jsonb,
-    "CD_decorators"            jsonb,
-    "REL_FK_provided-by-enodebFunction"            VARCHAR(511),
-    "REL_ID_ENODEBFUNCTION_PROVIDES_EUTRANCELL"            VARCHAR(511),
-    "REL_CD_sourceIds_ENODEBFUNCTION_PROVIDES_EUTRANCELL"            jsonb,
-    "REL_CD_classifiers_ENODEBFUNCTION_PROVIDES_EUTRANCELL"            jsonb,
-    "REL_CD_decorators_ENODEBFUNCTION_PROVIDES_EUTRANCELL"            jsonb,
-    "REL_FK_grouped-by-sector"            VARCHAR(511),
-    "REL_ID_SECTOR_GROUPS_EUTRANCELL"            VARCHAR(511),
-    "REL_CD_sourceIds_SECTOR_GROUPS_EUTRANCELL"            jsonb,
-    "REL_CD_classifiers_SECTOR_GROUPS_EUTRANCELL"            jsonb,
-    "REL_CD_decorators_SECTOR_GROUPS_EUTRANCELL"            jsonb
+       "id"                    VARCHAR(511),
+       "cellId"                        BIGINT,
+       "earfcndl"                      BIGINT,
+       "earfcnul"                      BIGINT,
+       "dlChannelBandwidth"                    BIGINT,
+       "earfcn"                        BIGINT,
+       "channelBandwidth"                      BIGINT,
+       "tac"                   BIGINT,
+       "duplexType"                    TEXT,
+       "CD_sourceIds"                  jsonb,
+       "CD_classifiers"                        jsonb,
+       "CD_decorators"                 jsonb,
+       "REL_FK_provided-by-enodebFunction"                     VARCHAR(511),
+       "REL_ID_ENODEBFUNCTION_PROVIDES_EUTRANCELL"                     VARCHAR(511),
+       "REL_CD_sourceIds_ENODEBFUNCTION_PROVIDES_EUTRANCELL"                   jsonb,
+       "REL_CD_classifiers_ENODEBFUNCTION_PROVIDES_EUTRANCELL"                 jsonb,
+       "REL_CD_decorators_ENODEBFUNCTION_PROVIDES_EUTRANCELL"                  jsonb,
+       "REL_FK_grouped-by-sector"                      VARCHAR(511),
+       "REL_ID_SECTOR_GROUPS_EUTRANCELL"                       VARCHAR(511),
+       "REL_CD_sourceIds_SECTOR_GROUPS_EUTRANCELL"                     jsonb,
+       "REL_CD_classifiers_SECTOR_GROUPS_EUTRANCELL"                   jsonb,
+       "REL_CD_decorators_SECTOR_GROUPS_EUTRANCELL"                    jsonb
 );
 
 ALTER TABLE ONLY ties_data."EUtranCell" ALTER COLUMN "CD_sourceIds" SET DEFAULT '[]';
@@ -268,26 +249,19 @@ ALTER TABLE ONLY ties_data."EUtranCell" ALTER COLUMN "REL_CD_classifiers_SECTOR_
 ALTER TABLE ONLY ties_data."EUtranCell" ALTER COLUMN "REL_CD_decorators_SECTOR_GROUPS_EUTRANCELL" SET DEFAULT '{}';
 
 CREATE TABLE IF NOT EXISTS ties_data."GNBCUCPFunction" (
-    "id"            VARCHAR(511),
-    "cmId"            jsonb,
-    "pLMNId"            jsonb,
-    "gNBIdLength"            BIGINT,
-    "fdn"            TEXT,
-    "gNBCUName"            TEXT,
-    "gNBId"            BIGINT,
-    "CD_sourceIds"            jsonb,
-    "CD_classifiers"            jsonb,
-    "CD_decorators"            jsonb,
-    "REL_FK_managed-by-managedElement"            VARCHAR(511),
-    "REL_ID_MANAGEDELEMENT_MANAGES_GNBCUCPFUNCTION"            VARCHAR(511),
-    "REL_CD_sourceIds_MANAGEDELEMENT_MANAGES_GNBCUCPFUNCTION"            jsonb,
-    "REL_CD_classifiers_MANAGEDELEMENT_MANAGES_GNBCUCPFUNCTION"            jsonb,
-    "REL_CD_decorators_MANAGEDELEMENT_MANAGES_GNBCUCPFUNCTION"            jsonb,
-    "REL_FK_serving-physicalNF"            VARCHAR(511),
-    "REL_ID_PHYSICALNF_SERVES_GNBCUCPFUNCTION"            VARCHAR(511),
-    "REL_CD_sourceIds_PHYSICALNF_SERVES_GNBCUCPFUNCTION"            jsonb,
-    "REL_CD_classifiers_PHYSICALNF_SERVES_GNBCUCPFUNCTION"            jsonb,
-    "REL_CD_decorators_PHYSICALNF_SERVES_GNBCUCPFUNCTION"            jsonb
+       "id"                    VARCHAR(511),
+       "gNBCUName"                     TEXT,
+       "gNBId"                 BIGINT,
+       "gNBIdLength"                   BIGINT,
+       "pLMNId"                        jsonb,
+       "CD_sourceIds"                  jsonb,
+       "CD_classifiers"                        jsonb,
+       "CD_decorators"                 jsonb,
+       "REL_FK_managed-by-managedElement"                      VARCHAR(511),
+       "REL_ID_MANAGEDELEMENT_MANAGES_GNBCUCPFUNCTION"                 VARCHAR(511),
+       "REL_CD_sourceIds_MANAGEDELEMENT_MANAGES_GNBCUCPFUNCTION"                       jsonb,
+       "REL_CD_classifiers_MANAGEDELEMENT_MANAGES_GNBCUCPFUNCTION"                     jsonb,
+       "REL_CD_decorators_MANAGEDELEMENT_MANAGES_GNBCUCPFUNCTION"                      jsonb
 );
 
 ALTER TABLE ONLY ties_data."GNBCUCPFunction" ALTER COLUMN "CD_sourceIds" SET DEFAULT '[]';
@@ -302,31 +276,18 @@ ALTER TABLE ONLY ties_data."GNBCUCPFunction" ALTER COLUMN "REL_CD_classifiers_MA
 
 ALTER TABLE ONLY ties_data."GNBCUCPFunction" ALTER COLUMN "REL_CD_decorators_MANAGEDELEMENT_MANAGES_GNBCUCPFUNCTION" SET DEFAULT '{}';
 
-ALTER TABLE ONLY ties_data."GNBCUCPFunction" ALTER COLUMN "REL_CD_sourceIds_PHYSICALNF_SERVES_GNBCUCPFUNCTION" SET DEFAULT '[]';
-
-ALTER TABLE ONLY ties_data."GNBCUCPFunction" ALTER COLUMN "REL_CD_classifiers_PHYSICALNF_SERVES_GNBCUCPFUNCTION" SET DEFAULT '[]';
-
-ALTER TABLE ONLY ties_data."GNBCUCPFunction" ALTER COLUMN "REL_CD_decorators_PHYSICALNF_SERVES_GNBCUCPFUNCTION" SET DEFAULT '{}';
-
 CREATE TABLE IF NOT EXISTS ties_data."GNBCUUPFunction" (
-    "id"            VARCHAR(511),
-    "fdn"            TEXT,
-    "cmId"            jsonb,
-    "gNBIdLength"            BIGINT,
-    "gNBId"            BIGINT,
-    "CD_sourceIds"            jsonb,
-    "CD_classifiers"            jsonb,
-    "CD_decorators"            jsonb,
-    "REL_FK_managed-by-managedElement"            VARCHAR(511),
-    "REL_ID_MANAGEDELEMENT_MANAGES_GNBCUUPFUNCTION"            VARCHAR(511),
-    "REL_CD_sourceIds_MANAGEDELEMENT_MANAGES_GNBCUUPFUNCTION"            jsonb,
-    "REL_CD_classifiers_MANAGEDELEMENT_MANAGES_GNBCUUPFUNCTION"            jsonb,
-    "REL_CD_decorators_MANAGEDELEMENT_MANAGES_GNBCUUPFUNCTION"            jsonb,
-    "REL_FK_serving-physicalNF"            VARCHAR(511),
-    "REL_ID_PHYSICALNF_SERVES_GNBCUUPFUNCTION"            VARCHAR(511),
-    "REL_CD_sourceIds_PHYSICALNF_SERVES_GNBCUUPFUNCTION"            jsonb,
-    "REL_CD_classifiers_PHYSICALNF_SERVES_GNBCUUPFUNCTION"            jsonb,
-    "REL_CD_decorators_PHYSICALNF_SERVES_GNBCUUPFUNCTION"            jsonb
+       "id"                    VARCHAR(511),
+       "gNBId"                 BIGINT,
+       "gNBIdLength"                   BIGINT,
+       "CD_sourceIds"                  jsonb,
+       "CD_classifiers"                        jsonb,
+       "CD_decorators"                 jsonb,
+       "REL_FK_managed-by-managedElement"                      VARCHAR(511),
+       "REL_ID_MANAGEDELEMENT_MANAGES_GNBCUUPFUNCTION"                 VARCHAR(511),
+       "REL_CD_sourceIds_MANAGEDELEMENT_MANAGES_GNBCUUPFUNCTION"                       jsonb,
+       "REL_CD_classifiers_MANAGEDELEMENT_MANAGES_GNBCUUPFUNCTION"                     jsonb,
+       "REL_CD_decorators_MANAGEDELEMENT_MANAGES_GNBCUUPFUNCTION"                      jsonb
 );
 
 ALTER TABLE ONLY ties_data."GNBCUUPFunction" ALTER COLUMN "CD_sourceIds" SET DEFAULT '[]';
@@ -341,33 +302,20 @@ ALTER TABLE ONLY ties_data."GNBCUUPFunction" ALTER COLUMN "REL_CD_classifiers_MA
 
 ALTER TABLE ONLY ties_data."GNBCUUPFunction" ALTER COLUMN "REL_CD_decorators_MANAGEDELEMENT_MANAGES_GNBCUUPFUNCTION" SET DEFAULT '{}';
 
-ALTER TABLE ONLY ties_data."GNBCUUPFunction" ALTER COLUMN "REL_CD_sourceIds_PHYSICALNF_SERVES_GNBCUUPFUNCTION" SET DEFAULT '[]';
-
-ALTER TABLE ONLY ties_data."GNBCUUPFunction" ALTER COLUMN "REL_CD_classifiers_PHYSICALNF_SERVES_GNBCUUPFUNCTION" SET DEFAULT '[]';
-
-ALTER TABLE ONLY ties_data."GNBCUUPFunction" ALTER COLUMN "REL_CD_decorators_PHYSICALNF_SERVES_GNBCUUPFUNCTION" SET DEFAULT '{}';
-
 CREATE TABLE IF NOT EXISTS ties_data."GNBDUFunction" (
-    "id"            VARCHAR(511),
-    "cmId"            jsonb,
-    "gNBIdLength"            BIGINT,
-    "dUpLMNId"            jsonb,
-    "fdn"            TEXT,
-    "gNBDUId"            BIGINT,
-    "gNBId"            BIGINT,
-    "CD_sourceIds"            jsonb,
-    "CD_classifiers"            jsonb,
-    "CD_decorators"            jsonb,
-    "REL_FK_managed-by-managedElement"            VARCHAR(511),
-    "REL_ID_MANAGEDELEMENT_MANAGES_GNBDUFUNCTION"            VARCHAR(511),
-    "REL_CD_sourceIds_MANAGEDELEMENT_MANAGES_GNBDUFUNCTION"            jsonb,
-    "REL_CD_classifiers_MANAGEDELEMENT_MANAGES_GNBDUFUNCTION"            jsonb,
-    "REL_CD_decorators_MANAGEDELEMENT_MANAGES_GNBDUFUNCTION"            jsonb,
-    "REL_FK_serving-physicalNF"            VARCHAR(511),
-    "REL_ID_PHYSICALNF_SERVES_GNBDUFUNCTION"            VARCHAR(511),
-    "REL_CD_sourceIds_PHYSICALNF_SERVES_GNBDUFUNCTION"            jsonb,
-    "REL_CD_classifiers_PHYSICALNF_SERVES_GNBDUFUNCTION"            jsonb,
-    "REL_CD_decorators_PHYSICALNF_SERVES_GNBDUFUNCTION"            jsonb
+       "id"                    VARCHAR(511),
+       "gNBDUId"                       BIGINT,
+       "gNBId"                 BIGINT,
+       "gNBIdLength"                   BIGINT,
+       "dUpLMNId"                      jsonb,
+       "CD_sourceIds"                  jsonb,
+       "CD_classifiers"                        jsonb,
+       "CD_decorators"                 jsonb,
+       "REL_FK_managed-by-managedElement"                      VARCHAR(511),
+       "REL_ID_MANAGEDELEMENT_MANAGES_GNBDUFUNCTION"                   VARCHAR(511),
+       "REL_CD_sourceIds_MANAGEDELEMENT_MANAGES_GNBDUFUNCTION"                 jsonb,
+       "REL_CD_classifiers_MANAGEDELEMENT_MANAGES_GNBDUFUNCTION"                       jsonb,
+       "REL_CD_decorators_MANAGEDELEMENT_MANAGES_GNBDUFUNCTION"                        jsonb
 );
 
 ALTER TABLE ONLY ties_data."GNBDUFunction" ALTER COLUMN "CD_sourceIds" SET DEFAULT '[]';
@@ -382,35 +330,27 @@ ALTER TABLE ONLY ties_data."GNBDUFunction" ALTER COLUMN "REL_CD_classifiers_MANA
 
 ALTER TABLE ONLY ties_data."GNBDUFunction" ALTER COLUMN "REL_CD_decorators_MANAGEDELEMENT_MANAGES_GNBDUFUNCTION" SET DEFAULT '{}';
 
-ALTER TABLE ONLY ties_data."GNBDUFunction" ALTER COLUMN "REL_CD_sourceIds_PHYSICALNF_SERVES_GNBDUFUNCTION" SET DEFAULT '[]';
-
-ALTER TABLE ONLY ties_data."GNBDUFunction" ALTER COLUMN "REL_CD_classifiers_PHYSICALNF_SERVES_GNBDUFUNCTION" SET DEFAULT '[]';
-
-ALTER TABLE ONLY ties_data."GNBDUFunction" ALTER COLUMN "REL_CD_decorators_PHYSICALNF_SERVES_GNBDUFUNCTION" SET DEFAULT '{}';
-
 CREATE TABLE IF NOT EXISTS ties_data."LTESectorCarrier" (
-    "id"            VARCHAR(511),
-    "cmId"            jsonb,
-    "fdn"            TEXT,
-    "sectorCarrierType"            TEXT,
-    "CD_sourceIds"            jsonb,
-    "CD_classifiers"            jsonb,
-    "CD_decorators"            jsonb,
-    "REL_FK_provided-by-enodebFunction"            VARCHAR(511),
-    "REL_ID_ENODEBFUNCTION_PROVIDES_LTESECTORCARRIER"            VARCHAR(511),
-    "REL_CD_sourceIds_ENODEBFUNCTION_PROVIDES_LTESECTORCARRIER"            jsonb,
-    "REL_CD_classifiers_ENODEBFUNCTION_PROVIDES_LTESECTORCARRIER"            jsonb,
-    "REL_CD_decorators_ENODEBFUNCTION_PROVIDES_LTESECTORCARRIER"            jsonb,
-    "REL_FK_used-antennaCapability"            VARCHAR(511),
-    "REL_ID_LTESECTORCARRIER_USES_ANTENNACAPABILITY"            VARCHAR(511),
-    "REL_CD_sourceIds_LTESECTORCARRIER_USES_ANTENNACAPABILITY"            jsonb,
-    "REL_CD_classifiers_LTESECTORCARRIER_USES_ANTENNACAPABILITY"            jsonb,
-    "REL_CD_decorators_LTESECTORCARRIER_USES_ANTENNACAPABILITY"            jsonb,
-    "REL_FK_used-by-euTranCell"            VARCHAR(511),
-    "REL_ID_EUTRANCELL_USES_LTESECTORCARRIER"            VARCHAR(511),
-    "REL_CD_sourceIds_EUTRANCELL_USES_LTESECTORCARRIER"            jsonb,
-    "REL_CD_classifiers_EUTRANCELL_USES_LTESECTORCARRIER"            jsonb,
-    "REL_CD_decorators_EUTRANCELL_USES_LTESECTORCARRIER"            jsonb
+       "id"                    VARCHAR(511),
+       "sectorCarrierType"                     TEXT,
+       "CD_sourceIds"                  jsonb,
+       "CD_classifiers"                        jsonb,
+       "CD_decorators"                 jsonb,
+       "REL_FK_provided-by-enodebFunction"                     VARCHAR(511),
+       "REL_ID_ENODEBFUNCTION_PROVIDES_LTESECTORCARRIER"                       VARCHAR(511),
+       "REL_CD_sourceIds_ENODEBFUNCTION_PROVIDES_LTESECTORCARRIER"                     jsonb,
+       "REL_CD_classifiers_ENODEBFUNCTION_PROVIDES_LTESECTORCARRIER"                   jsonb,
+       "REL_CD_decorators_ENODEBFUNCTION_PROVIDES_LTESECTORCARRIER"                    jsonb,
+       "REL_FK_used-by-euTranCell"                     VARCHAR(511),
+       "REL_ID_EUTRANCELL_USES_LTESECTORCARRIER"                       VARCHAR(511),
+       "REL_CD_sourceIds_EUTRANCELL_USES_LTESECTORCARRIER"                     jsonb,
+       "REL_CD_classifiers_EUTRANCELL_USES_LTESECTORCARRIER"                   jsonb,
+       "REL_CD_decorators_EUTRANCELL_USES_LTESECTORCARRIER"                    jsonb,
+       "REL_FK_used-antennaCapability"                 VARCHAR(511),
+       "REL_ID_LTESECTORCARRIER_USES_ANTENNACAPABILITY"                        VARCHAR(511),
+       "REL_CD_sourceIds_LTESECTORCARRIER_USES_ANTENNACAPABILITY"                      jsonb,
+       "REL_CD_classifiers_LTESECTORCARRIER_USES_ANTENNACAPABILITY"                    jsonb,
+       "REL_CD_decorators_LTESECTORCARRIER_USES_ANTENNACAPABILITY"                     jsonb
 );
 
 ALTER TABLE ONLY ties_data."LTESectorCarrier" ALTER COLUMN "CD_sourceIds" SET DEFAULT '[]';
@@ -425,30 +365,28 @@ ALTER TABLE ONLY ties_data."LTESectorCarrier" ALTER COLUMN "REL_CD_classifiers_E
 
 ALTER TABLE ONLY ties_data."LTESectorCarrier" ALTER COLUMN "REL_CD_decorators_ENODEBFUNCTION_PROVIDES_LTESECTORCARRIER" SET DEFAULT '{}';
 
-ALTER TABLE ONLY ties_data."LTESectorCarrier" ALTER COLUMN "REL_CD_sourceIds_LTESECTORCARRIER_USES_ANTENNACAPABILITY" SET DEFAULT '[]';
-
-ALTER TABLE ONLY ties_data."LTESectorCarrier" ALTER COLUMN "REL_CD_classifiers_LTESECTORCARRIER_USES_ANTENNACAPABILITY" SET DEFAULT '[]';
-
-ALTER TABLE ONLY ties_data."LTESectorCarrier" ALTER COLUMN "REL_CD_decorators_LTESECTORCARRIER_USES_ANTENNACAPABILITY" SET DEFAULT '{}';
-
 ALTER TABLE ONLY ties_data."LTESectorCarrier" ALTER COLUMN "REL_CD_sourceIds_EUTRANCELL_USES_LTESECTORCARRIER" SET DEFAULT '[]';
 
 ALTER TABLE ONLY ties_data."LTESectorCarrier" ALTER COLUMN "REL_CD_classifiers_EUTRANCELL_USES_LTESECTORCARRIER" SET DEFAULT '[]';
 
 ALTER TABLE ONLY ties_data."LTESectorCarrier" ALTER COLUMN "REL_CD_decorators_EUTRANCELL_USES_LTESECTORCARRIER" SET DEFAULT '{}';
 
+ALTER TABLE ONLY ties_data."LTESectorCarrier" ALTER COLUMN "REL_CD_sourceIds_LTESECTORCARRIER_USES_ANTENNACAPABILITY" SET DEFAULT '[]';
+
+ALTER TABLE ONLY ties_data."LTESectorCarrier" ALTER COLUMN "REL_CD_classifiers_LTESECTORCARRIER_USES_ANTENNACAPABILITY" SET DEFAULT '[]';
+
+ALTER TABLE ONLY ties_data."LTESectorCarrier" ALTER COLUMN "REL_CD_decorators_LTESECTORCARRIER_USES_ANTENNACAPABILITY" SET DEFAULT '{}';
+
 CREATE TABLE IF NOT EXISTS ties_data."ManagedElement" (
-    "id"            VARCHAR(511),
-    "cmId"            jsonb,
-    "fdn"            TEXT,
-    "CD_sourceIds"            jsonb,
-    "CD_classifiers"            jsonb,
-    "CD_decorators"            jsonb,
-    "REL_FK_deployed-as-cloudifiedNF"            VARCHAR(511),
-    "REL_ID_MANAGEDELEMENT_DEPLOYED_AS_CLOUDIFIEDNF"            VARCHAR(511),
-    "REL_CD_sourceIds_MANAGEDELEMENT_DEPLOYED_AS_CLOUDIFIEDNF"            jsonb,
-    "REL_CD_classifiers_MANAGEDELEMENT_DEPLOYED_AS_CLOUDIFIEDNF"            jsonb,
-    "REL_CD_decorators_MANAGEDELEMENT_DEPLOYED_AS_CLOUDIFIEDNF"            jsonb
+       "id"                    VARCHAR(511),
+       "CD_sourceIds"                  jsonb,
+       "CD_classifiers"                        jsonb,
+       "CD_decorators"                 jsonb,
+       "REL_FK_deployed-as-cloudifiedNF"                       VARCHAR(511),
+       "REL_ID_MANAGEDELEMENT_DEPLOYED_AS_CLOUDIFIEDNF"                        VARCHAR(511),
+       "REL_CD_sourceIds_MANAGEDELEMENT_DEPLOYED_AS_CLOUDIFIEDNF"                      jsonb,
+       "REL_CD_classifiers_MANAGEDELEMENT_DEPLOYED_AS_CLOUDIFIEDNF"                    jsonb,
+       "REL_CD_decorators_MANAGEDELEMENT_DEPLOYED_AS_CLOUDIFIEDNF"                     jsonb
 );
 
 ALTER TABLE ONLY ties_data."ManagedElement" ALTER COLUMN "CD_sourceIds" SET DEFAULT '[]';
@@ -464,12 +402,12 @@ ALTER TABLE ONLY ties_data."ManagedElement" ALTER COLUMN "REL_CD_classifiers_MAN
 ALTER TABLE ONLY ties_data."ManagedElement" ALTER COLUMN "REL_CD_decorators_MANAGEDELEMENT_DEPLOYED_AS_CLOUDIFIEDNF" SET DEFAULT '{}';
 
 CREATE TABLE IF NOT EXISTS ties_data."NFDEPLOYMENT_DEPLOYED_ON_CLOUDNAMESPACE" (
-    "id"            VARCHAR(511),
-    "aSide_NFDeployment"            VARCHAR(511),
-    "bSide_CloudNamespace"            VARCHAR(511),
-    "CD_sourceIds"            jsonb,
-    "CD_classifiers"            jsonb,
-    "CD_decorators"            jsonb
+       "id"                    VARCHAR(511),
+       "aSide_NFDeployment"                    VARCHAR(511),
+       "bSide_CloudNamespace"                  VARCHAR(511),
+       "CD_sourceIds"                  jsonb,
+       "CD_classifiers"                        jsonb,
+       "CD_decorators"                 jsonb
 );
 
 ALTER TABLE ONLY ties_data."NFDEPLOYMENT_DEPLOYED_ON_CLOUDNAMESPACE" ALTER COLUMN "CD_sourceIds" SET DEFAULT '[]';
@@ -479,12 +417,12 @@ ALTER TABLE ONLY ties_data."NFDEPLOYMENT_DEPLOYED_ON_CLOUDNAMESPACE" ALTER COLUM
 ALTER TABLE ONLY ties_data."NFDEPLOYMENT_DEPLOYED_ON_CLOUDNAMESPACE" ALTER COLUMN "CD_decorators" SET DEFAULT '{}';
 
 CREATE TABLE IF NOT EXISTS ties_data."NFDEPLOYMENT_SERVES_GNBCUCPFUNCTION" (
-    "id"            VARCHAR(511),
-    "aSide_NFDeployment"            VARCHAR(511),
-    "bSide_GNBCUCPFunction"            VARCHAR(511),
-    "CD_sourceIds"            jsonb,
-    "CD_classifiers"            jsonb,
-    "CD_decorators"            jsonb
+       "id"                    VARCHAR(511),
+       "aSide_NFDeployment"                    VARCHAR(511),
+       "bSide_GNBCUCPFunction"                 VARCHAR(511),
+       "CD_sourceIds"                  jsonb,
+       "CD_classifiers"                        jsonb,
+       "CD_decorators"                 jsonb
 );
 
 ALTER TABLE ONLY ties_data."NFDEPLOYMENT_SERVES_GNBCUCPFUNCTION" ALTER COLUMN "CD_sourceIds" SET DEFAULT '[]';
@@ -494,12 +432,12 @@ ALTER TABLE ONLY ties_data."NFDEPLOYMENT_SERVES_GNBCUCPFUNCTION" ALTER COLUMN "C
 ALTER TABLE ONLY ties_data."NFDEPLOYMENT_SERVES_GNBCUCPFUNCTION" ALTER COLUMN "CD_decorators" SET DEFAULT '{}';
 
 CREATE TABLE IF NOT EXISTS ties_data."NFDEPLOYMENT_SERVES_GNBCUUPFUNCTION" (
-    "id"            VARCHAR(511),
-    "aSide_NFDeployment"            VARCHAR(511),
-    "bSide_GNBCUUPFunction"            VARCHAR(511),
-    "CD_sourceIds"            jsonb,
-    "CD_classifiers"            jsonb,
-    "CD_decorators"            jsonb
+       "id"                    VARCHAR(511),
+       "aSide_NFDeployment"                    VARCHAR(511),
+       "bSide_GNBCUUPFunction"                 VARCHAR(511),
+       "CD_sourceIds"                  jsonb,
+       "CD_classifiers"                        jsonb,
+       "CD_decorators"                 jsonb
 );
 
 ALTER TABLE ONLY ties_data."NFDEPLOYMENT_SERVES_GNBCUUPFUNCTION" ALTER COLUMN "CD_sourceIds" SET DEFAULT '[]';
@@ -509,12 +447,12 @@ ALTER TABLE ONLY ties_data."NFDEPLOYMENT_SERVES_GNBCUUPFUNCTION" ALTER COLUMN "C
 ALTER TABLE ONLY ties_data."NFDEPLOYMENT_SERVES_GNBCUUPFUNCTION" ALTER COLUMN "CD_decorators" SET DEFAULT '{}';
 
 CREATE TABLE IF NOT EXISTS ties_data."NFDEPLOYMENT_SERVES_GNBDUFUNCTION" (
-    "id"            VARCHAR(511),
-    "aSide_NFDeployment"            VARCHAR(511),
-    "bSide_GNBDUFunction"            VARCHAR(511),
-    "CD_sourceIds"            jsonb,
-    "CD_classifiers"            jsonb,
-    "CD_decorators"            jsonb
+       "id"                    VARCHAR(511),
+       "aSide_NFDeployment"                    VARCHAR(511),
+       "bSide_GNBDUFunction"                   VARCHAR(511),
+       "CD_sourceIds"                  jsonb,
+       "CD_classifiers"                        jsonb,
+       "CD_decorators"                 jsonb
 );
 
 ALTER TABLE ONLY ties_data."NFDEPLOYMENT_SERVES_GNBDUFUNCTION" ALTER COLUMN "CD_sourceIds" SET DEFAULT '[]';
@@ -524,21 +462,21 @@ ALTER TABLE ONLY ties_data."NFDEPLOYMENT_SERVES_GNBDUFUNCTION" ALTER COLUMN "CD_
 ALTER TABLE ONLY ties_data."NFDEPLOYMENT_SERVES_GNBDUFUNCTION" ALTER COLUMN "CD_decorators" SET DEFAULT '{}';
 
 CREATE TABLE IF NOT EXISTS ties_data."NFDeployment" (
-    "id"            VARCHAR(511),
-    "name"            TEXT,
-    "CD_sourceIds"            jsonb,
-    "CD_classifiers"            jsonb,
-    "CD_decorators"            jsonb,
-    "REL_FK_serviced-managedElement"            VARCHAR(511),
-    "REL_ID_NFDEPLOYMENT_SERVES_MANAGEDELEMENT"            VARCHAR(511),
-    "REL_CD_sourceIds_NFDEPLOYMENT_SERVES_MANAGEDELEMENT"            jsonb,
-    "REL_CD_classifiers_NFDEPLOYMENT_SERVES_MANAGEDELEMENT"            jsonb,
-    "REL_CD_decorators_NFDEPLOYMENT_SERVES_MANAGEDELEMENT"            jsonb,
-    "REL_FK_comprised-by-cloudifiedNF"            VARCHAR(511),
-    "REL_ID_CLOUDIFIEDNF_COMPRISES_NFDEPLOYMENT"            VARCHAR(511),
-    "REL_CD_sourceIds_CLOUDIFIEDNF_COMPRISES_NFDEPLOYMENT"            jsonb,
-    "REL_CD_classifiers_CLOUDIFIEDNF_COMPRISES_NFDEPLOYMENT"            jsonb,
-    "REL_CD_decorators_CLOUDIFIEDNF_COMPRISES_NFDEPLOYMENT"            jsonb
+       "id"                    VARCHAR(511),
+       "name"                  TEXT,
+       "CD_sourceIds"                  jsonb,
+       "CD_classifiers"                        jsonb,
+       "CD_decorators"                 jsonb,
+       "REL_FK_serviced-managedElement"                        VARCHAR(511),
+       "REL_ID_NFDEPLOYMENT_SERVES_MANAGEDELEMENT"                     VARCHAR(511),
+       "REL_CD_sourceIds_NFDEPLOYMENT_SERVES_MANAGEDELEMENT"                   jsonb,
+       "REL_CD_classifiers_NFDEPLOYMENT_SERVES_MANAGEDELEMENT"                 jsonb,
+       "REL_CD_decorators_NFDEPLOYMENT_SERVES_MANAGEDELEMENT"                  jsonb,
+       "REL_FK_comprised-by-cloudifiedNF"                      VARCHAR(511),
+       "REL_ID_CLOUDIFIEDNF_COMPRISES_NFDEPLOYMENT"                    VARCHAR(511),
+       "REL_CD_sourceIds_CLOUDIFIEDNF_COMPRISES_NFDEPLOYMENT"                  jsonb,
+       "REL_CD_classifiers_CLOUDIFIEDNF_COMPRISES_NFDEPLOYMENT"                        jsonb,
+       "REL_CD_decorators_CLOUDIFIEDNF_COMPRISES_NFDEPLOYMENT"                 jsonb
 );
 
 ALTER TABLE ONLY ties_data."NFDeployment" ALTER COLUMN "CD_sourceIds" SET DEFAULT '[]';
@@ -560,12 +498,12 @@ ALTER TABLE ONLY ties_data."NFDeployment" ALTER COLUMN "REL_CD_classifiers_CLOUD
 ALTER TABLE ONLY ties_data."NFDeployment" ALTER COLUMN "REL_CD_decorators_CLOUDIFIEDNF_COMPRISES_NFDEPLOYMENT" SET DEFAULT '{}';
 
 CREATE TABLE IF NOT EXISTS ties_data."NODECLUSTER_LOCATED_AT_CLOUDSITE" (
-    "id"            VARCHAR(511),
-    "aSide_NodeCluster"            VARCHAR(511),
-    "bSide_CloudSite"            VARCHAR(511),
-    "CD_sourceIds"            jsonb,
-    "CD_classifiers"            jsonb,
-    "CD_decorators"            jsonb
+       "id"                    VARCHAR(511),
+       "aSide_NodeCluster"                     VARCHAR(511),
+       "bSide_CloudSite"                       VARCHAR(511),
+       "CD_sourceIds"                  jsonb,
+       "CD_classifiers"                        jsonb,
+       "CD_decorators"                 jsonb
 );
 
 ALTER TABLE ONLY ties_data."NODECLUSTER_LOCATED_AT_CLOUDSITE" ALTER COLUMN "CD_sourceIds" SET DEFAULT '[]';
@@ -575,21 +513,19 @@ ALTER TABLE ONLY ties_data."NODECLUSTER_LOCATED_AT_CLOUDSITE" ALTER COLUMN "CD_c
 ALTER TABLE ONLY ties_data."NODECLUSTER_LOCATED_AT_CLOUDSITE" ALTER COLUMN "CD_decorators" SET DEFAULT '{}';
 
 CREATE TABLE IF NOT EXISTS ties_data."NRCellCU" (
-    "id"            VARCHAR(511),
-    "cmId"            jsonb,
-    "fdn"            TEXT,
-    "nCI"            BIGINT,
-    "nRTAC"            BIGINT,
-    "plmnId"            jsonb,
-    "cellLocalId"            BIGINT,
-    "CD_sourceIds"            jsonb,
-    "CD_classifiers"            jsonb,
-    "CD_decorators"            jsonb,
-    "REL_FK_provided-by-gnbcucpFunction"            VARCHAR(511),
-    "REL_ID_GNBCUCPFUNCTION_PROVIDES_NRCELLCU"            VARCHAR(511),
-    "REL_CD_sourceIds_GNBCUCPFUNCTION_PROVIDES_NRCELLCU"            jsonb,
-    "REL_CD_classifiers_GNBCUCPFUNCTION_PROVIDES_NRCELLCU"            jsonb,
-    "REL_CD_decorators_GNBCUCPFUNCTION_PROVIDES_NRCELLCU"            jsonb
+       "id"                    VARCHAR(511),
+       "cellLocalId"                   BIGINT,
+       "nCI"                   BIGINT,
+       "nRTAC"                 BIGINT,
+       "plmnId"                        jsonb,
+       "CD_sourceIds"                  jsonb,
+       "CD_classifiers"                        jsonb,
+       "CD_decorators"                 jsonb,
+       "REL_FK_provided-by-gnbcucpFunction"                    VARCHAR(511),
+       "REL_ID_GNBCUCPFUNCTION_PROVIDES_NRCELLCU"                      VARCHAR(511),
+       "REL_CD_sourceIds_GNBCUCPFUNCTION_PROVIDES_NRCELLCU"                    jsonb,
+       "REL_CD_classifiers_GNBCUCPFUNCTION_PROVIDES_NRCELLCU"                  jsonb,
+       "REL_CD_decorators_GNBCUCPFUNCTION_PROVIDES_NRCELLCU"                   jsonb
 );
 
 ALTER TABLE ONLY ties_data."NRCellCU" ALTER COLUMN "CD_sourceIds" SET DEFAULT '[]';
@@ -605,26 +541,24 @@ ALTER TABLE ONLY ties_data."NRCellCU" ALTER COLUMN "REL_CD_classifiers_GNBCUCPFU
 ALTER TABLE ONLY ties_data."NRCellCU" ALTER COLUMN "REL_CD_decorators_GNBCUCPFUNCTION_PROVIDES_NRCELLCU" SET DEFAULT '{}';
 
 CREATE TABLE IF NOT EXISTS ties_data."NRCellDU" (
-    "id"            VARCHAR(511),
-    "cmId"            jsonb,
-    "nCI"            BIGINT,
-    "nRPCI"            BIGINT,
-    "fdn"            TEXT,
-    "cellLocalId"            BIGINT,
-    "nRTAC"            BIGINT,
-    "CD_sourceIds"            jsonb,
-    "CD_classifiers"            jsonb,
-    "CD_decorators"            jsonb,
-    "REL_FK_grouped-by-sector"            VARCHAR(511),
-    "REL_ID_SECTOR_GROUPS_NRCELLDU"            VARCHAR(511),
-    "REL_CD_sourceIds_SECTOR_GROUPS_NRCELLDU"            jsonb,
-    "REL_CD_classifiers_SECTOR_GROUPS_NRCELLDU"            jsonb,
-    "REL_CD_decorators_SECTOR_GROUPS_NRCELLDU"            jsonb,
-    "REL_FK_provided-by-gnbduFunction"            VARCHAR(511),
-    "REL_ID_GNBDUFUNCTION_PROVIDES_NRCELLDU"            VARCHAR(511),
-    "REL_CD_sourceIds_GNBDUFUNCTION_PROVIDES_NRCELLDU"            jsonb,
-    "REL_CD_classifiers_GNBDUFUNCTION_PROVIDES_NRCELLDU"            jsonb,
-    "REL_CD_decorators_GNBDUFUNCTION_PROVIDES_NRCELLDU"            jsonb
+       "id"                    VARCHAR(511),
+       "cellLocalId"                   BIGINT,
+       "nCI"                   BIGINT,
+       "nRPCI"                 BIGINT,
+       "nRTAC"                 BIGINT,
+       "CD_sourceIds"                  jsonb,
+       "CD_classifiers"                        jsonb,
+       "CD_decorators"                 jsonb,
+       "REL_FK_provided-by-gnbduFunction"                      VARCHAR(511),
+       "REL_ID_GNBDUFUNCTION_PROVIDES_NRCELLDU"                        VARCHAR(511),
+       "REL_CD_sourceIds_GNBDUFUNCTION_PROVIDES_NRCELLDU"                      jsonb,
+       "REL_CD_classifiers_GNBDUFUNCTION_PROVIDES_NRCELLDU"                    jsonb,
+       "REL_CD_decorators_GNBDUFUNCTION_PROVIDES_NRCELLDU"                     jsonb,
+       "REL_FK_grouped-by-sector"                      VARCHAR(511),
+       "REL_ID_SECTOR_GROUPS_NRCELLDU"                 VARCHAR(511),
+       "REL_CD_sourceIds_SECTOR_GROUPS_NRCELLDU"                       jsonb,
+       "REL_CD_classifiers_SECTOR_GROUPS_NRCELLDU"                     jsonb,
+       "REL_CD_decorators_SECTOR_GROUPS_NRCELLDU"                      jsonb
 );
 
 ALTER TABLE ONLY ties_data."NRCellDU" ALTER COLUMN "CD_sourceIds" SET DEFAULT '[]';
@@ -633,45 +567,43 @@ ALTER TABLE ONLY ties_data."NRCellDU" ALTER COLUMN "CD_classifiers" SET DEFAULT
 
 ALTER TABLE ONLY ties_data."NRCellDU" ALTER COLUMN "CD_decorators" SET DEFAULT '{}';
 
-ALTER TABLE ONLY ties_data."NRCellDU" ALTER COLUMN "REL_CD_sourceIds_SECTOR_GROUPS_NRCELLDU" SET DEFAULT '[]';
-
-ALTER TABLE ONLY ties_data."NRCellDU" ALTER COLUMN "REL_CD_classifiers_SECTOR_GROUPS_NRCELLDU" SET DEFAULT '[]';
-
-ALTER TABLE ONLY ties_data."NRCellDU" ALTER COLUMN "REL_CD_decorators_SECTOR_GROUPS_NRCELLDU" SET DEFAULT '{}';
-
 ALTER TABLE ONLY ties_data."NRCellDU" ALTER COLUMN "REL_CD_sourceIds_GNBDUFUNCTION_PROVIDES_NRCELLDU" SET DEFAULT '[]';
 
 ALTER TABLE ONLY ties_data."NRCellDU" ALTER COLUMN "REL_CD_classifiers_GNBDUFUNCTION_PROVIDES_NRCELLDU" SET DEFAULT '[]';
 
 ALTER TABLE ONLY ties_data."NRCellDU" ALTER COLUMN "REL_CD_decorators_GNBDUFUNCTION_PROVIDES_NRCELLDU" SET DEFAULT '{}';
 
+ALTER TABLE ONLY ties_data."NRCellDU" ALTER COLUMN "REL_CD_sourceIds_SECTOR_GROUPS_NRCELLDU" SET DEFAULT '[]';
+
+ALTER TABLE ONLY ties_data."NRCellDU" ALTER COLUMN "REL_CD_classifiers_SECTOR_GROUPS_NRCELLDU" SET DEFAULT '[]';
+
+ALTER TABLE ONLY ties_data."NRCellDU" ALTER COLUMN "REL_CD_decorators_SECTOR_GROUPS_NRCELLDU" SET DEFAULT '{}';
+
 CREATE TABLE IF NOT EXISTS ties_data."NRSectorCarrier" (
-    "id"            VARCHAR(511),
-    "bSChannelBwDL"            BIGINT,
-    "cmId"            jsonb,
-    "arfcnDL"            BIGINT,
-    "frequencyUL"            BIGINT,
-    "fdn"            TEXT,
-    "arfcnUL"            BIGINT,
-    "frequencyDL"            BIGINT,
-    "CD_sourceIds"            jsonb,
-    "CD_classifiers"            jsonb,
-    "CD_decorators"            jsonb,
-    "REL_FK_used-by-nrCellDu"            VARCHAR(511),
-    "REL_ID_NRCELLDU_USES_NRSECTORCARRIER"            VARCHAR(511),
-    "REL_CD_sourceIds_NRCELLDU_USES_NRSECTORCARRIER"            jsonb,
-    "REL_CD_classifiers_NRCELLDU_USES_NRSECTORCARRIER"            jsonb,
-    "REL_CD_decorators_NRCELLDU_USES_NRSECTORCARRIER"            jsonb,
-    "REL_FK_provided-by-gnbduFunction"            VARCHAR(511),
-    "REL_ID_GNBDUFUNCTION_PROVIDES_NRSECTORCARRIER"            VARCHAR(511),
-    "REL_CD_sourceIds_GNBDUFUNCTION_PROVIDES_NRSECTORCARRIER"            jsonb,
-    "REL_CD_classifiers_GNBDUFUNCTION_PROVIDES_NRSECTORCARRIER"            jsonb,
-    "REL_CD_decorators_GNBDUFUNCTION_PROVIDES_NRSECTORCARRIER"            jsonb,
-    "REL_FK_used-antennaCapability"            VARCHAR(511),
-    "REL_ID_NRSECTORCARRIER_USES_ANTENNACAPABILITY"            VARCHAR(511),
-    "REL_CD_sourceIds_NRSECTORCARRIER_USES_ANTENNACAPABILITY"            jsonb,
-    "REL_CD_classifiers_NRSECTORCARRIER_USES_ANTENNACAPABILITY"            jsonb,
-    "REL_CD_decorators_NRSECTORCARRIER_USES_ANTENNACAPABILITY"            jsonb
+       "id"                    VARCHAR(511),
+       "arfcnDL"                       BIGINT,
+       "arfcnUL"                       BIGINT,
+       "frequencyDL"                   BIGINT,
+       "frequencyUL"                   BIGINT,
+       "bSChannelBwDL"                 BIGINT,
+       "CD_sourceIds"                  jsonb,
+       "CD_classifiers"                        jsonb,
+       "CD_decorators"                 jsonb,
+       "REL_FK_provided-by-gnbduFunction"                      VARCHAR(511),
+       "REL_ID_GNBDUFUNCTION_PROVIDES_NRSECTORCARRIER"                 VARCHAR(511),
+       "REL_CD_sourceIds_GNBDUFUNCTION_PROVIDES_NRSECTORCARRIER"                       jsonb,
+       "REL_CD_classifiers_GNBDUFUNCTION_PROVIDES_NRSECTORCARRIER"                     jsonb,
+       "REL_CD_decorators_GNBDUFUNCTION_PROVIDES_NRSECTORCARRIER"                      jsonb,
+       "REL_FK_used-by-nrCellDu"                       VARCHAR(511),
+       "REL_ID_NRCELLDU_USES_NRSECTORCARRIER"                  VARCHAR(511),
+       "REL_CD_sourceIds_NRCELLDU_USES_NRSECTORCARRIER"                        jsonb,
+       "REL_CD_classifiers_NRCELLDU_USES_NRSECTORCARRIER"                      jsonb,
+       "REL_CD_decorators_NRCELLDU_USES_NRSECTORCARRIER"                       jsonb,
+       "REL_FK_used-antennaCapability"                 VARCHAR(511),
+       "REL_ID_NRSECTORCARRIER_USES_ANTENNACAPABILITY"                 VARCHAR(511),
+       "REL_CD_sourceIds_NRSECTORCARRIER_USES_ANTENNACAPABILITY"                       jsonb,
+       "REL_CD_classifiers_NRSECTORCARRIER_USES_ANTENNACAPABILITY"                     jsonb,
+       "REL_CD_decorators_NRSECTORCARRIER_USES_ANTENNACAPABILITY"                      jsonb
 );
 
 ALTER TABLE ONLY ties_data."NRSectorCarrier" ALTER COLUMN "CD_sourceIds" SET DEFAULT '[]';
@@ -680,18 +612,18 @@ ALTER TABLE ONLY ties_data."NRSectorCarrier" ALTER COLUMN "CD_classifiers" SET D
 
 ALTER TABLE ONLY ties_data."NRSectorCarrier" ALTER COLUMN "CD_decorators" SET DEFAULT '{}';
 
-ALTER TABLE ONLY ties_data."NRSectorCarrier" ALTER COLUMN "REL_CD_sourceIds_NRCELLDU_USES_NRSECTORCARRIER" SET DEFAULT '[]';
-
-ALTER TABLE ONLY ties_data."NRSectorCarrier" ALTER COLUMN "REL_CD_classifiers_NRCELLDU_USES_NRSECTORCARRIER" SET DEFAULT '[]';
-
-ALTER TABLE ONLY ties_data."NRSectorCarrier" ALTER COLUMN "REL_CD_decorators_NRCELLDU_USES_NRSECTORCARRIER" SET DEFAULT '{}';
-
 ALTER TABLE ONLY ties_data."NRSectorCarrier" ALTER COLUMN "REL_CD_sourceIds_GNBDUFUNCTION_PROVIDES_NRSECTORCARRIER" SET DEFAULT '[]';
 
 ALTER TABLE ONLY ties_data."NRSectorCarrier" ALTER COLUMN "REL_CD_classifiers_GNBDUFUNCTION_PROVIDES_NRSECTORCARRIER" SET DEFAULT '[]';
 
 ALTER TABLE ONLY ties_data."NRSectorCarrier" ALTER COLUMN "REL_CD_decorators_GNBDUFUNCTION_PROVIDES_NRSECTORCARRIER" SET DEFAULT '{}';
 
+ALTER TABLE ONLY ties_data."NRSectorCarrier" ALTER COLUMN "REL_CD_sourceIds_NRCELLDU_USES_NRSECTORCARRIER" SET DEFAULT '[]';
+
+ALTER TABLE ONLY ties_data."NRSectorCarrier" ALTER COLUMN "REL_CD_classifiers_NRCELLDU_USES_NRSECTORCARRIER" SET DEFAULT '[]';
+
+ALTER TABLE ONLY ties_data."NRSectorCarrier" ALTER COLUMN "REL_CD_decorators_NRCELLDU_USES_NRSECTORCARRIER" SET DEFAULT '{}';
+
 ALTER TABLE ONLY ties_data."NRSectorCarrier" ALTER COLUMN "REL_CD_sourceIds_NRSECTORCARRIER_USES_ANTENNACAPABILITY" SET DEFAULT '[]';
 
 ALTER TABLE ONLY ties_data."NRSectorCarrier" ALTER COLUMN "REL_CD_classifiers_NRSECTORCARRIER_USES_ANTENNACAPABILITY" SET DEFAULT '[]';
@@ -699,11 +631,11 @@ ALTER TABLE ONLY ties_data."NRSectorCarrier" ALTER COLUMN "REL_CD_classifiers_NR
 ALTER TABLE ONLY ties_data."NRSectorCarrier" ALTER COLUMN "REL_CD_decorators_NRSECTORCARRIER_USES_ANTENNACAPABILITY" SET DEFAULT '{}';
 
 CREATE TABLE IF NOT EXISTS ties_data."NodeCluster" (
-    "id"            VARCHAR(511),
-    "name"            TEXT,
-    "CD_sourceIds"            jsonb,
-    "CD_classifiers"            jsonb,
-    "CD_decorators"            jsonb
+       "id"                    VARCHAR(511),
+       "name"                  TEXT,
+       "CD_sourceIds"                  jsonb,
+       "CD_classifiers"                        jsonb,
+       "CD_decorators"                 jsonb
 );
 
 ALTER TABLE ONLY ties_data."NodeCluster" ALTER COLUMN "CD_sourceIds" SET DEFAULT '[]';
@@ -712,42 +644,14 @@ ALTER TABLE ONLY ties_data."NodeCluster" ALTER COLUMN "CD_classifiers" SET DEFAU
 
 ALTER TABLE ONLY ties_data."NodeCluster" ALTER COLUMN "CD_decorators" SET DEFAULT '{}';
 
-CREATE TABLE IF NOT EXISTS ties_data."PhysicalNF" (
-    "id"            VARCHAR(511),
-    "cmId"            jsonb,
-    "geo-location"            geography,
-    "name"            TEXT,
-    "type"            TEXT,
-    "CD_sourceIds"            jsonb,
-    "CD_classifiers"            jsonb,
-    "CD_decorators"            jsonb,
-    "REL_FK_installed-at-site"            VARCHAR(511),
-    "REL_ID_PHYSICALNF_INSTALLED_AT_SITE"            VARCHAR(511),
-    "REL_CD_sourceIds_PHYSICALNF_INSTALLED_AT_SITE"            jsonb,
-    "REL_CD_classifiers_PHYSICALNF_INSTALLED_AT_SITE"            jsonb,
-    "REL_CD_decorators_PHYSICALNF_INSTALLED_AT_SITE"            jsonb
-);
-
-ALTER TABLE ONLY ties_data."PhysicalNF" ALTER COLUMN "CD_sourceIds" SET DEFAULT '[]';
-
-ALTER TABLE ONLY ties_data."PhysicalNF" ALTER COLUMN "CD_classifiers" SET DEFAULT '[]';
-
-ALTER TABLE ONLY ties_data."PhysicalNF" ALTER COLUMN "CD_decorators" SET DEFAULT '{}';
-
-ALTER TABLE ONLY ties_data."PhysicalNF" ALTER COLUMN "REL_CD_sourceIds_PHYSICALNF_INSTALLED_AT_SITE" SET DEFAULT '[]';
-
-ALTER TABLE ONLY ties_data."PhysicalNF" ALTER COLUMN "REL_CD_classifiers_PHYSICALNF_INSTALLED_AT_SITE" SET DEFAULT '[]';
-
-ALTER TABLE ONLY ties_data."PhysicalNF" ALTER COLUMN "REL_CD_decorators_PHYSICALNF_INSTALLED_AT_SITE" SET DEFAULT '{}';
-
 CREATE TABLE IF NOT EXISTS ties_data."Sector" (
-    "id"            VARCHAR(511),
-    "geo-location"            geography,
-    "sectorId"            BIGINT,
-    "azimuth"            DECIMAL,
-    "CD_sourceIds"            jsonb,
-    "CD_classifiers"            jsonb,
-    "CD_decorators"            jsonb
+       "id"                    VARCHAR(511),
+       "sectorId"                      BIGINT,
+       "azimuth"                       DECIMAL,
+       "geo-location"                  jsonb,
+       "CD_sourceIds"                  jsonb,
+       "CD_classifiers"                        jsonb,
+       "CD_decorators"                 jsonb
 );
 
 ALTER TABLE ONLY ties_data."Sector" ALTER COLUMN "CD_sourceIds" SET DEFAULT '[]';
@@ -757,13 +661,12 @@ ALTER TABLE ONLY ties_data."Sector" ALTER COLUMN "CD_classifiers" SET DEFAULT '[
 ALTER TABLE ONLY ties_data."Sector" ALTER COLUMN "CD_decorators" SET DEFAULT '{}';
 
 CREATE TABLE IF NOT EXISTS ties_data."Site" (
-    "id"            VARCHAR(511),
-    "cmId"            jsonb,
-    "geo-location"            geography,
-    "name"            TEXT,
-    "CD_sourceIds"            jsonb,
-    "CD_classifiers"            jsonb,
-    "CD_decorators"            jsonb
+       "id"                    VARCHAR(511),
+       "name"                  TEXT,
+       "geo-location"                  jsonb,
+       "CD_sourceIds"                  jsonb,
+       "CD_classifiers"                        jsonb,
+       "CD_decorators"                 jsonb
 );
 
 ALTER TABLE ONLY ties_data."Site" ALTER COLUMN "CD_sourceIds" SET DEFAULT '[]';
@@ -773,548 +676,478 @@ ALTER TABLE ONLY ties_data."Site" ALTER COLUMN "CD_classifiers" SET DEFAULT '[]'
 ALTER TABLE ONLY ties_data."Site" ALTER COLUMN "CD_decorators" SET DEFAULT '{}';
 
 SELECT ties_data.create_constraint_if_not_exists(
-    'ANTENNAMODULE_SERVES_ANTENNACAPABILITY',
+       'ANTENNAMODULE_SERVES_ANTENNACAPABILITY',
  'PK_ANTENNAMODULE_SERVES_ANTENNACAPABILITY_id',
  'ALTER TABLE ties_data."ANTENNAMODULE_SERVES_ANTENNACAPABILITY" ADD CONSTRAINT "PK_ANTENNAMODULE_SERVES_ANTENNACAPABILITY_id" PRIMARY KEY ("id");'
 );
 
 SELECT ties_data.create_constraint_if_not_exists(
-    'AntennaCapability',
+       'AntennaCapability',
  'PK_AntennaCapability_id',
  'ALTER TABLE ties_data."AntennaCapability" ADD CONSTRAINT "PK_AntennaCapability_id" PRIMARY KEY ("id");'
 );
 
 SELECT ties_data.create_constraint_if_not_exists(
-    'AntennaModule',
+       'AntennaModule',
  'PK_AntennaModule_id',
  'ALTER TABLE ties_data."AntennaModule" ADD CONSTRAINT "PK_AntennaModule_id" PRIMARY KEY ("id");'
 );
 
 SELECT ties_data.create_constraint_if_not_exists(
-    'CloudNamespace',
+       'CloudNamespace',
  'PK_CloudNamespace_id',
  'ALTER TABLE ties_data."CloudNamespace" ADD CONSTRAINT "PK_CloudNamespace_id" PRIMARY KEY ("id");'
 );
 
 SELECT ties_data.create_constraint_if_not_exists(
-    'CloudSite',
+       'CloudSite',
  'PK_CloudSite_id',
  'ALTER TABLE ties_data."CloudSite" ADD CONSTRAINT "PK_CloudSite_id" PRIMARY KEY ("id");'
 );
 
 SELECT ties_data.create_constraint_if_not_exists(
-    'CloudifiedNF',
+       'CloudifiedNF',
  'PK_CloudifiedNF_id',
  'ALTER TABLE ties_data."CloudifiedNF" ADD CONSTRAINT "PK_CloudifiedNF_id" PRIMARY KEY ("id");'
 );
 
 SELECT ties_data.create_constraint_if_not_exists(
-    'ENodeBFunction',
+       'ENodeBFunction',
  'PK_ENodeBFunction_id',
  'ALTER TABLE ties_data."ENodeBFunction" ADD CONSTRAINT "PK_ENodeBFunction_id" PRIMARY KEY ("id");'
 );
 
 SELECT ties_data.create_constraint_if_not_exists(
-    'EUtranCell',
+       'EUtranCell',
  'PK_EUtranCell_id',
  'ALTER TABLE ties_data."EUtranCell" ADD CONSTRAINT "PK_EUtranCell_id" PRIMARY KEY ("id");'
 );
 
 SELECT ties_data.create_constraint_if_not_exists(
-    'GNBCUCPFunction',
+       'GNBCUCPFunction',
  'PK_GNBCUCPFunction_id',
  'ALTER TABLE ties_data."GNBCUCPFunction" ADD CONSTRAINT "PK_GNBCUCPFunction_id" PRIMARY KEY ("id");'
 );
 
 SELECT ties_data.create_constraint_if_not_exists(
-    'GNBCUUPFunction',
+       'GNBCUUPFunction',
  'PK_GNBCUUPFunction_id',
  'ALTER TABLE ties_data."GNBCUUPFunction" ADD CONSTRAINT "PK_GNBCUUPFunction_id" PRIMARY KEY ("id");'
 );
 
 SELECT ties_data.create_constraint_if_not_exists(
-    'GNBDUFunction',
+       'GNBDUFunction',
  'PK_GNBDUFunction_id',
  'ALTER TABLE ties_data."GNBDUFunction" ADD CONSTRAINT "PK_GNBDUFunction_id" PRIMARY KEY ("id");'
 );
 
 SELECT ties_data.create_constraint_if_not_exists(
-    'LTESectorCarrier',
+       'LTESectorCarrier',
  'PK_LTESectorCarrier_id',
  'ALTER TABLE ties_data."LTESectorCarrier" ADD CONSTRAINT "PK_LTESectorCarrier_id" PRIMARY KEY ("id");'
 );
 
 SELECT ties_data.create_constraint_if_not_exists(
-    'ManagedElement',
+       'ManagedElement',
  'PK_ManagedElement_id',
  'ALTER TABLE ties_data."ManagedElement" ADD CONSTRAINT "PK_ManagedElement_id" PRIMARY KEY ("id");'
 );
 
 SELECT ties_data.create_constraint_if_not_exists(
-    'NFDEPLOYMENT_DEPLOYED_ON_CLOUDNAMESPACE',
+       'NFDEPLOYMENT_DEPLOYED_ON_CLOUDNAMESPACE',
  'PK_NFDEPLOYMENT_DEPLOYED_ON_CLOUDNAMESPACE_id',
  'ALTER TABLE ties_data."NFDEPLOYMENT_DEPLOYED_ON_CLOUDNAMESPACE" ADD CONSTRAINT "PK_NFDEPLOYMENT_DEPLOYED_ON_CLOUDNAMESPACE_id" PRIMARY KEY ("id");'
 );
 
 SELECT ties_data.create_constraint_if_not_exists(
-    'NFDEPLOYMENT_SERVES_GNBCUCPFUNCTION',
+       'NFDEPLOYMENT_SERVES_GNBCUCPFUNCTION',
  'PK_NFDEPLOYMENT_SERVES_GNBCUCPFUNCTION_id',
  'ALTER TABLE ties_data."NFDEPLOYMENT_SERVES_GNBCUCPFUNCTION" ADD CONSTRAINT "PK_NFDEPLOYMENT_SERVES_GNBCUCPFUNCTION_id" PRIMARY KEY ("id");'
 );
 
 SELECT ties_data.create_constraint_if_not_exists(
-    'NFDEPLOYMENT_SERVES_GNBCUUPFUNCTION',
+       'NFDEPLOYMENT_SERVES_GNBCUUPFUNCTION',
  'PK_NFDEPLOYMENT_SERVES_GNBCUUPFUNCTION_id',
  'ALTER TABLE ties_data."NFDEPLOYMENT_SERVES_GNBCUUPFUNCTION" ADD CONSTRAINT "PK_NFDEPLOYMENT_SERVES_GNBCUUPFUNCTION_id" PRIMARY KEY ("id");'
 );
 
 SELECT ties_data.create_constraint_if_not_exists(
-    'NFDEPLOYMENT_SERVES_GNBDUFUNCTION',
+       'NFDEPLOYMENT_SERVES_GNBDUFUNCTION',
  'PK_NFDEPLOYMENT_SERVES_GNBDUFUNCTION_id',
  'ALTER TABLE ties_data."NFDEPLOYMENT_SERVES_GNBDUFUNCTION" ADD CONSTRAINT "PK_NFDEPLOYMENT_SERVES_GNBDUFUNCTION_id" PRIMARY KEY ("id");'
 );
 
 SELECT ties_data.create_constraint_if_not_exists(
-    'NFDeployment',
+       'NFDeployment',
  'PK_NFDeployment_id',
  'ALTER TABLE ties_data."NFDeployment" ADD CONSTRAINT "PK_NFDeployment_id" PRIMARY KEY ("id");'
 );
 
 SELECT ties_data.create_constraint_if_not_exists(
-    'NODECLUSTER_LOCATED_AT_CLOUDSITE',
+       'NODECLUSTER_LOCATED_AT_CLOUDSITE',
  'PK_NODECLUSTER_LOCATED_AT_CLOUDSITE_id',
  'ALTER TABLE ties_data."NODECLUSTER_LOCATED_AT_CLOUDSITE" ADD CONSTRAINT "PK_NODECLUSTER_LOCATED_AT_CLOUDSITE_id" PRIMARY KEY ("id");'
 );
 
 SELECT ties_data.create_constraint_if_not_exists(
-    'NRCellCU',
+       'NRCellCU',
  'PK_NRCellCU_id',
  'ALTER TABLE ties_data."NRCellCU" ADD CONSTRAINT "PK_NRCellCU_id" PRIMARY KEY ("id");'
 );
 
 SELECT ties_data.create_constraint_if_not_exists(
-    'NRCellDU',
+       'NRCellDU',
  'PK_NRCellDU_id',
  'ALTER TABLE ties_data."NRCellDU" ADD CONSTRAINT "PK_NRCellDU_id" PRIMARY KEY ("id");'
 );
 
 SELECT ties_data.create_constraint_if_not_exists(
-    'NRSectorCarrier',
+       'NRSectorCarrier',
  'PK_NRSectorCarrier_id',
  'ALTER TABLE ties_data."NRSectorCarrier" ADD CONSTRAINT "PK_NRSectorCarrier_id" PRIMARY KEY ("id");'
 );
 
 SELECT ties_data.create_constraint_if_not_exists(
-    'NodeCluster',
+       'NodeCluster',
  'PK_NodeCluster_id',
  'ALTER TABLE ties_data."NodeCluster" ADD CONSTRAINT "PK_NodeCluster_id" PRIMARY KEY ("id");'
 );
 
 SELECT ties_data.create_constraint_if_not_exists(
-    'PhysicalNF',
- 'PK_PhysicalNF_id',
- 'ALTER TABLE ties_data."PhysicalNF" ADD CONSTRAINT "PK_PhysicalNF_id" PRIMARY KEY ("id");'
-);
-
-SELECT ties_data.create_constraint_if_not_exists(
-    'Sector',
+       'Sector',
  'PK_Sector_id',
  'ALTER TABLE ties_data."Sector" ADD CONSTRAINT "PK_Sector_id" PRIMARY KEY ("id");'
 );
 
 SELECT ties_data.create_constraint_if_not_exists(
-    'Site',
+       'Site',
  'PK_Site_id',
  'ALTER TABLE ties_data."Site" ADD CONSTRAINT "PK_Site_id" PRIMARY KEY ("id");'
 );
 
 SELECT ties_data.create_constraint_if_not_exists(
-    'ANTENNAMODULE_SERVES_ANTENNACAPABILITY',
+       'ANTENNAMODULE_SERVES_ANTENNACAPABILITY',
  'FK_ANTENNAMODULE_SERVES_ANTENNACAPABILITY_aSide_AntennaModule',
  'ALTER TABLE ties_data."ANTENNAMODULE_SERVES_ANTENNACAPABILITY" ADD CONSTRAINT "FK_ANTENNAMODULE_SERVES_ANTENNACAPABILITY_aSide_AntennaModule" FOREIGN KEY ("aSide_AntennaModule") REFERENCES ties_data."AntennaModule" (id) ON DELETE CASCADE;'
 );
 
 SELECT ties_data.create_constraint_if_not_exists(
-    'ANTENNAMODULE_SERVES_ANTENNACAPABILITY',
+       'ANTENNAMODULE_SERVES_ANTENNACAPABILITY',
  'FK_AB3CEA707D389B107F1D10BC724542418E02ABEC',
  'ALTER TABLE ties_data."ANTENNAMODULE_SERVES_ANTENNACAPABILITY" ADD CONSTRAINT "FK_AB3CEA707D389B107F1D10BC724542418E02ABEC" FOREIGN KEY ("bSide_AntennaCapability") REFERENCES ties_data."AntennaCapability" (id) ON DELETE CASCADE;'
 );
 
 SELECT ties_data.create_constraint_if_not_exists(
-    'AntennaModule',
- 'FK_AntennaModule_REL_FK_grouped-by-sector',
- 'ALTER TABLE ties_data."AntennaModule" ADD CONSTRAINT "FK_AntennaModule_REL_FK_grouped-by-sector" FOREIGN KEY ("REL_FK_grouped-by-sector") REFERENCES ties_data."Sector" (id) ON DELETE CASCADE;'
+       'AntennaModule',
+ 'FK_AntennaModule_REL_FK_installed-at-site',
+ 'ALTER TABLE ties_data."AntennaModule" ADD CONSTRAINT "FK_AntennaModule_REL_FK_installed-at-site" FOREIGN KEY ("REL_FK_installed-at-site") REFERENCES ties_data."Site" (id) ON DELETE CASCADE;'
 );
 
 SELECT ties_data.create_constraint_if_not_exists(
-    'AntennaModule',
- 'UNIQUE_AntennaModule_REL_ID_SECTOR_GROUPS_ANTENNAMODULE',
- 'ALTER TABLE ties_data."AntennaModule" ADD CONSTRAINT "UNIQUE_AntennaModule_REL_ID_SECTOR_GROUPS_ANTENNAMODULE" UNIQUE ("REL_ID_SECTOR_GROUPS_ANTENNAMODULE");'
+       'AntennaModule',
+ 'UNIQUE_AntennaModule_REL_ID_ANTENNAMODULE_INSTALLED_AT_SITE',
+ 'ALTER TABLE ties_data."AntennaModule" ADD CONSTRAINT "UNIQUE_AntennaModule_REL_ID_ANTENNAMODULE_INSTALLED_AT_SITE" UNIQUE ("REL_ID_ANTENNAMODULE_INSTALLED_AT_SITE");'
 );
 
 SELECT ties_data.create_constraint_if_not_exists(
-    'AntennaModule',
- 'FK_AntennaModule_REL_FK_installed-at-site',
- 'ALTER TABLE ties_data."AntennaModule" ADD CONSTRAINT "FK_AntennaModule_REL_FK_installed-at-site" FOREIGN KEY ("REL_FK_installed-at-site") REFERENCES ties_data."Site" (id) ON DELETE CASCADE;'
+       'AntennaModule',
+ 'FK_AntennaModule_REL_FK_grouped-by-sector',
+ 'ALTER TABLE ties_data."AntennaModule" ADD CONSTRAINT "FK_AntennaModule_REL_FK_grouped-by-sector" FOREIGN KEY ("REL_FK_grouped-by-sector") REFERENCES ties_data."Sector" (id) ON DELETE CASCADE;'
 );
 
 SELECT ties_data.create_constraint_if_not_exists(
-    'AntennaModule',
- 'UNIQUE_AntennaModule_REL_ID_ANTENNAMODULE_INSTALLED_AT_SITE',
- 'ALTER TABLE ties_data."AntennaModule" ADD CONSTRAINT "UNIQUE_AntennaModule_REL_ID_ANTENNAMODULE_INSTALLED_AT_SITE" UNIQUE ("REL_ID_ANTENNAMODULE_INSTALLED_AT_SITE");'
+       'AntennaModule',
+ 'UNIQUE_AntennaModule_REL_ID_SECTOR_GROUPS_ANTENNAMODULE',
+ 'ALTER TABLE ties_data."AntennaModule" ADD CONSTRAINT "UNIQUE_AntennaModule_REL_ID_SECTOR_GROUPS_ANTENNAMODULE" UNIQUE ("REL_ID_SECTOR_GROUPS_ANTENNAMODULE");'
 );
 
 SELECT ties_data.create_constraint_if_not_exists(
-    'CloudNamespace',
+       'CloudNamespace',
  'FK_CloudNamespace_REL_FK_deployed-on-nodeCluster',
  'ALTER TABLE ties_data."CloudNamespace" ADD CONSTRAINT "FK_CloudNamespace_REL_FK_deployed-on-nodeCluster" FOREIGN KEY ("REL_FK_deployed-on-nodeCluster") REFERENCES ties_data."NodeCluster" (id) ON DELETE CASCADE;'
 );
 
 SELECT ties_data.create_constraint_if_not_exists(
-    'CloudNamespace',
+       'CloudNamespace',
  'UNIQUE_C72E1EF93E1AC8FA53D20808E775FF012ACB46F0',
  'ALTER TABLE ties_data."CloudNamespace" ADD CONSTRAINT "UNIQUE_C72E1EF93E1AC8FA53D20808E775FF012ACB46F0" UNIQUE ("REL_ID_CLOUDNAMESPACE_DEPLOYED_ON_NODECLUSTER");'
 );
 
 SELECT ties_data.create_constraint_if_not_exists(
-    'ENodeBFunction',
+       'ENodeBFunction',
  'FK_ENodeBFunction_REL_FK_managed-by-managedElement',
  'ALTER TABLE ties_data."ENodeBFunction" ADD CONSTRAINT "FK_ENodeBFunction_REL_FK_managed-by-managedElement" FOREIGN KEY ("REL_FK_managed-by-managedElement") REFERENCES ties_data."ManagedElement" (id) ON DELETE CASCADE;'
 );
 
 SELECT ties_data.create_constraint_if_not_exists(
-    'ENodeBFunction',
+       'ENodeBFunction',
  'UNIQUE_F33037EE8037D0606D15FFB45EE8A27FD6DE30EE',
  'ALTER TABLE ties_data."ENodeBFunction" ADD CONSTRAINT "UNIQUE_F33037EE8037D0606D15FFB45EE8A27FD6DE30EE" UNIQUE ("REL_ID_MANAGEDELEMENT_MANAGES_ENODEBFUNCTION");'
 );
 
 SELECT ties_data.create_constraint_if_not_exists(
-    'ENodeBFunction',
- 'FK_ENodeBFunction_REL_FK_serving-physicalNF',
- 'ALTER TABLE ties_data."ENodeBFunction" ADD CONSTRAINT "FK_ENodeBFunction_REL_FK_serving-physicalNF" FOREIGN KEY ("REL_FK_serving-physicalNF") REFERENCES ties_data."PhysicalNF" (id) ON DELETE CASCADE;'
-);
-
-SELECT ties_data.create_constraint_if_not_exists(
-    'ENodeBFunction',
- 'UNIQUE_ENodeBFunction_REL_ID_PHYSICALNF_SERVES_ENODEBFUNCTION',
- 'ALTER TABLE ties_data."ENodeBFunction" ADD CONSTRAINT "UNIQUE_ENodeBFunction_REL_ID_PHYSICALNF_SERVES_ENODEBFUNCTION" UNIQUE ("REL_ID_PHYSICALNF_SERVES_ENODEBFUNCTION");'
-);
-
-SELECT ties_data.create_constraint_if_not_exists(
-    'EUtranCell',
+       'EUtranCell',
  'FK_EUtranCell_REL_FK_provided-by-enodebFunction',
  'ALTER TABLE ties_data."EUtranCell" ADD CONSTRAINT "FK_EUtranCell_REL_FK_provided-by-enodebFunction" FOREIGN KEY ("REL_FK_provided-by-enodebFunction") REFERENCES ties_data."ENodeBFunction" (id) ON DELETE CASCADE;'
 );
 
 SELECT ties_data.create_constraint_if_not_exists(
-    'EUtranCell',
+       'EUtranCell',
  'UNIQUE_EUtranCell_REL_ID_ENODEBFUNCTION_PROVIDES_EUTRANCELL',
  'ALTER TABLE ties_data."EUtranCell" ADD CONSTRAINT "UNIQUE_EUtranCell_REL_ID_ENODEBFUNCTION_PROVIDES_EUTRANCELL" UNIQUE ("REL_ID_ENODEBFUNCTION_PROVIDES_EUTRANCELL");'
 );
 
 SELECT ties_data.create_constraint_if_not_exists(
-    'EUtranCell',
+       'EUtranCell',
  'FK_EUtranCell_REL_FK_grouped-by-sector',
  'ALTER TABLE ties_data."EUtranCell" ADD CONSTRAINT "FK_EUtranCell_REL_FK_grouped-by-sector" FOREIGN KEY ("REL_FK_grouped-by-sector") REFERENCES ties_data."Sector" (id) ON DELETE CASCADE;'
 );
 
 SELECT ties_data.create_constraint_if_not_exists(
-    'EUtranCell',
+       'EUtranCell',
  'UNIQUE_EUtranCell_REL_ID_SECTOR_GROUPS_EUTRANCELL',
  'ALTER TABLE ties_data."EUtranCell" ADD CONSTRAINT "UNIQUE_EUtranCell_REL_ID_SECTOR_GROUPS_EUTRANCELL" UNIQUE ("REL_ID_SECTOR_GROUPS_EUTRANCELL");'
 );
 
 SELECT ties_data.create_constraint_if_not_exists(
-    'GNBCUCPFunction',
+       'GNBCUCPFunction',
  'FK_GNBCUCPFunction_REL_FK_managed-by-managedElement',
  'ALTER TABLE ties_data."GNBCUCPFunction" ADD CONSTRAINT "FK_GNBCUCPFunction_REL_FK_managed-by-managedElement" FOREIGN KEY ("REL_FK_managed-by-managedElement") REFERENCES ties_data."ManagedElement" (id) ON DELETE CASCADE;'
 );
 
 SELECT ties_data.create_constraint_if_not_exists(
-    'GNBCUCPFunction',
+       'GNBCUCPFunction',
  'UNIQUE_249F73FF1F4316A56DEF4424FA43C2064FFBE4DD',
  'ALTER TABLE ties_data."GNBCUCPFunction" ADD CONSTRAINT "UNIQUE_249F73FF1F4316A56DEF4424FA43C2064FFBE4DD" UNIQUE ("REL_ID_MANAGEDELEMENT_MANAGES_GNBCUCPFUNCTION");'
 );
 
 SELECT ties_data.create_constraint_if_not_exists(
-    'GNBCUCPFunction',
- 'FK_GNBCUCPFunction_REL_FK_serving-physicalNF',
- 'ALTER TABLE ties_data."GNBCUCPFunction" ADD CONSTRAINT "FK_GNBCUCPFunction_REL_FK_serving-physicalNF" FOREIGN KEY ("REL_FK_serving-physicalNF") REFERENCES ties_data."PhysicalNF" (id) ON DELETE CASCADE;'
-);
-
-SELECT ties_data.create_constraint_if_not_exists(
-    'GNBCUCPFunction',
- 'UNIQUE_GNBCUCPFunction_REL_ID_PHYSICALNF_SERVES_GNBCUCPFUNCTION',
- 'ALTER TABLE ties_data."GNBCUCPFunction" ADD CONSTRAINT "UNIQUE_GNBCUCPFunction_REL_ID_PHYSICALNF_SERVES_GNBCUCPFUNCTION" UNIQUE ("REL_ID_PHYSICALNF_SERVES_GNBCUCPFUNCTION");'
-);
-
-SELECT ties_data.create_constraint_if_not_exists(
-    'GNBCUUPFunction',
+       'GNBCUUPFunction',
  'FK_GNBCUUPFunction_REL_FK_managed-by-managedElement',
  'ALTER TABLE ties_data."GNBCUUPFunction" ADD CONSTRAINT "FK_GNBCUUPFunction_REL_FK_managed-by-managedElement" FOREIGN KEY ("REL_FK_managed-by-managedElement") REFERENCES ties_data."ManagedElement" (id) ON DELETE CASCADE;'
 );
 
 SELECT ties_data.create_constraint_if_not_exists(
-    'GNBCUUPFunction',
+       'GNBCUUPFunction',
  'UNIQUE_BDB349CDF0C4055902881ECCB71F460AE1DD323E',
  'ALTER TABLE ties_data."GNBCUUPFunction" ADD CONSTRAINT "UNIQUE_BDB349CDF0C4055902881ECCB71F460AE1DD323E" UNIQUE ("REL_ID_MANAGEDELEMENT_MANAGES_GNBCUUPFUNCTION");'
 );
 
 SELECT ties_data.create_constraint_if_not_exists(
-    'GNBCUUPFunction',
- 'FK_GNBCUUPFunction_REL_FK_serving-physicalNF',
- 'ALTER TABLE ties_data."GNBCUUPFunction" ADD CONSTRAINT "FK_GNBCUUPFunction_REL_FK_serving-physicalNF" FOREIGN KEY ("REL_FK_serving-physicalNF") REFERENCES ties_data."PhysicalNF" (id) ON DELETE CASCADE;'
-);
-
-SELECT ties_data.create_constraint_if_not_exists(
-    'GNBCUUPFunction',
- 'UNIQUE_GNBCUUPFunction_REL_ID_PHYSICALNF_SERVES_GNBCUUPFUNCTION',
- 'ALTER TABLE ties_data."GNBCUUPFunction" ADD CONSTRAINT "UNIQUE_GNBCUUPFunction_REL_ID_PHYSICALNF_SERVES_GNBCUUPFUNCTION" UNIQUE ("REL_ID_PHYSICALNF_SERVES_GNBCUUPFUNCTION");'
-);
-
-SELECT ties_data.create_constraint_if_not_exists(
-    'GNBDUFunction',
+       'GNBDUFunction',
  'FK_GNBDUFunction_REL_FK_managed-by-managedElement',
  'ALTER TABLE ties_data."GNBDUFunction" ADD CONSTRAINT "FK_GNBDUFunction_REL_FK_managed-by-managedElement" FOREIGN KEY ("REL_FK_managed-by-managedElement") REFERENCES ties_data."ManagedElement" (id) ON DELETE CASCADE;'
 );
 
 SELECT ties_data.create_constraint_if_not_exists(
-    'GNBDUFunction',
+       'GNBDUFunction',
  'UNIQUE_08DFEFAF56EDDE43CBDC336F459D28C6518D3E1D',
  'ALTER TABLE ties_data."GNBDUFunction" ADD CONSTRAINT "UNIQUE_08DFEFAF56EDDE43CBDC336F459D28C6518D3E1D" UNIQUE ("REL_ID_MANAGEDELEMENT_MANAGES_GNBDUFUNCTION");'
 );
 
 SELECT ties_data.create_constraint_if_not_exists(
-    'GNBDUFunction',
- 'FK_GNBDUFunction_REL_FK_serving-physicalNF',
- 'ALTER TABLE ties_data."GNBDUFunction" ADD CONSTRAINT "FK_GNBDUFunction_REL_FK_serving-physicalNF" FOREIGN KEY ("REL_FK_serving-physicalNF") REFERENCES ties_data."PhysicalNF" (id) ON DELETE CASCADE;'
-);
-
-SELECT ties_data.create_constraint_if_not_exists(
-    'GNBDUFunction',
- 'UNIQUE_GNBDUFunction_REL_ID_PHYSICALNF_SERVES_GNBDUFUNCTION',
- 'ALTER TABLE ties_data."GNBDUFunction" ADD CONSTRAINT "UNIQUE_GNBDUFunction_REL_ID_PHYSICALNF_SERVES_GNBDUFUNCTION" UNIQUE ("REL_ID_PHYSICALNF_SERVES_GNBDUFUNCTION");'
-);
-
-SELECT ties_data.create_constraint_if_not_exists(
-    'LTESectorCarrier',
+       'LTESectorCarrier',
  'FK_LTESectorCarrier_REL_FK_provided-by-enodebFunction',
  'ALTER TABLE ties_data."LTESectorCarrier" ADD CONSTRAINT "FK_LTESectorCarrier_REL_FK_provided-by-enodebFunction" FOREIGN KEY ("REL_FK_provided-by-enodebFunction") REFERENCES ties_data."ENodeBFunction" (id) ON DELETE CASCADE;'
 );
 
 SELECT ties_data.create_constraint_if_not_exists(
-    'LTESectorCarrier',
+       'LTESectorCarrier',
  'UNIQUE_B9770D6C26DDA0173DB9690F6E3B42C111AF26E9',
  'ALTER TABLE ties_data."LTESectorCarrier" ADD CONSTRAINT "UNIQUE_B9770D6C26DDA0173DB9690F6E3B42C111AF26E9" UNIQUE ("REL_ID_ENODEBFUNCTION_PROVIDES_LTESECTORCARRIER");'
 );
 
 SELECT ties_data.create_constraint_if_not_exists(
-    'LTESectorCarrier',
- 'FK_LTESectorCarrier_REL_FK_used-antennaCapability',
- 'ALTER TABLE ties_data."LTESectorCarrier" ADD CONSTRAINT "FK_LTESectorCarrier_REL_FK_used-antennaCapability" FOREIGN KEY ("REL_FK_used-antennaCapability") REFERENCES ties_data."AntennaCapability" (id) ON DELETE CASCADE;'
+       'LTESectorCarrier',
+ 'FK_LTESectorCarrier_REL_FK_used-by-euTranCell',
+ 'ALTER TABLE ties_data."LTESectorCarrier" ADD CONSTRAINT "FK_LTESectorCarrier_REL_FK_used-by-euTranCell" FOREIGN KEY ("REL_FK_used-by-euTranCell") REFERENCES ties_data."EUtranCell" (id) ON DELETE CASCADE;'
 );
 
 SELECT ties_data.create_constraint_if_not_exists(
-    'LTESectorCarrier',
- 'UNIQUE_5D5FEB6B4B09D5D42A589753C684994CD0B96E88',
- 'ALTER TABLE ties_data."LTESectorCarrier" ADD CONSTRAINT "UNIQUE_5D5FEB6B4B09D5D42A589753C684994CD0B96E88" UNIQUE ("REL_ID_LTESECTORCARRIER_USES_ANTENNACAPABILITY");'
+       'LTESectorCarrier',
+ 'UNIQUE_LTESectorCarrier_REL_ID_EUTRANCELL_USES_LTESECTORCARRIER',
+ 'ALTER TABLE ties_data."LTESectorCarrier" ADD CONSTRAINT "UNIQUE_LTESectorCarrier_REL_ID_EUTRANCELL_USES_LTESECTORCARRIER" UNIQUE ("REL_ID_EUTRANCELL_USES_LTESECTORCARRIER");'
 );
 
 SELECT ties_data.create_constraint_if_not_exists(
-    'LTESectorCarrier',
- 'FK_LTESectorCarrier_REL_FK_used-by-euTranCell',
- 'ALTER TABLE ties_data."LTESectorCarrier" ADD CONSTRAINT "FK_LTESectorCarrier_REL_FK_used-by-euTranCell" FOREIGN KEY ("REL_FK_used-by-euTranCell") REFERENCES ties_data."EUtranCell" (id) ON DELETE CASCADE;'
+       'LTESectorCarrier',
+ 'FK_LTESectorCarrier_REL_FK_used-antennaCapability',
+ 'ALTER TABLE ties_data."LTESectorCarrier" ADD CONSTRAINT "FK_LTESectorCarrier_REL_FK_used-antennaCapability" FOREIGN KEY ("REL_FK_used-antennaCapability") REFERENCES ties_data."AntennaCapability" (id) ON DELETE CASCADE;'
 );
 
 SELECT ties_data.create_constraint_if_not_exists(
-    'LTESectorCarrier',
- 'UNIQUE_LTESectorCarrier_REL_ID_EUTRANCELL_USES_LTESECTORCARRIER',
- 'ALTER TABLE ties_data."LTESectorCarrier" ADD CONSTRAINT "UNIQUE_LTESectorCarrier_REL_ID_EUTRANCELL_USES_LTESECTORCARRIER" UNIQUE ("REL_ID_EUTRANCELL_USES_LTESECTORCARRIER");'
+       'LTESectorCarrier',
+ 'UNIQUE_5D5FEB6B4B09D5D42A589753C684994CD0B96E88',
+ 'ALTER TABLE ties_data."LTESectorCarrier" ADD CONSTRAINT "UNIQUE_5D5FEB6B4B09D5D42A589753C684994CD0B96E88" UNIQUE ("REL_ID_LTESECTORCARRIER_USES_ANTENNACAPABILITY");'
 );
 
 SELECT ties_data.create_constraint_if_not_exists(
-    'ManagedElement',
+       'ManagedElement',
  'FK_ManagedElement_REL_FK_deployed-as-cloudifiedNF',
  'ALTER TABLE ties_data."ManagedElement" ADD CONSTRAINT "FK_ManagedElement_REL_FK_deployed-as-cloudifiedNF" FOREIGN KEY ("REL_FK_deployed-as-cloudifiedNF") REFERENCES ties_data."CloudifiedNF" (id) ON DELETE CASCADE;'
 );
 
 SELECT ties_data.create_constraint_if_not_exists(
-    'ManagedElement',
+       'ManagedElement',
  'UNIQUE_E7BC94037DB5B94B7E863A10BEA20C2D4C3C307C',
  'ALTER TABLE ties_data."ManagedElement" ADD CONSTRAINT "UNIQUE_E7BC94037DB5B94B7E863A10BEA20C2D4C3C307C" UNIQUE ("REL_ID_MANAGEDELEMENT_DEPLOYED_AS_CLOUDIFIEDNF");'
 );
 
 SELECT ties_data.create_constraint_if_not_exists(
-    'NFDEPLOYMENT_DEPLOYED_ON_CLOUDNAMESPACE',
+       'NFDEPLOYMENT_DEPLOYED_ON_CLOUDNAMESPACE',
  'FK_NFDEPLOYMENT_DEPLOYED_ON_CLOUDNAMESPACE_aSide_NFDeployment',
  'ALTER TABLE ties_data."NFDEPLOYMENT_DEPLOYED_ON_CLOUDNAMESPACE" ADD CONSTRAINT "FK_NFDEPLOYMENT_DEPLOYED_ON_CLOUDNAMESPACE_aSide_NFDeployment" FOREIGN KEY ("aSide_NFDeployment") REFERENCES ties_data."NFDeployment" (id) ON DELETE CASCADE;'
 );
 
 SELECT ties_data.create_constraint_if_not_exists(
-    'NFDEPLOYMENT_DEPLOYED_ON_CLOUDNAMESPACE',
+       'NFDEPLOYMENT_DEPLOYED_ON_CLOUDNAMESPACE',
  'FK_NFDEPLOYMENT_DEPLOYED_ON_CLOUDNAMESPACE_bSide_CloudNamespace',
  'ALTER TABLE ties_data."NFDEPLOYMENT_DEPLOYED_ON_CLOUDNAMESPACE" ADD CONSTRAINT "FK_NFDEPLOYMENT_DEPLOYED_ON_CLOUDNAMESPACE_bSide_CloudNamespace" FOREIGN KEY ("bSide_CloudNamespace") REFERENCES ties_data."CloudNamespace" (id) ON DELETE CASCADE;'
 );
 
 SELECT ties_data.create_constraint_if_not_exists(
-    'NFDEPLOYMENT_SERVES_GNBCUCPFUNCTION',
+       'NFDEPLOYMENT_SERVES_GNBCUCPFUNCTION',
  'FK_NFDEPLOYMENT_SERVES_GNBCUCPFUNCTION_aSide_NFDeployment',
  'ALTER TABLE ties_data."NFDEPLOYMENT_SERVES_GNBCUCPFUNCTION" ADD CONSTRAINT "FK_NFDEPLOYMENT_SERVES_GNBCUCPFUNCTION_aSide_NFDeployment" FOREIGN KEY ("aSide_NFDeployment") REFERENCES ties_data."NFDeployment" (id) ON DELETE CASCADE;'
 );
 
 SELECT ties_data.create_constraint_if_not_exists(
-    'NFDEPLOYMENT_SERVES_GNBCUCPFUNCTION',
+       'NFDEPLOYMENT_SERVES_GNBCUCPFUNCTION',
  'FK_NFDEPLOYMENT_SERVES_GNBCUCPFUNCTION_bSide_GNBCUCPFunction',
  'ALTER TABLE ties_data."NFDEPLOYMENT_SERVES_GNBCUCPFUNCTION" ADD CONSTRAINT "FK_NFDEPLOYMENT_SERVES_GNBCUCPFUNCTION_bSide_GNBCUCPFunction" FOREIGN KEY ("bSide_GNBCUCPFunction") REFERENCES ties_data."GNBCUCPFunction" (id) ON DELETE CASCADE;'
 );
 
 SELECT ties_data.create_constraint_if_not_exists(
-    'NFDEPLOYMENT_SERVES_GNBCUUPFUNCTION',
+       'NFDEPLOYMENT_SERVES_GNBCUUPFUNCTION',
  'FK_NFDEPLOYMENT_SERVES_GNBCUUPFUNCTION_aSide_NFDeployment',
  'ALTER TABLE ties_data."NFDEPLOYMENT_SERVES_GNBCUUPFUNCTION" ADD CONSTRAINT "FK_NFDEPLOYMENT_SERVES_GNBCUUPFUNCTION_aSide_NFDeployment" FOREIGN KEY ("aSide_NFDeployment") REFERENCES ties_data."NFDeployment" (id) ON DELETE CASCADE;'
 );
 
 SELECT ties_data.create_constraint_if_not_exists(
-    'NFDEPLOYMENT_SERVES_GNBCUUPFUNCTION',
+       'NFDEPLOYMENT_SERVES_GNBCUUPFUNCTION',
  'FK_NFDEPLOYMENT_SERVES_GNBCUUPFUNCTION_bSide_GNBCUUPFunction',
  'ALTER TABLE ties_data."NFDEPLOYMENT_SERVES_GNBCUUPFUNCTION" ADD CONSTRAINT "FK_NFDEPLOYMENT_SERVES_GNBCUUPFUNCTION_bSide_GNBCUUPFunction" FOREIGN KEY ("bSide_GNBCUUPFunction") REFERENCES ties_data."GNBCUUPFunction" (id) ON DELETE CASCADE;'
 );
 
 SELECT ties_data.create_constraint_if_not_exists(
-    'NFDEPLOYMENT_SERVES_GNBDUFUNCTION',
+       'NFDEPLOYMENT_SERVES_GNBDUFUNCTION',
  'FK_NFDEPLOYMENT_SERVES_GNBDUFUNCTION_aSide_NFDeployment',
  'ALTER TABLE ties_data."NFDEPLOYMENT_SERVES_GNBDUFUNCTION" ADD CONSTRAINT "FK_NFDEPLOYMENT_SERVES_GNBDUFUNCTION_aSide_NFDeployment" FOREIGN KEY ("aSide_NFDeployment") REFERENCES ties_data."NFDeployment" (id) ON DELETE CASCADE;'
 );
 
 SELECT ties_data.create_constraint_if_not_exists(
-    'NFDEPLOYMENT_SERVES_GNBDUFUNCTION',
+       'NFDEPLOYMENT_SERVES_GNBDUFUNCTION',
  'FK_NFDEPLOYMENT_SERVES_GNBDUFUNCTION_bSide_GNBDUFunction',
  'ALTER TABLE ties_data."NFDEPLOYMENT_SERVES_GNBDUFUNCTION" ADD CONSTRAINT "FK_NFDEPLOYMENT_SERVES_GNBDUFUNCTION_bSide_GNBDUFunction" FOREIGN KEY ("bSide_GNBDUFunction") REFERENCES ties_data."GNBDUFunction" (id) ON DELETE CASCADE;'
 );
 
 SELECT ties_data.create_constraint_if_not_exists(
-    'NFDeployment',
+       'NFDeployment',
  'FK_NFDeployment_REL_FK_serviced-managedElement',
  'ALTER TABLE ties_data."NFDeployment" ADD CONSTRAINT "FK_NFDeployment_REL_FK_serviced-managedElement" FOREIGN KEY ("REL_FK_serviced-managedElement") REFERENCES ties_data."ManagedElement" (id) ON DELETE CASCADE;'
 );
 
 SELECT ties_data.create_constraint_if_not_exists(
-    'NFDeployment',
+       'NFDeployment',
  'UNIQUE_NFDeployment_REL_ID_NFDEPLOYMENT_SERVES_MANAGEDELEMENT',
  'ALTER TABLE ties_data."NFDeployment" ADD CONSTRAINT "UNIQUE_NFDeployment_REL_ID_NFDEPLOYMENT_SERVES_MANAGEDELEMENT" UNIQUE ("REL_ID_NFDEPLOYMENT_SERVES_MANAGEDELEMENT");'
 );
 
 SELECT ties_data.create_constraint_if_not_exists(
-    'NFDeployment',
+       'NFDeployment',
  'FK_NFDeployment_REL_FK_comprised-by-cloudifiedNF',
  'ALTER TABLE ties_data."NFDeployment" ADD CONSTRAINT "FK_NFDeployment_REL_FK_comprised-by-cloudifiedNF" FOREIGN KEY ("REL_FK_comprised-by-cloudifiedNF") REFERENCES ties_data."CloudifiedNF" (id) ON DELETE CASCADE;'
 );
 
 SELECT ties_data.create_constraint_if_not_exists(
-    'NFDeployment',
+       'NFDeployment',
  'UNIQUE_NFDeployment_REL_ID_CLOUDIFIEDNF_COMPRISES_NFDEPLOYMENT',
  'ALTER TABLE ties_data."NFDeployment" ADD CONSTRAINT "UNIQUE_NFDeployment_REL_ID_CLOUDIFIEDNF_COMPRISES_NFDEPLOYMENT" UNIQUE ("REL_ID_CLOUDIFIEDNF_COMPRISES_NFDEPLOYMENT");'
 );
 
 SELECT ties_data.create_constraint_if_not_exists(
-    'NODECLUSTER_LOCATED_AT_CLOUDSITE',
+       'NODECLUSTER_LOCATED_AT_CLOUDSITE',
  'FK_NODECLUSTER_LOCATED_AT_CLOUDSITE_aSide_NodeCluster',
  'ALTER TABLE ties_data."NODECLUSTER_LOCATED_AT_CLOUDSITE" ADD CONSTRAINT "FK_NODECLUSTER_LOCATED_AT_CLOUDSITE_aSide_NodeCluster" FOREIGN KEY ("aSide_NodeCluster") REFERENCES ties_data."NodeCluster" (id) ON DELETE CASCADE;'
 );
 
 SELECT ties_data.create_constraint_if_not_exists(
-    'NODECLUSTER_LOCATED_AT_CLOUDSITE',
+       'NODECLUSTER_LOCATED_AT_CLOUDSITE',
  'FK_NODECLUSTER_LOCATED_AT_CLOUDSITE_bSide_CloudSite',
  'ALTER TABLE ties_data."NODECLUSTER_LOCATED_AT_CLOUDSITE" ADD CONSTRAINT "FK_NODECLUSTER_LOCATED_AT_CLOUDSITE_bSide_CloudSite" FOREIGN KEY ("bSide_CloudSite") REFERENCES ties_data."CloudSite" (id) ON DELETE CASCADE;'
 );
 
 SELECT ties_data.create_constraint_if_not_exists(
-    'NRCellCU',
+       'NRCellCU',
  'FK_NRCellCU_REL_FK_provided-by-gnbcucpFunction',
  'ALTER TABLE ties_data."NRCellCU" ADD CONSTRAINT "FK_NRCellCU_REL_FK_provided-by-gnbcucpFunction" FOREIGN KEY ("REL_FK_provided-by-gnbcucpFunction") REFERENCES ties_data."GNBCUCPFunction" (id) ON DELETE CASCADE;'
 );
 
 SELECT ties_data.create_constraint_if_not_exists(
-    'NRCellCU',
+       'NRCellCU',
  'UNIQUE_NRCellCU_REL_ID_GNBCUCPFUNCTION_PROVIDES_NRCELLCU',
  'ALTER TABLE ties_data."NRCellCU" ADD CONSTRAINT "UNIQUE_NRCellCU_REL_ID_GNBCUCPFUNCTION_PROVIDES_NRCELLCU" UNIQUE ("REL_ID_GNBCUCPFUNCTION_PROVIDES_NRCELLCU");'
 );
 
 SELECT ties_data.create_constraint_if_not_exists(
-    'NRCellDU',
- 'FK_NRCellDU_REL_FK_grouped-by-sector',
- 'ALTER TABLE ties_data."NRCellDU" ADD CONSTRAINT "FK_NRCellDU_REL_FK_grouped-by-sector" FOREIGN KEY ("REL_FK_grouped-by-sector") REFERENCES ties_data."Sector" (id) ON DELETE CASCADE;'
-);
-
-SELECT ties_data.create_constraint_if_not_exists(
-    'NRCellDU',
- 'UNIQUE_NRCellDU_REL_ID_SECTOR_GROUPS_NRCELLDU',
- 'ALTER TABLE ties_data."NRCellDU" ADD CONSTRAINT "UNIQUE_NRCellDU_REL_ID_SECTOR_GROUPS_NRCELLDU" UNIQUE ("REL_ID_SECTOR_GROUPS_NRCELLDU");'
-);
-
-SELECT ties_data.create_constraint_if_not_exists(
-    'NRCellDU',
+       'NRCellDU',
  'FK_NRCellDU_REL_FK_provided-by-gnbduFunction',
  'ALTER TABLE ties_data."NRCellDU" ADD CONSTRAINT "FK_NRCellDU_REL_FK_provided-by-gnbduFunction" FOREIGN KEY ("REL_FK_provided-by-gnbduFunction") REFERENCES ties_data."GNBDUFunction" (id) ON DELETE CASCADE;'
 );
 
 SELECT ties_data.create_constraint_if_not_exists(
-    'NRCellDU',
+       'NRCellDU',
  'UNIQUE_NRCellDU_REL_ID_GNBDUFUNCTION_PROVIDES_NRCELLDU',
  'ALTER TABLE ties_data."NRCellDU" ADD CONSTRAINT "UNIQUE_NRCellDU_REL_ID_GNBDUFUNCTION_PROVIDES_NRCELLDU" UNIQUE ("REL_ID_GNBDUFUNCTION_PROVIDES_NRCELLDU");'
 );
 
 SELECT ties_data.create_constraint_if_not_exists(
-    'NRSectorCarrier',
- 'FK_NRSectorCarrier_REL_FK_used-by-nrCellDu',
- 'ALTER TABLE ties_data."NRSectorCarrier" ADD CONSTRAINT "FK_NRSectorCarrier_REL_FK_used-by-nrCellDu" FOREIGN KEY ("REL_FK_used-by-nrCellDu") REFERENCES ties_data."NRCellDU" (id) ON DELETE CASCADE;'
+       'NRCellDU',
+ 'FK_NRCellDU_REL_FK_grouped-by-sector',
+ 'ALTER TABLE ties_data."NRCellDU" ADD CONSTRAINT "FK_NRCellDU_REL_FK_grouped-by-sector" FOREIGN KEY ("REL_FK_grouped-by-sector") REFERENCES ties_data."Sector" (id) ON DELETE CASCADE;'
 );
 
 SELECT ties_data.create_constraint_if_not_exists(
-    'NRSectorCarrier',
- 'UNIQUE_NRSectorCarrier_REL_ID_NRCELLDU_USES_NRSECTORCARRIER',
- 'ALTER TABLE ties_data."NRSectorCarrier" ADD CONSTRAINT "UNIQUE_NRSectorCarrier_REL_ID_NRCELLDU_USES_NRSECTORCARRIER" UNIQUE ("REL_ID_NRCELLDU_USES_NRSECTORCARRIER");'
+       'NRCellDU',
+ 'UNIQUE_NRCellDU_REL_ID_SECTOR_GROUPS_NRCELLDU',
+ 'ALTER TABLE ties_data."NRCellDU" ADD CONSTRAINT "UNIQUE_NRCellDU_REL_ID_SECTOR_GROUPS_NRCELLDU" UNIQUE ("REL_ID_SECTOR_GROUPS_NRCELLDU");'
 );
 
 SELECT ties_data.create_constraint_if_not_exists(
-    'NRSectorCarrier',
+       'NRSectorCarrier',
  'FK_NRSectorCarrier_REL_FK_provided-by-gnbduFunction',
  'ALTER TABLE ties_data."NRSectorCarrier" ADD CONSTRAINT "FK_NRSectorCarrier_REL_FK_provided-by-gnbduFunction" FOREIGN KEY ("REL_FK_provided-by-gnbduFunction") REFERENCES ties_data."GNBDUFunction" (id) ON DELETE CASCADE;'
 );
 
 SELECT ties_data.create_constraint_if_not_exists(
-    'NRSectorCarrier',
+       'NRSectorCarrier',
  'UNIQUE_872BE05F1989443F2595D99A77BC03733B2D1E2F',
  'ALTER TABLE ties_data."NRSectorCarrier" ADD CONSTRAINT "UNIQUE_872BE05F1989443F2595D99A77BC03733B2D1E2F" UNIQUE ("REL_ID_GNBDUFUNCTION_PROVIDES_NRSECTORCARRIER");'
 );
 
 SELECT ties_data.create_constraint_if_not_exists(
-    'NRSectorCarrier',
- 'FK_NRSectorCarrier_REL_FK_used-antennaCapability',
- 'ALTER TABLE ties_data."NRSectorCarrier" ADD CONSTRAINT "FK_NRSectorCarrier_REL_FK_used-antennaCapability" FOREIGN KEY ("REL_FK_used-antennaCapability") REFERENCES ties_data."AntennaCapability" (id) ON DELETE CASCADE;'
+       'NRSectorCarrier',
+ 'FK_NRSectorCarrier_REL_FK_used-by-nrCellDu',
+ 'ALTER TABLE ties_data."NRSectorCarrier" ADD CONSTRAINT "FK_NRSectorCarrier_REL_FK_used-by-nrCellDu" FOREIGN KEY ("REL_FK_used-by-nrCellDu") REFERENCES ties_data."NRCellDU" (id) ON DELETE CASCADE;'
 );
 
 SELECT ties_data.create_constraint_if_not_exists(
-    'NRSectorCarrier',
- 'UNIQUE_EDF7D5C78EF6505848B1679B714D7831F5863991',
- 'ALTER TABLE ties_data."NRSectorCarrier" ADD CONSTRAINT "UNIQUE_EDF7D5C78EF6505848B1679B714D7831F5863991" UNIQUE ("REL_ID_NRSECTORCARRIER_USES_ANTENNACAPABILITY");'
+       'NRSectorCarrier',
+ 'UNIQUE_NRSectorCarrier_REL_ID_NRCELLDU_USES_NRSECTORCARRIER',
+ 'ALTER TABLE ties_data."NRSectorCarrier" ADD CONSTRAINT "UNIQUE_NRSectorCarrier_REL_ID_NRCELLDU_USES_NRSECTORCARRIER" UNIQUE ("REL_ID_NRCELLDU_USES_NRSECTORCARRIER");'
 );
 
 SELECT ties_data.create_constraint_if_not_exists(
-    'PhysicalNF',
- 'FK_PhysicalNF_REL_FK_installed-at-site',
- 'ALTER TABLE ties_data."PhysicalNF" ADD CONSTRAINT "FK_PhysicalNF_REL_FK_installed-at-site" FOREIGN KEY ("REL_FK_installed-at-site") REFERENCES ties_data."Site" (id) ON DELETE CASCADE;'
+       'NRSectorCarrier',
+ 'FK_NRSectorCarrier_REL_FK_used-antennaCapability',
+ 'ALTER TABLE ties_data."NRSectorCarrier" ADD CONSTRAINT "FK_NRSectorCarrier_REL_FK_used-antennaCapability" FOREIGN KEY ("REL_FK_used-antennaCapability") REFERENCES ties_data."AntennaCapability" (id) ON DELETE CASCADE;'
 );
 
 SELECT ties_data.create_constraint_if_not_exists(
-    'PhysicalNF',
- 'UNIQUE_PhysicalNF_REL_ID_PHYSICALNF_INSTALLED_AT_SITE',
- 'ALTER TABLE ties_data."PhysicalNF" ADD CONSTRAINT "UNIQUE_PhysicalNF_REL_ID_PHYSICALNF_INSTALLED_AT_SITE" UNIQUE ("REL_ID_PHYSICALNF_INSTALLED_AT_SITE");'
+       'NRSectorCarrier',
+ 'UNIQUE_EDF7D5C78EF6505848B1679B714D7831F5863991',
+ 'ALTER TABLE ties_data."NRSectorCarrier" ADD CONSTRAINT "UNIQUE_EDF7D5C78EF6505848B1679B714D7831F5863991" UNIQUE ("REL_ID_NRSECTORCARRIER_USES_ANTENNACAPABILITY");'
 );
 
 
-
-
-
-
 COMMIT;
index b2efcf8..87caa91 100644 (file)
@@ -92,6 +92,7 @@ public class YangModelProcessor {
             {
                 put("string", TEXT);
                 put("uint32", BIGINT);
+                put("int32", BIGINT);
                 put("or-teiv-types:_3GPP_FDN_Type", TEXT);
                 put("enumeration", TEXT);
                 put("types3gpp:PLMNId", JSONB);
@@ -100,6 +101,7 @@ public class YangModelProcessor {
                 put("[uses types3gpp:PLMNId]", JSONB);
                 put("geo:geo-location", "geography");
                 put("uint64", BIGINT);
+                put("int64", BIGINT);
                 put("decimal64", DECIMAL);
                 put("[uses or-teiv-types:CM_ID]", JSONB);
             }
index 1b66c59..276e2a5 100644 (file)
@@ -29,115 +29,126 @@ module o-ran-smo-teiv-common-yang-extensions {
 
   SPDX-License-Identifier: Apache-2.0";
 
-  revision "2024-05-02" {
-    description "Initial revision.";
-    or-teiv-yext:label 0.3.0;
-  }
-
-  extension biDirectionalTopologyRelationship {
-
-    description
-      "Defines a bi-directional relationship in the topology.
-
-       A bi-directional-association (BDA) is a relationship comprising of an
-       A-side and a B-side. The A-side is considered the originating side of
-       the relationship; the B-side is considered the terminating side of the
-       relationship. The order of A-side and B-side is of importance and MUST
-       NOT be changed once defined.
-
-       Both A-side and B-side are defined on a type, and are given a role. A
-       type may have multiple originating and/or terminating sides of a
-       relationship, all distinguished by role name.
-
-       The statement MUST only be a substatement of the 'module' statement.
-       Multiple 'bi-directional-topology-relationship' statements are allowed
-       per parent statement.
-
-       Substatements to the 'bi-directional-topology-relationship' define the
-       A-side and the B-side, respectively, and optionally properties of the
-       relationship. Data nodes of types 'leaf' and 'leaf-list' are used for
-       this purpose. One of the data nodes MUST be annotated with the 'a-side'
-       extension; another data node MUST be annotated with the 'b-side'
-       extension. Other data nodes define properties of the relationship.
-
-       The argument is the name of the relationship. The relationship name is
-       scoped to the namespace of the declaring module and MUST be unique
-       within the scope.";
-
-    argument relationshipName;
-  }
-
-  extension aSide {
-    description
-      "Defines the A-side of a relationship.
-
-       The statement MUST only be a substatement of a 'leaf' or 'leaf-list'
-       statement, which itself must be a substatement of the
-       'uni-directional-topology-relationship' statement.
-
-       The data type of the parent 'leaf' or 'leaf-list' MUST be
-       'instance-identifier'. Constraints MAY be used as part of the parent
-       'leaf' or 'leaf-list' to enforce cardinality.
-
-       The identifier of the parent 'leaf' or 'leaf-list' is used as name of
-       the role of the A-side of the relationship. The name of the role is
-       scoped to the type on which the A-side is defined and MUST be unique
-       within the scope.
-
-       While the parent 'leaf' or 'leaf-list' does not result in a property of
-       the relationship, it is RECOMMENDED to avoid using the name of an
-       existing type property as role name to avoid potential ambiguities
-       between properties of a type, and roles of a relationship on the type.
-
-       The argument is the name of the type on which the A-side resides. If the
-       type is declared in another module, the type must be prefixed, and a
-       corresponding 'import' statement be used to declare the prefix.";
-
-    argument aSideType;
-  }
-
-  extension bSide {
-    description "Defines the B-side of a relationship.
-
-       The statement MUST only be a substatement of a 'leaf' or 'leaf-list'
-       statement, which itself must be a substatement of the
-       'uni-directional-topology-relationship' statement.
-
-       The data type of the parent 'leaf' or 'leaf-list' MUST be
-       'instance-identifier'. Constraints MAY be used as part of the parent
-       'leaf' or 'leaf-list' to enforce cardinality.
-
-       The identifier of the parent 'leaf' or 'leaf-list' is used as name of
-       the role of the B-side of the relationship. The name of the role is
-       scoped to the type on which the B-side is defined and MUST be unique
-       within the scope.
-
-       While the parent 'leaf' or 'leaf-list' does not result in a property of
-       the relationship, it is RECOMMENDED to avoid using the name of an
-       existing type property as role name to avoid potential ambiguities
-       between properties of a type, and roles of a relationship on the type.
-
-       The argument is the name of the type on which the B-side resides. If the
-       type is declared in another module, the type must be prefixed, and a
-       corresponding 'import' statement be used to declare the prefix.";
-
-    argument bSideType;
-  }
-
-  extension domain {
-    description "Keyword used to carry domain information.";
-    argument domainName;
-  }
-
-  extension label {
-    description "The label can be used to give modules and submodules a semantic version, in addition to their revision.
-
-      The format of the label is 'x.y.z' - expressed as pattern, it is [0-9]+\\.[0-9]+\\.[0-9]+
-
-      The statement MUST only be a substatement of the revision statement.  Zero or one revision label statements
-      per parent statement are allowed.
-
-      Revision labels MUST be unique amongst all revisions of a module or submodule.";
-      argument semversion;
-  }
+    revision "2024-05-24" {
+        description "Initial revision.";
+        or-teiv-yext:label 0.3.0;
+    }
+
+    extension biDirectionalTopologyRelationship {
+        description
+            "Defines a bi-directional relationship in the topology.
+
+            A bi-directional-association (BDA) is a relationship comprising of
+            an A-side and a B-side. The A-side is considered the originating
+            side of the relationship; the B-side is considered the terminating
+            side of the relationship. The order of A-side and B-side is of
+            importance and MUST NOT be changed once defined.
+
+            Both A-side and B-side are defined on a type, and are given a role.
+            A type may have multiple originating and/or terminating sides of a
+            relationship, all distinguished by role name.
+
+            The statement MUST only be a substatement of the 'module' statement.
+            Multiple 'bi-directional-topology-relationship' statements are
+            allowed per parent statement.
+
+            Substatements to the 'bi-directional-topology-relationship' define
+            the A-side and the B-side, respectively, and optionally properties
+            of the relationship. Data nodes of types 'leaf' and 'leaf-list' are
+            used for this purpose. One of the data nodes MUST be annotated with
+            the 'a-side' extension; another data node MUST be annotated with the
+            'b-side' extension. Other data nodes define properties of the
+            relationship.
+
+            The argument is the name of the relationship. The relationship name
+            is scoped to the namespace of the declaring module and MUST be
+            unique within the scope.";
+
+        argument relationshipName;
+    }
+
+    extension aSide {
+        description
+            "Defines the A-side of a relationship.
+
+            The statement MUST only be a substatement of a 'leaf' or 'leaf-list'
+            statement, which itself must be a substatement of the
+            'uni-directional-topology-relationship' statement.
+
+            The data type of the parent 'leaf' or 'leaf-list' MUST be
+            'instance-identifier'. Constraints MAY be used as part of the parent
+            'leaf' or 'leaf-list' to enforce cardinality.
+
+            The identifier of the parent 'leaf' or 'leaf-list' is used as name
+            of the role of the A-side of the relationship. The name of the role
+            is scoped to the type on which the A-side is defined and MUST be
+            unique within the scope.
+
+            While the parent 'leaf' or 'leaf-list' does not result in a property
+            of the relationship, it is RECOMMENDED to avoid using the name of an
+            existing type property as role name to avoid potential ambiguities
+            between properties of a type, and roles of a relationship on the
+            type.
+
+            The argument is the name of the type on which the A-side resides.
+            If the type is declared in another module, the type must be
+            prefixed, and a corresponding 'import' statement be used to declare
+            the prefix.";
+
+        argument aSideType;
+    }
+
+    extension bSide {
+        description
+            "Defines the B-side of a relationship.
+
+            The statement MUST only be a substatement of a 'leaf' or 'leaf-list'
+            statement, which itself must be a substatement of the
+            'uni-directional-topology-relationship' statement.
+
+            The data type of the parent 'leaf' or 'leaf-list' MUST be
+            'instance-identifier'. Constraints MAY be used as part of the parent
+            'leaf' or 'leaf-list' to enforce cardinality.
+
+            The identifier of the parent 'leaf' or 'leaf-list' is used as name
+            of the role of the B-side of the relationship. The name of the role
+            is scoped to the type on which the B-side is defined and MUST be
+            unique within the scope.
+
+            While the parent 'leaf' or 'leaf-list' does not result in a property
+            of the relationship, it is RECOMMENDED to avoid using the name of an
+            existing type property as role name to avoid potential ambiguities
+            between properties of a type, and roles of a relationship on the
+            type.
+
+            The argument is the name of the type on which the B-side resides.
+            If the type is declared in another module, the type must be
+            prefixed, and a corresponding 'import' statement be used to declare
+            the prefix.";
+
+        argument bSideType;
+    }
+
+    extension domain {
+        description "Keyword used to carry domain information.";
+        argument domainName;
+    }
+
+    extension label {
+        description
+            "The label can be used to give modules and submodules a semantic
+            version, in addition to their revision.
+
+            The format of the label is 'x.y.z' - expressed as pattern, it is
+            [0-9]+\\.[0-9]+\\.[0-9]+
+
+            The statement MUST only be a substatement of the revision statement.
+            Zero or one revision label statements per parent statement are
+            allowed.
+
+            Revision labels MUST be unique amongst all revisions of a module or
+            submodule.";
+
+        argument semversion;
+    }
 }
\ No newline at end of file
index 7aeef7e..ba20e1a 100644 (file)
@@ -1,12 +1,11 @@
 module o-ran-smo-teiv-common-yang-types {
+    yang-version 1.1;
+    namespace "urn:o-ran:smo-teiv-common-yang-types";
+    prefix or-teiv-types;
 
-  yang-version 1.1;
-  namespace "urn:o-ran:smo-teiv-common-yang-types";
-  prefix or-teiv-types;
+    import o-ran-smo-teiv-common-yang-extensions { prefix or-teiv-yext; }
 
-  import o-ran-smo-teiv-common-yang-extensions {prefix or-teiv-yext; }
-
-  import _3gpp-common-yang-types { prefix types3gpp; }
+    import _3gpp-common-yang-types { prefix types3gpp; }
 
   organization "ORAN";
   contact "The Authors";
@@ -33,72 +32,77 @@ module o-ran-smo-teiv-common-yang-types {
 
   SPDX-License-Identifier: Apache-2.0";
 
-  revision "2024-05-02" {
-    description "Initial revision.";
-    or-teiv-yext:label 0.3.0;
-  }
-
-  grouping Top_Grp_Type {
-
-    description "Grouping containing the key attribute common to all types. All types
-                MUST use this grouping.";
-
-    leaf id {
-      type string;
-      description "Unique identifier of topology entities. Represents the Entity Instance Identifier.";
+    revision "2024-05-24" {
+        description "Initial revision.";
+        or-teiv-yext:label 0.3.0;
     }
-  }
-
-  grouping CM_ID {
-
-    description "Grouping containing the key attributes to make
-                use of Configuration Management (CM).";
 
-    leaf cmHandle {
-      type string;
-      description "Unique identifier for network entities in CM.";
-    }
+    grouping Top_Grp_Type {
+        description "Grouping containing the key attribute common to all types.
+            All types MUST use this grouping.";
 
-    leaf resourceIdentifier {
-      type string;
-      description "The xpath expression identifying the resource in the Node model yang tree.";
+        leaf id {
+            type string;
+            description "Unique identifier of topology entities. Represents the
+                Entity Instance Identifier.";
+        }
     }
-  }
-
-  typedef _3GPP_FDN_Type {
-    type types3gpp:DistinguishedName;
-  }
-
-  container consumer-data {
-    description "This container defines the consumer-data. Consumer-data may be attached to Topology Entity or
-                Topology Relation instance, outside of the declared Topology Entity or Topology Relationship's attributes.
-                This container cannot be instantiated, and it MUST NOT be augmented or deviated in any way, unless stated
-                otherwise.";
 
     container decorators {
-      description "This container serves as extension point for applications wishing to define their own decorators.
-                  This is done via augmentations. They can only be defined in name value pair.";
+        description
+            "This container serves as extension point for applications wishing
+            to define their own decorators. This is done via augmentations. They
+            can only be defined in name value pair.
+
+            This is a consumer data and can be attached to Topology Entity or
+            Topology Relation instance, outside of the declared Topology Entity
+            or Topology Relationship's attributes. This cannot be instantiated,
+            and it MUST NOT be augmented or deviated in any way, unless stated
+            otherwise.";
     }
 
     leaf-list classifiers {
-      description "Consumer defined tags to topology entities and relationships.";
-      type identityref { base classifier; }
+        description
+            "Consumer defined tags to topology entities and relationships.
+
+            This is a consumer data and can be attached to Topology Entity or
+            Topology Relation instance, outside of the declared Topology Entity
+            or Topology Relationship's attributes. This cannot be instantiated,
+            and it MUST NOT be augmented or deviated in any way, unless stated
+            otherwise.";
+
+        type identityref { base classifier; }
     }
 
     leaf-list sourceIds {
-      description "An ordered list of identities that represent the set of native source identifiers for participating
-                  entities.";
-      type string;
-      ordered-by user;
+        description
+            "An ordered list of identities that represent the set of native
+            source identifiers for participating entities.
+
+            This is a consumer data and can be attached to Topology Entity or
+            Topology Relation instance, outside of the declared Topology Entity
+            or Topology Relationship's attributes. This cannot be instantiated,
+            and it MUST NOT be augmented or deviated in any way, unless stated
+            otherwise.";
+
+        type string;
+        ordered-by user;
     }
 
     container metadata {
-      description "This container serves as extension point to define metadata. They can only be defined in name value
-                  pair.";
+        description
+            "This container serves as extension point to define metadata. They
+            can only be defined in name value pair.
+
+            This is a consumer data and can be attached to Topology Entity or
+            Topology Relation instance, outside of the declared Topology Entity
+            or Topology Relationship's attributes. This cannot be instantiated,
+            and it MUST NOT be augmented or deviated in any way, unless stated
+            otherwise.";
     }
-  }
 
-  identity classifier{
-    description  "The classifier is used as a base to provide all classifiers with identity. ";
-  }
+    identity classifier{
+        description "The classifier is used as a base to provide all classifiers
+            with identity. ";
+    }
 }
\ No newline at end of file
diff --git a/teiv/src/main/resources/models/o-ran-smo-teiv-equipment-to-ran.yang b/teiv/src/main/resources/models/o-ran-smo-teiv-equipment-to-ran.yang
deleted file mode 100644 (file)
index a676f50..0000000
+++ /dev/null
@@ -1,154 +0,0 @@
-module o-ran-smo-teiv-equipment-to-ran {
-    yang-version 1.1;
-    namespace "urn:o-ran:smo-teiv-equipment-to-ran";
-    prefix or-teiv-equiptoran;
-
-    import o-ran-smo-teiv-common-yang-types {prefix or-teiv-types; }
-
-    import o-ran-smo-teiv-common-yang-extensions {prefix or-teiv-yext; }
-
-    import o-ran-smo-teiv-equipment {prefix or-teiv-equip; }
-
-    import o-ran-smo-teiv-ran {prefix or-teiv-ran; }
-
-
-    organization "ORAN";
-    contact "The Authors";
-    description 
-    "RAN Equipment to Logical topology model.
-
-    This model contains the RAN Equipment to Logical topology
-    entities and relations.
-
-    Copyright (C) 2024 Ericsson
-    Modifications Copyright (C) 2024 OpenInfra Foundation Europe
-
-    Licensed under the Apache License, Version 2.0 (the \"License\");
-    you may not use this file except in compliance with the License.
-    You may obtain a copy of the License at
-
-    http://www.apache.org/licenses/LICENSE-2.0
-
-    Unless required by applicable law or agreed to in writing, software
-    distributed under the License is distributed on an \"AS IS\" BASIS,
-    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-    See the License for the specific language governing permissions and
-    limitations under the License.
-
-    SPDX-License-Identifier: Apache-2.0";
-
-    revision "2024-05-02" {
-        description "Initial revision.";
-        or-teiv-yext:label 0.3.0;
-    }
-
-    or-teiv-yext:domain EQUIPMENT_TO_RAN;
-
-    or-teiv-yext:biDirectionalTopologyRelationship PHYSICALNF_SERVES_GNBDUFUNCTION { // 0..1 to 0..n
-
-        uses or-teiv-types:Top_Grp_Type;
-        key id;
-
-        leaf-list serviced-gnbduFunction {
-            description "gNodeB-DU Function serviced by this Physical NF.";
-            or-teiv-yext:aSide or-teiv-equip:PhysicalNF;
-            type instance-identifier;
-        }
-
-        leaf serving-physicalNF {
-            description "Physical NF serves this gNodeB-DU Function.";
-            or-teiv-yext:bSide or-teiv-ran:GNBDUFunction;
-            type instance-identifier;
-        }
-    }
-
-    or-teiv-yext:biDirectionalTopologyRelationship PHYSICALNF_SERVES_GNBCUCPFUNCTION { // 0..1 to 0..n
-
-        uses or-teiv-types:Top_Grp_Type;
-        key id;
-
-        leaf-list serviced-gnbcucpFunction {
-            description "gNodeB-CUCP Function serviced by this Physical NF.";
-            or-teiv-yext:aSide or-teiv-equip:PhysicalNF;
-            type instance-identifier;
-        }
-
-        leaf serving-physicalNF {
-            description "Physical NF serves this gNodeB-CUCP Function.";
-            or-teiv-yext:bSide or-teiv-ran:GNBCUCPFunction;
-            type instance-identifier;
-        }
-    }
-
-    or-teiv-yext:biDirectionalTopologyRelationship PHYSICALNF_SERVES_GNBCUUPFUNCTION { // 0..1 to 0..n
-
-        uses or-teiv-types:Top_Grp_Type;
-        key id;
-
-        leaf-list serviced-gnbcuupFunction {
-            description "gNodeB-CUUP Function serviced by this Physical NF.";
-            or-teiv-yext:aSide or-teiv-equip:PhysicalNF;
-            type instance-identifier;
-        }
-
-        leaf serving-physicalNF {
-            description "Physical NF serves this gNodeB-CUUP Function.";
-            or-teiv-yext:bSide or-teiv-ran:GNBCUUPFunction;
-            type instance-identifier;
-        }
-    }
-
-    or-teiv-yext:biDirectionalTopologyRelationship PHYSICALNF_SERVES_ENODEBFUNCTION { // 0..1 to 0..n
-
-        uses or-teiv-types:Top_Grp_Type;
-        key id;
-
-        leaf-list serviced-enodebFunction {
-            description "eNodeB Function serviced by this Physical NF.";
-            or-teiv-yext:aSide or-teiv-equip:PhysicalNF;
-            type instance-identifier;
-        }
-
-        leaf serving-physicalNF {
-            description "Physical NF serves this eNodeB Function.";
-            or-teiv-yext:bSide or-teiv-ran:ENodeBFunction;
-            type instance-identifier;
-        }
-    }
-
-    or-teiv-yext:biDirectionalTopologyRelationship ANTENNAMODULE_SERVES_ANTENNACAPABILITY { // 0..n to 0..m
-
-        uses or-teiv-types:Top_Grp_Type;
-        key id;
-
-        leaf-list serviced-antennaCapability {
-            description "Antenna Capability serviced by this Antenna Module.";
-            or-teiv-yext:aSide or-teiv-equip:AntennaModule;
-            type instance-identifier;
-        }
-
-        leaf-list serving-antennaModule {
-            description "Antenna Module serves this Antenna Capability.";
-            or-teiv-yext:bSide or-teiv-ran:AntennaCapability;
-            type instance-identifier;
-        }
-    }
-
-    or-teiv-yext:biDirectionalTopologyRelationship SECTOR_GROUPS_ANTENNAMODULE { // 0..1 to 0..n
-
-        uses or-teiv-types:Top_Grp_Type;
-        key id;
-
-        leaf-list grouped-antennaModule {
-            description "Sector groups Antenna Module.";
-            or-teiv-yext:aSide or-teiv-ran:Sector;
-            type instance-identifier;
-        }
-
-        leaf grouped-by-sector {
-            description "Antenna Module grouped by Sector.";
-            or-teiv-yext:bSide or-teiv-equip:AntennaModule;
-            type instance-identifier;
-        }
-    }
-}
\ No newline at end of file
index d231491..21fd623 100644 (file)
@@ -34,12 +34,9 @@ module o-ran-smo-teiv-equipment {
     Unless required by applicable law or agreed to in writing, software
     distributed under the License is distributed on an \"AS IS\" BASIS,
     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-    See the License for the specific language governing permissions and
-    limitations under the License.
+    See the License for the specific language governing permissions and";
 
-    SPDX-License-Identifier: Apache-2.0";
-
-    revision "2024-05-02" {
+    revision "2024-05-24" {
         description "Initial revision.";
         or-teiv-yext:label 0.3.0;
     }
@@ -47,83 +44,70 @@ module o-ran-smo-teiv-equipment {
     or-teiv-yext:domain EQUIPMENT;
 
     list AntennaModule {
-        description "An Antenna Module represents the
-                    physical aspect of an antenna.";
+        description "An Antenna Module represents the physical aspect of an
+            antenna.";
 
         uses or-teiv-types:Top_Grp_Type;
         key id;
 
         container attributes {
-            leaf fdn {
-                description "This Full Distinguished Name (FDN) identifies
-                            an instance of the AntennaSubUnit MO. It contains
-                            the full path from the Subnetwork to the
-                            AntennaSubUnit.";
-                type or-teiv-types:_3GPP_FDN_Type;
-            }
-
             leaf antennaModelNumber {
-                description "Vendor-specific antenna model
-                            identifier. This attribute is part of
-                            AISG v3 ADB Standard and has
-                            no operational impact.";
+                description "Vendor-specific antenna model identifier. This
+                    attribute is part of AISG v3 ADB Standard and has no
+                    operational impact.";
                 type string;
             }
 
             leaf mechanicalAntennaBearing {
-                description "Antenna bearing on antenna subunit
-                            where antenna unit is installed.";
-                type uint32;
+                description "Antenna bearing on antenna subunit where antenna
+                    unit is installed.";
+                type int32;
             }
 
             leaf mechanicalAntennaTilt {
-                description "The fixed antenna tilt of the installation,
-                            defined as the inclination of the antenna
-                            element respect to the vertical plane.
-                            It is a signed value. Positive indicates
-                            downtilt, and negative indicates uptilt.";
-                type uint32;
+                description "The fixed antenna tilt of the installation, defined
+                    as the inclination of the antenna element respect to the
+                    vertical plane. It is a signed value. Positive indicates
+                    downtilt, and negative indicates uptilt.";
+                type int32;
             }
 
             leaf positionWithinSector {
-                description "Antenna unit position within sector.
-                            This attribute is part of AISG v3 ADB
-                            Standard and has no operational impact.";
+                description "Antenna unit position within sector. This attribute
+                    is part of AISG v3 ADB Standard and has no operational
+                    impact.";
                 type string;
             }
 
             leaf totalTilt {
-                description "Total antenna elevation including the
-                            installed tilt and the tilt applied by
-                            the Remote Electrical Tilt (RET).";
-                type uint32;
+                description "Total antenna elevation including the installed
+                    tilt and the tilt applied by the Remote Electrical
+                    Tilt (RET).";
+                type int32;
             }
 
             leaf electricalAntennaTilt {
                 description "Electrically-controlled tilt of main beam maximum
-                            with respect to direction orthogonal to antenna
-                            element axis (see 3GPP TS 25.466). Value is signed;
-                            tilt down is positive, tilt up is negative.";
-                type uint32;
+                    with respect to direction orthogonal to antenna element
+                    axis (see 3GPP TS 25.466). Value is signed; tilt down is
+                    positive, tilt up is negative.";
+                type int32;
             }
 
             leaf-list antennaBeamWidth {
-                description "The angular span of the main lobe of the antenna radiation
-                              pattern in the horizontal plane. Measured in degrees.";
+                description "The angular span of the main lobe of the antenna
+                    radiation pattern in the horizontal plane. Measured in
+                    degrees.";
                 type uint32;
             }
 
             uses geo:geo-location;
-
-            container cmId {
-                uses or-teiv-types:CM_ID;
-            }
         }
     }
 
     list Site {
-        description "A site is a physical location where an Antenna or
-                    Physical NF can be installed.";
+        description "A site is a physical location where an equipment can be
+            installed.";
 
         uses or-teiv-types:Top_Grp_Type;
         key id;
@@ -136,35 +120,6 @@ module o-ran-smo-teiv-equipment {
 
             uses geo:geo-location;
 
-            container cmId {
-                uses or-teiv-types:CM_ID;
-            }
-        }
-    }
-
-    list PhysicalNF {
-        description "Represents a Physical NF,
-                    which is used to realise Network Functions.";
-
-        uses or-teiv-types:Top_Grp_Type;
-        key id;
-
-        container attributes {
-            leaf name {
-                description "Name of Physical NF.";
-                type string;
-            }
-
-            leaf type {
-                description "Type of Physical NF.";
-                type string;
-            }
-
-            uses geo:geo-location;
-
-            container cmId {
-                uses or-teiv-types:CM_ID;
-            }
         }
     }
 
@@ -185,23 +140,4 @@ module o-ran-smo-teiv-equipment {
             type instance-identifier;
         }
     }
-
-    or-teiv-yext:biDirectionalTopologyRelationship PHYSICALNF_INSTALLED_AT_SITE { // 1..n to 0..1
-
-        uses or-teiv-types:Top_Grp_Type;
-        key id;
-
-        leaf installed-at-site {
-            description "Physical NF installed at Site.";
-            or-teiv-yext:aSide PhysicalNF;
-            type instance-identifier;
-        }
-
-        leaf-list installed-physicalNF {
-            description "Site where Physical NF is installed.";
-            or-teiv-yext:bSide Site;
-            type instance-identifier;
-            min-elements 1;
-        }
-    }
 }
\ No newline at end of file
index b439513..25a0902 100644 (file)
@@ -3,9 +3,9 @@ module o-ran-smo-teiv-oam {
     namespace "urn:o-ran:smo-teiv-oam";
     prefix or-teiv-oam;
 
-    import o-ran-smo-teiv-common-yang-types {prefix or-teiv-types; }
+    import o-ran-smo-teiv-common-yang-types { prefix or-teiv-types; }
 
-    import o-ran-smo-teiv-common-yang-extensions {prefix or-teiv-yext; }
+    import o-ran-smo-teiv-common-yang-extensions { prefix or-teiv-yext; }
 
     organization "ORAN";
     contact "The Authors";
@@ -33,7 +33,7 @@ module o-ran-smo-teiv-oam {
 
     SPDX-License-Identifier: Apache-2.0";
 
-    revision "2024-05-02" {
+    revision "2024-05-24" {
         description "Initial revision.";
         or-teiv-yext:label 0.3.0;
     }
@@ -41,26 +41,13 @@ module o-ran-smo-teiv-oam {
     or-teiv-yext:domain OAM;
 
     list ManagedElement {
-        description "A Managed Element (ME) is a node into a telecommunication network
-                    providing support and/or service to subscribers. An ME communicates
-                    with a manager application (directly or indirectly) over one or more
-                    interfaces for the purpose of being monitored and/or controlled.";
+        description "A Managed Element (ME) is a node into a telecommunication
+            network providing support and/or service to subscribers. An ME
+            communicates with a manager application (directly or indirectly)
+            over one or more interfaces for the purpose of being monitored
+            and/or controlled.";
 
         uses or-teiv-types:Top_Grp_Type;
         key id;
-
-        container attributes {
-            leaf fdn {
-                description "This Full Distinguished Name (FDN) identifies
-                            an instance of the ManagedElement MO. It contains
-                            the full path from the Subnetwork to the
-                            ManagedElement.";
-                type or-teiv-types:_3GPP_FDN_Type;
-            }
-
-            container cmId {
-                uses or-teiv-types:CM_ID;
-            }
-        }
     }
 }
\ No newline at end of file
index 3b3eeba..7f5c4df 100644 (file)
@@ -40,7 +40,7 @@ module o-ran-smo-teiv-ran {
 
     SPDX-License-Identifier: Apache-2.0";
 
-    revision "2024-05-02" {
+    revision "2024-05-24" {
         description "Initial revision.";
         or-teiv-yext:label 0.3.0;
     }
@@ -50,37 +50,26 @@ module o-ran-smo-teiv-ran {
     list GNBDUFunction {
         description "gNodeB Distributed Unit (gNB-DU).
 
-                    A gNB may consist of a gNB-Centralized Unit
-                    (gNB-CU) and a gNB-DU. The CU processes non-real
-                    time protocols and services, and the DU processes
-                    PHY level protocol and real time services. The
-                    gNB-CU and the gNB-DU units are connected via
-                    F1 logical interface.
-
-                    The following is true for a gNB-DU:
-                    Is connected to the gNB-CU-CP through the F1-C
-                    interface.Is connected to the gNB-CU-UP through
-                    the F1-U interface. One gNB-DU is connected to only
-                    one gNB-CU-CP. One gNB-DU can be connected to
-                    multiple gNB-CU-UPs under the control of the same
-                    gNB-CU-CP.
-                    Note: A gNB may consist of a gNB-CU-CP, multiple
-                    gNB-CU-UPs and multiple gNB-DUs. gNB-DU is a concrete
-                    class that extends the NG-RAN node object. In Topology, you
-                    can create, read, update, and delete the gNB-DU object.";
+            A gNB may consist of a gNB-Centralized Unit (gNB-CU) and a gNB-DU.
+            The CU processes non-real time protocols and services, and the DU
+            processes PHY level protocol and real time services. The gNB-CU and
+            the gNB-DU units are connected via F1 logical interface.
+
+            The following is true for a gNB-DU:
+            Is connected to the gNB-CU-CP through the F1-C interface. Is
+            connected to the gNB-CU-UP through the F1-U interface. One gNB-DU is
+            connected to only one gNB-CU-CP. One gNB-DU can be connected to
+            multiple gNB-CU-UPs under the control of the same gNB-CU-CP.
+
+            Note: A gNB may consist of a gNB-CU-CP, multiple gNB-CU-UPs and
+            multiple gNB-DUs. gNB-DU is a concrete class that extends the NG-RAN
+            node object. In Topology, you can create, read, update, and delete
+            the gNB-DU object.";
 
         uses or-teiv-types:Top_Grp_Type;
         key id;
 
         container attributes {
-            leaf fdn {
-                description "This Full Distinguished Name (FDN) identifies
-                            an instance of the GNBDUFunction MO. It contains
-                            the full path from the Subnetwork to the
-                            GNBDUFunction.";
-                type or-teiv-types:_3GPP_FDN_Type;
-            }
-
             container dUpLMNId {
                 description "PLMN identifier used as part of PM Events data";
                 uses types3gpp:PLMNId;
@@ -88,21 +77,17 @@ module o-ran-smo-teiv-ran {
 
             leaf gNBDUId {
                 description "Unique identifier for the DU within a gNodeB";
-                type uint32;
+                type int64;
             }
 
             leaf gNBId {
                 description "Identity of gNodeB within a PLMN";
-                type uint32;
+                type int64;
             }
 
             leaf gNBIdLength {
                 description "Length of gNBId bit string representation";
-                type uint32;
-            }
-
-            container cmId {
-                uses or-teiv-types:CM_ID;
+                type int32;
             }
         }
     }
@@ -110,42 +95,30 @@ module o-ran-smo-teiv-ran {
     list GNBCUCPFunction {
         description "gNodeB Centralized Unit Control Plane (gNB-CU-CP)
 
-                    This is a logical node hosting the Radio Resource
-                    Control (RRC) and the control plane part of the
-                    Packet Data Convergence Protocol (PDCP) of the
-                    gNodeB Centralized Unit (gNB-CU) for an E-UTRAN gNodeB
-                    (en-gNB) or a gNodeB (gNB). The gNB-CU-CP terminates
-                    the E1 interface connected with the gNB-CU-UP and the
-                    F1-C interface connected with the gNodeB
-                    Distributed Unit (gNB-DU).
-
-                    The following is true for a gNB-CU-CP:
-                    Is connected to the gNB-DU through the F1-C interface.
-                    Is connected to the gNB-CU-UP through the E1 interface.
-                    Only one gNB-CU-CP is connected to one gNB-DU.
-                    Only one gNB-CU-CP is connected to one gNB-CU-UP.
-                    One gNB-DU can be connected to multiple gNB-CU-UPs
-                    under the control of the same gNB-CU-CP.One gNB-CU-UP
-                    can be connected to multiple DUs under the control of
-                    the same gNB-CU-CP.
-                    Note: A gNB may consist of a gNB-CU-CP, multiple
-                    gNB-CU-UPs and multiple gNB-DUs. A gNB-CU-CP is a
-                    concrete class that extends the NG-RAN node object.
-                    In Topology, you can create, read, update, and delete
-                    the gNB-CU-CP object.";
+            This is a logical node hosting the Radio Resource Control (RRC) and
+            the control plane part of the Packet Data Convergence Protocol
+            (PDCP) of the gNodeB Centralized Unit (gNB-CU) for an E-UTRAN gNodeB
+            (en-gNB) or a gNodeB (gNB). The gNB-CU-CP terminates the E1
+            interface connected with the gNB-CU-UP and the F1-C interface
+            connected with the gNodeB Distributed Unit (gNB-DU).
+
+            The following is true for a gNB-CU-CP:
+            Is connected to the gNB-DU through the F1-C interface. Is connected
+            to the gNB-CU-UP through the E1 interface. Only one gNB-CU-CP is
+            connected to one gNB-DU. Only one gNB-CU-CP is connected to one
+            gNB-CU-UP. One gNB-DU can be connected to multiple gNB-CU-UPs under
+            the control of the same gNB-CU-CP.One gNB-CU-UP can be connected to
+            multiple DUs under the control of the same gNB-CU-CP.
+
+            Note: A gNB may consist of a gNB-CU-CP, multiple gNB-CU-UPs and
+            multiple gNB-DUs. A gNB-CU-CP is a concrete class that extends the
+            NG-RAN node object. In Topology, you can create, read, update, and
+            delete the gNB-CU-CP object.";
 
         uses or-teiv-types:Top_Grp_Type;
         key id;
 
         container attributes {
-            leaf fdn {
-                description "This Full Distinguished Name (FDN) identifies
-                            an instance of the GNBCUCPFunction MO. It contains
-                            the full path from the Subnetwork to the
-                            GNBCUCPFunction.";
-                type or-teiv-types:_3GPP_FDN_Type;
-            }
-
             leaf gNBCUName {
                 description "Name of gNodeB-CU";
                 type string;
@@ -153,77 +126,58 @@ module o-ran-smo-teiv-ran {
 
             leaf gNBId {
                 description "Identity of gNodeB within a PLMN";
-                type uint32;
+                type int64;
             }
 
             leaf gNBIdLength {
                 description "Length of gNBId bit string representation";
-                type uint32;
+                type int32;
             }
 
             container pLMNId {
-                description "PLMN identifier to be used as part
-                            of global RAN node identity";
+                description "PLMN identifier to be used as part of global RAN
+                    node identity";
                 uses types3gpp:PLMNId;
             }
-
-            container cmId {
-                uses or-teiv-types:CM_ID;
-            }
         }
     }
 
     list GNBCUUPFunction {
         description "gNodeB Centralized Unit User Plane (gNB-CU-UP)
 
-                    A gNB-CU-UP is a logical node hosting the User
-                    Plane part of the Packet Data Convergence,
-                    Protocol (PDCP) of the gNodeB Centralized Unit
-                    (gNB-CU) for an E-UTRAN gNodeB (en-gNB), and the
-                    User Plane part of the PDCP protocol and the
-                    Service Data Adaptation Protocol (SDAP) of the
-                    gNB-CU for a gNodeB (gNB). The gNB-CU-UP terminates
-                    the E1 interface connected with the gNB-CU-CP and
-                    the F1-U interface connected with the gNodeB
-                    Distributed Unit (gNB-DU).
-
-                    The following is true for a gNB-CU-UP:
-                    Is connected to the gNB-DU through the
-                    F1-U interface. Is connected to the gNB-CU-CP through
-                    the E1 interface. One gNB-CU-UP is connected to only one
-                    gNB-CU-CP. One gNB-DU can be connected to multiple
-                    gNB-CU-UPs under the control of the same gNB-CU-CP. One
-                    gNB-CU-UP can be connected to multiple DUs under the
-                    control of the same gNB-CU-CP.
-                    Note: A gNB may consist of a gNB-CU-CP, multiple gNB-CU-UPs
-                    and multiple gNB-DUs. A gNB-CU-UP is a concrete class that
-                    extends the NG-RAN node object. In Topology, you can
-                    create, read, update, and delete the gNB-CU-UP object.";
+            A gNB-CU-UP is a logical node hosting the User Plane part of the
+            Packet Data Convergence, Protocol (PDCP) of the gNodeB Centralized
+            Unit (gNB-CU) for an E-UTRAN gNodeB (en-gNB), and the User Plane
+            part of the PDCP protocol and the Service Data Adaptation Protocol
+            (SDAP) of the gNB-CU for a gNodeB (gNB). The gNB-CU-UP terminates
+            the E1 interface connected with the gNB-CU-CP and the F1-U interface
+            connected with the gNodeB Distributed Unit (gNB-DU).
+
+            The following is true for a gNB-CU-UP:
+            Is connected to the gNB-DU through the F1-U interface. Is connected
+            to the gNB-CU-CP through the E1 interface. One gNB-CU-UP is
+            connected to only one gNB-CU-CP. One gNB-DU can be connected to
+            multiple gNB-CU-UPs under the control of the same gNB-CU-CP. One
+            gNB-CU-UP can be connected to multiple DUs under the control of the
+            same gNB-CU-CP.
+
+            Note: A gNB may consist of a gNB-CU-CP, multiple gNB-CU-UPs and
+            multiple gNB-DUs. A gNB-CU-UP is a concrete class that extends the
+            NG-RAN node object. In Topology, you can create, read, update, and
+            delete the gNB-CU-UP object.";
 
         uses or-teiv-types:Top_Grp_Type;
         key id;
 
         container attributes {
-            leaf fdn {
-                description "This Full Distinguished Name (FDN) identifies
-                            an instance of the GNBCUUPFunction MO. It contains
-                            the full path from the Subnetwork to the
-                            GNBCUUPFunction.";
-                type or-teiv-types:_3GPP_FDN_Type;
-            }
-
             leaf gNBId {
                 description "Identity of gNodeB within a PLMN";
-                type uint32;
+                type int64;
             }
 
             leaf gNBIdLength {
                 description "Length of gNBId bit string representation";
-                type uint32;
-            }
-
-            container cmId {
-                uses or-teiv-types:CM_ID;
+                type int32;
             }
         }
     }
@@ -231,60 +185,43 @@ module o-ran-smo-teiv-ran {
     list NRCellCU {
         description "Represents an NR Cell in gNodeB-CU.
 
-                    5G NR is a new radio access technology (RAT)
-                    developed by 3GPP for the 5G (fifth generation)
-                    mobile network. It is designed to be the global
-                    standard for the air interface of 5G networks.
-
-                    5G NR has synchronization signal that is known as
-                    Primary Synchronization signal (PSS) and Secondary
-                    Synchronization signal (SSS). These signals are
-                    specific to NR physical layer and provide the
-                    following information required by UE for downlink
-                    synchronization: PSS provides Radio Frame Boundary
-                    (Position of 1st Symbol in a Radio frame) SSS provides
-                    Subframe Boundary (Position of 1st Symbol in a Subframe)
-                    Physical Layer Cell ID (PCI) information using both
-                    PSS and SSS.";
+            5G NR is a new radio access technology (RAT) developed by 3GPP for
+            the 5G (fifth generation) mobile network. It is designed to be the
+            global standard for the air interface of 5G networks.
+
+            5G NR has synchronization signal that is known as Primary
+            Synchronization Signal (PSS) and Secondary Synchronization
+            Signal (SSS). These signals are specific to NR physical layer and
+            provide the following information required by UE for downlink
+            synchronization: PSS provides Radio Frame Boundary (Position of 1st
+            Symbol in a Radio frame) SSS provides Subframe Boundary (Position of
+            1st Symbol in a Subframe) Physical Layer Cell ID (PCI) information
+            using both PSS and SSS.";
 
         uses or-teiv-types:Top_Grp_Type;
         key id;
 
         container attributes {
-            leaf fdn {
-                description "This Full Distinguished Name (FDN) identifies
-                            an instance of the NRCellCU MO. It contains
-                            the full path from the Subnetwork to the
-                            NRCellCU.";
-                type or-teiv-types:_3GPP_FDN_Type;
-            }
-
             leaf cellLocalId {
-                description "Used together with gNodeB identifier to
-                            identify NR cell in PLMN. Used together
-                            with gNBId to form NCI.";
-                type uint32;
+                description "Used together with gNodeB identifier to identify NR
+                    cell in PLMN. Used together with gNBId to form NCI.";
+                type int32;
             }
 
             container plmnId {
                 description "PLMN ID for NR CGI. If empty,
-                            GNBCUCPFunction::pLMNId is used
-                            for PLMN ID in NR CGI";
+                    GNBCUCPFunction::pLMNId is used for PLMN ID in NR CGI";
                 uses types3gpp:PLMNId;
             }
 
             leaf nCI {
                 description "NR Cell Identity";
-                type uint32;
+                type int64;
             }
 
             leaf nRTAC {
                 description "NR Tracking Area Code (TAC)";
-                type uint32;
-            }
-
-            container cmId {
-                uses or-teiv-types:CM_ID;
+                type int32;
             }
         }
     }
@@ -292,129 +229,98 @@ module o-ran-smo-teiv-ran {
     list NRCellDU {
         description "Represents an NR Cell in gNodeB-DU.
 
-                    5G NR is a new radio access technology (RAT)
-                    developed by 3GPP for the 5G (fifth generation)
-                    mobile network. It is designed to be the global
-                    standard for the air interface of 5G networks.
-
-                    5G NR has synchronization signal that is known as
-                    Primary Synchronization signal (PSS) and Secondary
-                    Synchronization signal (SSS). These signals are
-                    specific to NR physical layer and provide the
-                    following information required by UE for downlink
-                    synchronization: PSS provides Radio Frame Boundary
-                    (Position of 1st Symbol in a Radio frame) SSS provides
-                    Subframe Boundary (Position of 1st Symbol in a Subframe)
-                    Physical Layer Cell ID (PCI) information using both
-                    PSS and SSS.";
+            5G NR is a new radio access technology (RAT) developed by 3GPP for
+            the 5G (fifth generation) mobile network. It is designed to be the
+            global standard for the air interface of 5G networks.
+
+            5G NR has synchronization signal that is known as Primary
+            Synchronization signal (PSS) and Secondary Synchronization signal
+            (SSS). These signals are specific to NR physical layer and provide
+            the following information required by UE for downlink
+            synchronization: PSS provides Radio Frame Boundary (Position of 1st
+            Symbol in a Radio frame) SSS provides Subframe Boundary (Position of
+            1st Symbol in a Subframe) Physical Layer Cell ID (PCI) information
+            using both PSS and SSS.";
 
         uses or-teiv-types:Top_Grp_Type;
         key id;
 
         container attributes {
-            leaf fdn {
-                description "This Full Distinguished Name (FDN) identifies
-                            an instance of the NRCellDU MO. It contains
-                            the full path from the Subnetwork to the
-                            NRCellDU.";
-                type or-teiv-types:_3GPP_FDN_Type;
-            }
-
             leaf cellLocalId {
                 description "Used together with gNodeB identifier to identify NR
-                             cell in PLMN. Used together with gNBId to form NCI.";
-                type uint32;
+                    cell in PLMN. Used together with gNBId to form NCI.";
+                type int32;
             }
 
             leaf nCI {
                 description "NR Cell Identity.";
-                type uint32;
+                type int64;
             }
 
             leaf nRPCI {
                 description "The Physical Cell Identity (PCI) of the NR cell.";
-                type uint32;
+                type int32;
             }
 
             leaf nRTAC {
                 description "NR Tracking Area Code (TAC).";
-                type uint32;
-            }
-
-            container cmId {
-                uses or-teiv-types:CM_ID;
+                type int32;
             }
         }
     }
 
     list ENodeBFunction {
-        description "An Evolved Node B (eNodeB) is the only mandatory
-                    node in the radio access network (RAN) of Long-Term
-                    Evolution (LTE). The eNodeB is a complex base
-                    station that handles radio communications
-                    in the cell and carries out radio resource
-                    management and handover decisions. Unlike 2/3G
-                    wireless RAN, there is no centralized radio network
-                    controller in LTE. It is the hardware that is connected
-                    to the mobile phone network that communicates
-                    directly with mobile handsets (User Equipment), like a base
-                    transceiver station (BTS) in GSM networks. This simplifies
-                    the architecture and allows lower response times.";
+        description "An Evolved Node B (eNodeB) is the only mandatory node in
+            the radio access network (RAN) of Long-Term Evolution (LTE). The
+            eNodeB is a complex base station that handles radio communications
+            in the cell and carries out radio resource management and handover
+            decisions. Unlike 2/3G wireless RAN, there is no centralized radio
+            network controller in LTE. It is the hardware that is connected to
+            the mobile phone network that communicates directly with mobile
+            handsets (User Equipment), like a base transceiver station (BTS) in
+            GSM networks. This simplifies the architecture and allows lower
+            response times.";
 
         uses or-teiv-types:Top_Grp_Type;
         key id;
 
         container attributes {
-            leaf fdn {
-                description "This Full Distinguished Name (FDN) identifies
-                            an instance of the ENodeBFunction MO. It contains
-                            the full path from the Subnetwork to the
-                            ENodeBFunction.";
-                type or-teiv-types:_3GPP_FDN_Type;
-            }
-
             leaf eNBId {
-                description "The ENodeB ID that forms part of
-                            the Cell Global Identity, and is
-                            also used to identify the node over
-                            the S1 interface";
-                type uint32;
+                description "The ENodeB ID that forms part of the Cell Global
+                    Identity, and is also used to identify the node over the S1
+                    interface";
+                type int32;
             }
 
             container eNodeBPlmnId {
-                description "The ENodeB Public Land Mobile Network
-                            (PLMN) ID that forms part of the ENodeB
-                            Global ID used to identify the node over
-                            the S1 interface. Note: The value (MCC=001, MNC=01)
-                            indicates that the PLMN is not initiated.
-                            The value can not be used as a valid PLMN Identity.";
+                description "The ENodeB Public Land Mobile Network (PLMN) ID
+                    that forms part of the ENodeB Global ID used to identify the
+                    node over the S1 interface. Note: The value
+                    (MCC=001, MNC=01) indicates that the PLMN is not initiated.
+                    The value can not be used as a valid PLMN Identity.";
 
                 leaf mcc {
-                    description "The MCC part of a PLMN identity
-                                used in the radio network.";
+                    description "The MCC part of a PLMN identity used in the
+                        radio network.";
                     type int32 {
                         range 0..999;
                     }
                 }
                 leaf mnc {
-                    description "The MNC part of a PLMN identity
-                                used in the radio network.";
+                    description "The MNC part of a PLMN identity used in the
+                        radio network.";
                     type int32 {
                         range 0..999;
                     }
                 }
                 leaf mncLength {
-                    description "The length of the MNC part of a
-                                PLMN identity used in the radio network.";
+                    description "The length of the MNC part of a PLMN identity
+                        used in the radio network.";
                     type int32 {
                         range 2..3;
                     }
                 }
             }
-
-            container cmId {
-                uses or-teiv-types:CM_ID;
-            }
         }
     }
 
@@ -432,52 +338,44 @@ module o-ran-smo-teiv-ran {
         key id;
 
         container attributes {
-            leaf fdn {
-                description "This Full Distinguished Name (FDN) identifies
-                            an instance of either the EUtranCellFDD MO or
-                            the EUtranCellTDD MO. It contains the full
-                            path from the Subnetwork to the EUtranCellFDD or
-                            EUtranCellTDD.";
-                type or-teiv-types:_3GPP_FDN_Type;
-            }
-
             leaf cellId{
-                description "RBS internal ID attribute for EUtranCell.
-                            Must be unique in the RBS. Together with the
-                            Node ID and Public Land Mobile Network (PLMN)
-                            this is a universally unique cell ID";
-                type uint32;
+                description "RBS internal ID attribute for EUtranCell. Must be
+                    unique in the RBS. Together with the Node ID and Public
+                    Land Mobile Network (PLMN) this is a universally unique
+                    cell ID";
+                type int32;
             }
 
             leaf earfcndl {
-                description "The channel number for the central downlink frequency.";
-                type uint32;
+                description "The channel number for the central downlink
+                    frequency.";
+                type int32;
             }
 
             leaf earfcnul {
                 description "Channel number for the central uplink frequency";
-                type uint32;
+                type int32;
             }
 
             leaf dlChannelBandwidth {
                 description "The downlink channel bandwidth in the FDD cell.";
-                type uint32;
+                type int32;
             }
 
             leaf earfcn {
-                description "The E-UTRA Absolute Radio Frequency Channel
-                            Number (EARFCN) for the TDD cell";
-                type uint32;
+                description "The E-UTRA Absolute Radio Frequency Channel Number
+                    (EARFCN) for the TDD cell";
+                type int32;
             }
 
             leaf channelBandwidth {
                 description "The channel bandwidth in the TDD cell.";
-                type uint32;
+                type int32;
             }
 
             leaf tac {
                 description "Tracking Area Code for the EUtran Cell";
-                type uint32;
+                type int32;
             }
 
             leaf duplexType {
@@ -493,94 +391,67 @@ module o-ran-smo-teiv-ran {
                     }
                 }
             }
-
-            container cmId {
-                uses or-teiv-types:CM_ID;
-            }
         }
     }
 
     list NRSectorCarrier {
-        description "The NR Sector Carrier object provides
-                    the attributes for defining the logical
-                    characteristics of a carrier (cell) in a
-                    sector. A sector is a coverage area associated
-                    with a base station having its own antennas,
-                    radio ports, and control channels. The concept
-                    of sectors was developed to improve co-channel
-                    interference in cellular systems, and most wireless
-                    systems use three sector cells.";
+        description "The NR Sector Carrier object provides the attributes for
+            defining the logical characteristics of a carrier (cell) in a
+            sector. A sector is a coverage area associated with a base station
+            having its own antennas, radio ports, and control channels. The
+            concept of sectors was developed to improve co-channel interference
+            in cellular systems, and most wireless systems use three sector
+            cells.";
 
         uses or-teiv-types:Top_Grp_Type;
         key id;
 
         container attributes {
-            leaf fdn {
-                description "This Full Distinguished Name (FDN) identifies
-                            an instance of the NRSectorCarrier MO. It contains
-                            the full path from the Subnetwork to the
-                            NRSectorCarrier.";
-                type or-teiv-types:_3GPP_FDN_Type;
-            }
-
             leaf arfcnDL {
-                description "NR Absolute Radio Frequency Channel
-                            Number (NR-ARFCN) for downlink";
-                type uint32;
+                description "NR Absolute Radio Frequency Channel Number
+                    (NR-ARFCN) for downlink";
+                type int32;
             }
 
             leaf arfcnUL {
                 description "NR Absolute Radio frequency Channel Number
-                            (NR-ARFCN) for uplink.";
-                type uint32;
+                    (NR-ARFCN) for uplink.";
+                type int32;
             }
 
             leaf frequencyDL {
                 description "RF Reference Frequency of downlink channel";
-                type uint32;
+                type int32;
             }
 
             leaf frequencyUL {
                 description "RF Reference Frequency of uplink channel";
-                type uint32;
+                type int32;
             }
 
             leaf bSChannelBwDL {
                 description "BS Channel bandwidth in MHz for downlink.";
-                type uint32;
-            }
-
-            container cmId {
-                uses or-teiv-types:CM_ID;
+                type int32;
             }
         }
     }
 
     list LTESectorCarrier {
-        description "The LTE Sector Carrier object provides the
-                    attributes for defining the logical characteristics
-                    of a carrier (cell) in a sector. A sector is a coverage
-                    area associated with a base station having
-                    its own antennas, radio ports, and control channels.
-                    The concept of sectors was developed to improve co-channel
-                    interference in cellular systems, and most wireless systems
-                    use three sector cells.";
+        description "The LTE Sector Carrier object provides the attributes for
+            defining the logical characteristics of a carrier (cell) in a
+            sector. A sector is a coverage area associated with a base station
+            having its own antennas, radio ports, and control channels. The
+            concept of sectors was developed to improve co-channel interference
+            in cellular systems, and most wireless systems use three sector
+            cells.";
 
         uses or-teiv-types:Top_Grp_Type;
         key id;
 
         container attributes {
-            leaf fdn {
-                description "This Full Distinguished Name (FDN) identifies
-                            an instance of the SectorCarrier MO. It contains
-                            the full path from the Subnetwork to the
-                            SectorCarrier.";
-                type or-teiv-types:_3GPP_FDN_Type;
-            }
-
             leaf sectorCarrierType {
                 description "Indicates whether or not the sector carrier
-                            modelled by MO SectorCarrier is a digital sector.";
+                    modelled by MO SectorCarrier is a digital sector.";
                 type enumeration {
                     enum normal_sector {
                         value 0;
@@ -602,72 +473,55 @@ module o-ran-smo-teiv-ran {
                         value 4;
                         description "Right digital sector for 3DS";
                     }
-                    enum middle_digital_sector {
+                    enum middle_digital_sector_3ds {
                         value 5;
                         description "Middle digital sector for 3DS";
                     }
                 }
             }
-
-            container cmId {
-                uses or-teiv-types:CM_ID;
-            }
         }
     }
 
     list AntennaCapability {
-        description "This MO serves as a mapping between the cell
-                    and the RBS equipment used to provide coverage
-                    in a certain geographical area. The MO also
-                    controls the maximum output power of the sector.";
+        description "This MO serves as a mapping between the cell and the RBS
+            equipment used to provide coverage in a certain geographical area.
+            The MO also controls the maximum output power of the sector.";
 
         uses or-teiv-types:Top_Grp_Type;
         key id;
 
         container attributes {
-            leaf fdn {
-                description "This Full Distinguished Name (FDN) identifies
-                            an instance of the SectorEquipmentFunction MO.
-                            It contains the full path from the Subnetwork
-                            to the SectorEquipmentFunction.";
-                type or-teiv-types:_3GPP_FDN_Type;
-            }
-
             leaf-list eUtranFqBands {
-                description "List of LTE frequency bands
-                            that associated hardware supports";
+                description "List of LTE frequency bands that associated
+                    hardware supports";
                 type string;
             }
 
             leaf-list geranFqBands {
-                description "List of GERAN frequency bands
-                            that associated hardware supports";
+                description "List of GERAN frequency bands that associated
+                    hardware supports";
                 type string;
             }
 
             leaf-list nRFqBands {
-                description "List of NR frequency bands
-                            associated hardware supports";
+                description "List of NR frequency bands associated hardware
+                    supports";
                 type string;
             }
-
-            container cmId {
-                uses or-teiv-types:CM_ID;
-            }
         }
     }
 
     list Sector {
-        description "A group of co-located Cells that
-                    have a shared coverage area.";
+        description "A group of co-located Cells that have a shared
+            coverage area.";
 
         uses or-teiv-types:Top_Grp_Type;
         key id;
 
         container attributes {
             leaf sectorId {
-                description "Universally unique ID generated by the
-                            sector's discovery mechanism.";
+                description "Universally unique ID generated by the sector's
+                    discovery mechanism.";
                 type uint64;
             }
 
@@ -675,8 +529,7 @@ module o-ran-smo-teiv-ran {
 
             leaf azimuth {
                 description "Average value of the azimuths of the cells
-                            comprising the sector, determined during
-                            sector discovery.";
+                    comprising the sector, determined during sector discovery.";
                 type decimal64{
                     fraction-digits 6;
                 }
@@ -1,6 +1,6 @@
-module o-ran-smo-teiv-cloud-to-ran {
+module o-ran-smo-teiv-rel-cloud-ran {
     yang-version 1.1;
-    namespace "urn:o-ran:smo-teiv-cloud-to-ran";
+    namespace "urn:o-ran:smo-teiv-rel-cloud-ran";
     prefix or-teiv-cloudtoran;
 
     import o-ran-smo-teiv-common-yang-types {prefix or-teiv-types; }
@@ -40,7 +40,7 @@ module o-ran-smo-teiv-cloud-to-ran {
         or-teiv-yext:label 0.3.0;
     }
 
-    or-teiv-yext:domain CLOUD_TO_RAN;
+    or-teiv-yext:domain REL_CLOUD_RAN;
 
     or-teiv-yext:biDirectionalTopologyRelationship NFDEPLOYMENT_SERVES_GNBDUFUNCTION { // 0..n to 0..m
 
diff --git a/teiv/src/main/resources/models/o-ran-smo-teiv-rel-equipment-ran.yang b/teiv/src/main/resources/models/o-ran-smo-teiv-rel-equipment-ran.yang
new file mode 100644 (file)
index 0000000..1ad570e
--- /dev/null
@@ -0,0 +1,82 @@
+module o-ran-smo-teiv-rel-equipment-ran {
+    yang-version 1.1;
+    namespace "urn:o-ran:smo-teiv-rel-equipment-ran";
+    prefix or-teiv-rel-equipran;
+
+    import o-ran-smo-teiv-common-yang-types { prefix or-teiv-types; }
+
+    import o-ran-smo-teiv-common-yang-extensions { prefix or-teiv-yext; }
+
+    import o-ran-smo-teiv-equipment { prefix or-teiv-equip; }
+
+    import o-ran-smo-teiv-ran { prefix or-teiv-ran; }
+
+
+    organization "ORAN";
+    contact "The Authors";
+    description 
+    "RAN Equipment to Logical topology model.
+
+    This model contains the RAN Equipment to Logical topology
+    entities and relations.
+
+    Copyright (C) 2024 Ericsson
+    Modifications Copyright (C) 2024 OpenInfra Foundation Europe
+
+    Licensed under the Apache License, Version 2.0 (the \"License\");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an \"AS IS\" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+
+    SPDX-License-Identifier: Apache-2.0";
+
+    revision "2024-05-24" {
+        description "Initial revision.";
+        or-teiv-yext:label 0.3.0;
+    }
+
+    or-teiv-yext:domain REL_EQUIPMENT_RAN;
+
+    or-teiv-yext:biDirectionalTopologyRelationship ANTENNAMODULE_SERVES_ANTENNACAPABILITY { // 0..n to 0..m
+
+        uses or-teiv-types:Top_Grp_Type;
+        key id;
+
+        leaf-list serviced-antennaCapability {
+            description "Antenna Capability serviced by this Antenna Module.";
+            or-teiv-yext:aSide or-teiv-equip:AntennaModule;
+            type instance-identifier;
+        }
+
+        leaf-list serving-antennaModule {
+            description "Antenna Module serves this Antenna Capability.";
+            or-teiv-yext:bSide or-teiv-ran:AntennaCapability;
+            type instance-identifier;
+        }
+    }
+
+    or-teiv-yext:biDirectionalTopologyRelationship SECTOR_GROUPS_ANTENNAMODULE { // 0..1 to 0..n
+
+        uses or-teiv-types:Top_Grp_Type;
+        key id;
+
+        leaf-list grouped-antennaModule {
+            description "Sector groups Antenna Module.";
+            or-teiv-yext:aSide or-teiv-ran:Sector;
+            type instance-identifier;
+        }
+
+        leaf grouped-by-sector {
+            description "Antenna Module grouped by Sector.";
+            or-teiv-yext:bSide or-teiv-equip:AntennaModule;
+            type instance-identifier;
+        }
+    }
+}
\ No newline at end of file
@@ -1,6 +1,6 @@
-module o-ran-smo-teiv-oam-to-cloud {
+module o-ran-smo-teiv-rel-oam-cloud {
     yang-version 1.1;
-    namespace "urn:o-ran:smo-teiv-oam-to-cloud";
+    namespace "urn:o-ran:smo-teiv-rel-oam-cloud";
     prefix or-teiv-oamtocloud;
 
     import o-ran-smo-teiv-common-yang-types {prefix or-teiv-types; }
@@ -40,7 +40,7 @@ module o-ran-smo-teiv-oam-to-cloud {
         or-teiv-yext:label 0.3.0;
     }
 
-    or-teiv-yext:domain OAM_TO_CLOUD;
+    or-teiv-yext:domain REL_OAM_CLOUD;
 
     or-teiv-yext:biDirectionalTopologyRelationship MANAGEDELEMENT_DEPLOYED_AS_CLOUDIFIEDNF {  // 0..1 to 1
 
@@ -1,15 +1,15 @@
-module o-ran-smo-teiv-oam-to-ran {
+module o-ran-smo-teiv-rel-oam-ran {
     yang-version 1.1;
-    namespace "urn:o-ran:smo-teiv-oam-to-ran";
-    prefix or-teiv-oamtoran;
+    namespace "urn:o-ran:smo-teiv-rel-oam-ran";
+    prefix or-teiv-rel-oamran;
 
-    import o-ran-smo-teiv-common-yang-types {prefix or-teiv-types; }
+    import o-ran-smo-teiv-common-yang-types { prefix or-teiv-types; }
 
-    import o-ran-smo-teiv-common-yang-extensions {prefix or-teiv-yext; }
+    import o-ran-smo-teiv-common-yang-extensions { prefix or-teiv-yext; }
 
-    import o-ran-smo-teiv-oam {prefix or-teiv-oam; }
+    import o-ran-smo-teiv-oam { prefix or-teiv-oam; }
 
-    import o-ran-smo-teiv-ran {prefix or-teiv-ran; }
+    import o-ran-smo-teiv-ran { prefix or-teiv-ran; }
 
     organization "ORAN";
     contact "The Authors";
@@ -35,12 +35,12 @@ module o-ran-smo-teiv-oam-to-ran {
 
     SPDX-License-Identifier: Apache-2.0";
 
-    revision "2024-05-02" {
+    revision "2024-05-24" {
         description "Initial revision.";
         or-teiv-yext:label 0.3.0;
     }
 
-    or-teiv-yext:domain OAM_TO_RAN;
+    or-teiv-yext:domain REL_OAM_RAN;
 
     or-teiv-yext:biDirectionalTopologyRelationship MANAGEDELEMENT_MANAGES_ENODEBFUNCTION {   // 1 to 0..n