From 1ca7e0a692fc2150da6ff84e467872bd10f5f1ae Mon Sep 17 00:00:00 2001
From: JvD_Ericsson
Date: Mon, 2 Dec 2024 16:49:25 +0000
Subject: [PATCH] TEIV: Add groups and geo location
* Updated yang models:
- entities and relationships can now have groups
- updated most relationship descriptions
- added attributes to AntennaModule
- added dUpLMNId to ODUFunction
- updated Sector azimuth to decimal degrees
- added an ANTENNAMODULE_SERVES_NRCELLDU relationship
* Added auditing to teiv
* Refactoring of teiv
* Updated pgsql-schema-generator to generate groups
- can run as both a jar and through the IDE
* Updated exposure.Dockerfile to work with groups
* Updated cloud event example
Issue-ID: SMO-168
Issue-ID: SMO-169
Change-Id: I316c5766862cd0ff3e3275e81058090cbf092fe8
Signed-off-by: JvD_Ericsson
---
.../init_sql/00_init-teiv-exposure-model.sql | 98 +-
.../init_sql/01_init-teiv-exposure-data.sql | 172 +-
.../init_sql/03_init-teiv-exposure-groups.sql | 70 +
.../events/cloudEventExampleMerge.txt | 132 +-
docker-compose/copySqlSchemaFromPgsqlGenerator.sh | 3 +-
.../sql_scripts/00_init-teiv-exposure-model.sql | 98 +-
.../sql_scripts/01_init-teiv-exposure-data.sql | 172 +-
.../sql_scripts/03_init-teiv-exposure-groups.sql | 70 +
docker-compose/sql_scripts/waitForFiles.sh | 3 +-
docs/offeredapis/html/index.html | 7124 ++++++++++++--------
docs/offeredapis/index.html | 1126 ++--
.../topology-exposure-inventory-openapi.json | 1737 +++--
.../topology-exposure-inventory-openapi.yaml | 1067 ++-
.../oran/smo/teiv/pgsqlgenerator/Constants.java | 9 +
.../org/oran/smo/teiv/pgsqlgenerator/Entity.java | 13 +-
.../pgsqlgenerator/PgSchemaGeneratorException.java | 4 +
.../oran/smo/teiv/pgsqlgenerator/Processor.java | 5 +-
.../pgsqlgenerator/StaticColumnsGenerator.java | 54 +
.../schema/BackwardCompatibilityChecker.java | 2 +-
.../consumerdata/ConsumerDataSchemaGenerator.java | 4 +-
.../schema/data/DataSchemaGenerator.java | 39 +-
.../pgsqlgenerator/schema/data/TableBuilder.java | 5 +
.../schema/groups/GroupsSchemaGenerator.java | 73 +
.../src/main/resources/application.yaml | 6 +
.../scripts/00_init-oran-smo-teiv-data.sql | 31 +-
.../scripts/01_init-oran-smo-teiv-model.sql | 9 +-
.../scripts/03_init-oran-smo-teiv-groups.sql | 70 +
.../oran/smo/teiv/pgsqlgenerator/EndToEndTest.java | 44 +-
.../oran/smo/teiv/pgsqlgenerator/TestHelper.java | 3 +-
.../schema/data/TableBuilderTest.java | 16 +
.../entities/mock_00_init-oran-smo-teiv-data.sql | 2 +-
.../manyToMany/mock_00_init-oran-smo-teiv-data.sql | 2 +-
.../manyToOne/mock_00_init-oran-smo-teiv-data.sql | 2 +-
.../oneToMany/mock_00_init-oran-smo-teiv-data.sql | 2 +-
.../oneToOne/mock_00_init-oran-smo-teiv-data.sql | 2 +-
.../mock_00_init-oran-smo-teiv-data.sql | 2 +-
.../model/mock_01_init-oran-smo-teiv-model.sql | 3 +-
.../src/test/resources/application.yaml | 7 +
.../baseline-schema/00_init-oran-smo-teiv-data.sql | 5 +-
.../01_init-oran-smo-teiv-model.sql | 21 +-
.../03_init-oran-smo-teiv-groups.sql | 70 +
.../baseline-schema/custom-sql-script.sql | 49 +
.../result_00_init-oran-smo-teiv-data.sql | 88 +-
.../result_01_init-oran-smo-teiv-model.sql | 53 +-
.../result_03_init-oran-smo-teiv-groups.sql | 70 +
.../o-ran-smo-teiv-common-yang-types.yang | 100 +-
.../o-ran-smo-teiv-equipment.yang | 39 +-
.../generate-defaults/o-ran-smo-teiv-ran.yang | 117 +-
.../o-ran-smo-teiv-rel-equipment-ran.yang | 14 +
pom.xml | 2 +
teiv/exposure.Dockerfile | 2 +
teiv/pom.xml | 21 +-
.../antlr4/org/oran/smo/teiv/antlr4/tiesPath.g4 | 8 +-
.../java/org/oran/smo/teiv/CoreApplication.java | 2 -
.../DependentServiceAvailabilityKafka.java | 6 +-
.../org/oran/smo/teiv/config/KafkaAdminConfig.java | 2 +
.../java/org/oran/smo/teiv/config/KafkaConfig.java | 2 +
.../oran/smo/teiv/config/KafkaSecurityConfig.java | 2 +
.../health/TiesExposureHealthIndicator.java | 4 +-
.../health/TiesGroupsHealthIndicator.java | 51 +
.../controller/health/TiesHealthIndicator.java | 11 +-
.../health/TiesIngestionHealthIndicator.java | 2 +-
.../health/TiesKafkaHealthIndicator.java | 43 +
.../teiv/exception/AdapterIdNotFoundException.java | 30 +
.../oran/smo/teiv/exception/AuditException.java | 43 +
.../teiv/exception/CloudEventParserException.java | 60 +
.../teiv/exception/IllegalCharacterException.java | 35 +
.../exception/InvalidRelationshipException.java | 36 +-
.../org/oran/smo/teiv/exception/TiesException.java | 20 +-
.../org/oran/smo/teiv/exception/YangException.java | 32 +
.../smo/teiv/exception/YangModelException.java | 13 -
.../smo/teiv/exception/YangParsingException.java | 32 +
.../smo/teiv/exception/YangSchemaException.java | 36 +
.../teiv/exception/YangValidationException.java | 54 +
.../smo/teiv/exposure/audit/LoggerHandler.java | 4 +
.../api/impl/ClassifiersServiceImpl.java | 2 +
.../rest/controller/ClassifiersRestController.java | 2 +
.../ConsumerDataOperationRegistry.java | 2 +
.../consumerdata/ConsumerDataRepository.java | 10 -
.../consumerdata/ConsumerDataRepositoryImpl.java | 38 -
.../operation/DeleteClassifiersOperation.java | 7 +-
.../operation/DeleteDecoratorsOperation.java | 5 +-
.../operation/MergeClassifiersOperation.java | 9 +-
.../operation/MergeDecoratorsOperation.java | 9 +-
.../smo/teiv/exposure/data/api/DataService.java | 2 +-
.../exposure/data/api/impl/DataServiceImpl.java | 2 +
.../data/rest/controller/DataController.java | 2 +
.../decorators/api/impl/DecoratorsServiceImpl.java | 2 +
.../rest/controller/DecoratorsRestController.java | 2 +
.../smo/teiv/exposure/model/api/ModelService.java | 4 +-
.../exposure/model/api/impl/ModelServiceImpl.java | 38 +-
.../model/rest/controller/ModelController.java | 31 +-
.../smo/teiv/exposure/spi/ModelRepository.java | 21 +-
.../exposure/spi/impl/ModelRepositoryImpl.java | 106 +-
.../tiespath/innerlanguage/AndLogicalBlock.java | 17 +-
.../tiespath/innerlanguage/AndOrLogicalBlock.java | 4 +
.../tiespath/innerlanguage/ConditionFactory.java | 452 +-
.../tiespath/innerlanguage/ContainerType.java | 3 +-
.../innerlanguage/InnerFilterCriteria.java | 8 +-
.../tiespath/innerlanguage/OrLogicalBlock.java | 16 +-
.../tiespath/innerlanguage/QueryFunction.java | 4 +-
.../tiespath/innerlanguage/ScopeLogicalBlock.java | 2 +-
.../exposure/tiespath/refiner/AliasMapper.java | 1 +
.../tiespath/refiner/BasePathRefinement.java | 33 +-
.../tiespath/refiner/PathToJooqRefinement.java | 10 +-
.../tiespath/resolver/ResolverDataType.java | 2 +
.../exposure/tiespath/resolver/ResolverUtil.java | 7 +-
.../tiespath/resolver/ScopeFilterListener.java | 29 +
.../oran/smo/teiv/groups/GroupsCustomMetrics.java | 116 +
.../oran/smo/teiv/groups/api/GroupsService.java | 110 +
.../teiv/groups/api/impl/GroupsServiceImpl.java | 232 +
.../api/impl/creator/DynamicGroupCreator.java | 73 +
.../teiv/groups/api/impl/creator/GroupCreator.java | 43 +
.../api/impl/creator/StaticGroupCreator.java | 67 +
.../impl/resolver/AllProvidedMembersRetriever.java | 53 +
.../groups/api/impl/resolver/CriteriaResolver.java | 38 +
.../impl/resolver/CriteriaResolverRegistry.java | 63 +
.../api/impl/resolver/DynamicGroupResolver.java | 61 +
.../api/impl/resolver/EntityByDomainResolver.java | 54 +
.../api/impl/resolver/EntityByTypeResolver.java | 55 +
.../groups/api/impl/resolver/GroupResolver.java | 42 +
.../resolver/InvalidProvidedMembersRetriever.java | 61 +
.../NotPresentProvidedMembersRetriever.java | 67 +
.../resolver/PresentProvidedMembersRetriever.java | 66 +
.../impl/resolver/ProvidedMembersRetriever.java | 112 +
.../resolver/ProvidedMembersRetrieverRegistry.java | 56 +
.../resolver/RelationshipByEntityIdResolver.java | 58 +
.../impl/resolver/RelationshipByTypeResolver.java | 55 +
.../api/impl/resolver/StaticGroupResolver.java | 44 +
.../org/oran/smo/teiv/groups/audit/AuditInfo.java | 88 +
.../smo/teiv/groups/audit/ExecutionStatus.java | 29 +
.../oran/smo/teiv/groups/audit/GroupOperation.java | 29 +
.../groups/rest/controller/GroupsConstants.java | 30 +
.../groups/rest/controller/GroupsController.java | 221 +
.../groups/rest/controller/GroupsException.java | 90 +
.../teiv/groups/rest/controller/GroupsUtil.java | 40 +
.../smo/teiv/groups/spi/DynamicGroupRecord.java | 34 +
.../teiv/groups/spi/GroupNotFoundException.java | 30 +
.../org/oran/smo/teiv/groups/spi/GroupRecord.java | 36 +
.../oran/smo/teiv/groups/spi/GroupsRepository.java | 258 +
.../smo/teiv/groups/spi/ProvidedMembersStatus.java | 50 +
.../groups/spi/StaticGroupMemberProcessor.java | 108 +
.../smo/teiv/groups/spi/StaticGroupRecord.java | 35 +
.../teiv/groups/spi/impl/GroupsRepositoryImpl.java | 412 ++
.../smo/teiv/listener/CreateTopologyProcessor.java | 16 +-
.../smo/teiv/listener/DeleteTopologyProcessor.java | 9 +
.../smo/teiv/listener/MergeTopologyProcessor.java | 21 +-
.../SourceEntityDeleteTopologyProcessor.java | 13 +
.../smo/teiv/listener/audit/ExecutionStatus.java | 29 +
.../teiv/listener/audit/IngestionAuditInfo.java | 44 +
.../teiv/listener/audit/IngestionAuditLogger.java | 44 +
.../java/org/oran/smo/teiv/schema/DataType.java | 8 +-
.../java/org/oran/smo/teiv/schema/EntityType.java | 50 +-
.../java/org/oran/smo/teiv/schema/Persistable.java | 11 +-
.../oran/smo/teiv/schema/PostgresSchemaLoader.java | 19 +-
.../org/oran/smo/teiv/schema/RelationType.java | 62 +-
.../java/org/oran/smo/teiv/schema/Reliability.java | 49 +
.../oran/smo/teiv/schema/ResponsibleAdapter.java | 71 +
.../org/oran/smo/teiv/schema/SchemaRegistry.java | 20 +
.../smo/teiv/service/SchemaCleanUpService.java | 4 +-
.../oran/smo/teiv/service/TiesDbOperations.java | 209 +-
.../teiv/service/cloudevent/CloudEventParser.java | 222 +-
.../smo/teiv/service/cloudevent/data/Entity.java | 130 +
.../teiv/service/cloudevent/data/Relationship.java | 58 +
.../oran/smo/teiv/service/kafka/KafkaFactory.java | 2 +
.../smo/teiv/service/kafka/KafkaTopicService.java | 30 +-
.../smo/teiv/service/models/OperationResult.java | 39 +-
.../smo/teiv/startup/SchemaCleanUpHandler.java | 53 +
.../org/oran/smo/teiv/startup/SchemaHandler.java | 28 +-
.../org/oran/smo/teiv/utils/JooqTypeConverter.java | 16 +-
.../java/org/oran/smo/teiv/utils/JooqUtils.java | 70 +
.../org/oran/smo/teiv/utils/TiesConstants.java | 15 +
.../org/oran/smo/teiv/utils/path/TiesPathUtil.java | 5 +-
.../utils/query/exception/TiesPathException.java | 14 +-
.../org/oran/smo/teiv/utils/schema/Geography.java | 64 +-
.../teiv/utils/yangparser/ExposureYangParser.java | 139 +
.../teiv/utils/yangparser/IngestionYangParser.java | 105 +
.../teiv/utils/yangparser/YangFindingsManager.java | 144 +
.../smo/teiv/utils/yangparser/YangModelLoader.java | 115 +
teiv/src/main/resources/application.yaml | 13 +-
teiv/src/main/resources/logback-json.xml | 33 +-
.../resources/models/o-ran-smo-teiv-cloud.yang | 15 +
.../models/o-ran-smo-teiv-common-yang-types.yang | 136 +-
.../resources/models/o-ran-smo-teiv-equipment.yang | 95 +-
.../main/resources/models/o-ran-smo-teiv-oam.yang | 14 +-
.../main/resources/models/o-ran-smo-teiv-ran.yang | 91 +-
.../models/o-ran-smo-teiv-rel-cloud-ran.yang | 9 +
.../models/o-ran-smo-teiv-rel-equipment-ran.yang | 57 +
.../models/o-ran-smo-teiv-rel-oam-cloud.yang | 7 +
.../models/o-ran-smo-teiv-rel-oam-ran.yang | 56 +-
...topology-exposure-inventory-kafka-asyncapi.yaml | 265 +
.../v1/topology-exposure-inventory-openapi.yaml | 1067 ++-
.../org/oran/smo/teiv/CoreApplicationTest.java | 5 +
.../java/org/oran/smo/teiv/TopologyApiBase.java | 69 +
.../DependentServiceAvailabilityKafkaTest.java | 24 +-
.../health/TiesExposureHealthIndicatorTest.java | 4 +-
.../health/TiesGroupsHealthIndicatorTest.java | 91 +
.../health/TiesIngestionHealthIndicatorTest.java | 7 +-
.../oran/smo/teiv/db/TestPostgresqlContainer.java | 99 +-
.../smo/teiv/db/TestPostgresqlContainerV1.java | 85 -
.../api/contract/TopologyExposureApiBase.java | 62 +-
.../api/ClassifiersServiceContainerizedTest.java | 76 +-
.../api/DecoratorsServiceContainerizedTest.java | 64 +-
...RepositoryImplGETRequestsContainerizedTest.java | 72 +-
.../tiespath/innerlanguage/DtoToJooqTest.java | 932 ++-
.../innerlanguage/ScopeLogicalBlockTest.java | 10 +
.../tiespath/innerlanguage/SelectBlockTest.java | 35 +-
.../tiespath/refiner/BasePathRefinementTest.java | 31 +
.../tiespath/resolver/ScopeResolverTest.java | 87 +
.../smo/teiv/groups/TopologyGroupsApiBase.java | 65 +
.../api/impl/creator/DynamicGroupCreatorTest.java | 64 +
.../impl/resolver/DynamicGroupResolverTest.java | 68 +
.../IngestionOperationValidatorTest.java | 184 +-
.../teiv/listener/CreateTopologyProcessorTest.java | 138 +-
.../teiv/listener/DeleteTopologyProcessorTest.java | 79 +-
.../teiv/listener/MergeTopologyProcessorTest.java | 134 +-
.../SourceEntityDeleteTopologyProcessorTest.java | 153 +-
.../org/oran/smo/teiv/schema/MockSchemaLoader.java | 44 +-
.../oran/smo/teiv/schema/SchemaRegistryTest.java | 41 +-
.../org/oran/smo/teiv/service/EndToEndDbTest.java | 134 +-
.../smo/teiv/service/KafkaTopicServiceTest.java | 33 +-
.../teiv/service/TiesDbOperationResultsTest.java | 780 ++-
.../service/TiesDbServiceContainerizedTest.java | 664 +-
.../service/cloudevent/CloudEventParserTest.java | 307 +-
.../smo/teiv/startup/SchemaCleanUpHandlerTest.java | 62 +
.../oran/smo/teiv/utils/CloudEventTestUtil.java | 6 +-
.../smo/teiv/utils/ExposureYangParserTest.java | 124 +
.../smo/teiv/utils/IngestionYangParserTest.java | 220 +
.../oran/smo/teiv/utils/JooqTypeConverterTest.java | 106 +
.../smo/teiv/utils/KafkaTestExecutionListener.java | 36 +
.../org/oran/smo/teiv/utils/TiesTestConstants.java | 3 +
.../oran/smo/teiv/utils/schema/GeographyTest.java | 35 +-
teiv/src/test/resources/application.yaml | 12 +-
.../common/ce-64bit-numbers-as-json-numbers.json | 51 +
.../common/ce-64bit-numbers-as-string.json | 51 +
.../resources/cloudeventdata/common/ce-arrays.json | 28 +-
.../common/ce-complex-attributes.json | 60 +
.../cloudeventdata/common/ce-data-only.json | 104 +
.../cloudeventdata/common/ce-delete-entity-id.json | 23 +
.../cloudeventdata/common/ce-deprecated.json | 85 +
.../cloudeventdata/common/ce-geo-location.json | 46 +
.../common/ce-invalid-entity-attribute.json | 12 +-
.../cloudeventdata/common/ce-null-attribute.json | 31 +
.../cloudeventdata/common/ce-one-entity.json | 10 +-
.../ce-relationship-invalid-module-type-pair.json | 18 +-
.../common/ce-relationship-invalid-module.json | 18 +-
.../common/ce-relationship-invalid-type.json | 18 +-
.../common/ce-relationship-missing-a-side.json | 18 +-
.../common/ce-relationship-missing-b-side.json | 18 +-
.../common/ce-relationship-missing-both-sides.json | 18 +-
.../common/ce-relationship-missing-id.json | 18 +-
.../common/ce-relationship-missing-source-ids.json | 31 +
.../common/ce-relationship-with-one-source-id.json | 25 +
.../cloudeventdata/common/ce-with-data.json | 104 +-
.../common/ce-with-invalid-entity-id.json | 100 +
.../common/ce-with-invalid-relationship-ids.json | 30 +-
.../common/ce-with-invalid-relationship-ids2.json | 30 +-
.../common/ce-with-invalid-relationship-ids3.json | 30 +-
.../common/ce-with-no-source-ids.json | 96 +
.../end-to-end/ce-create-attribute-null.json | 26 +
.../end-to-end/ce-create-geo-location-null.json | 28 +
.../end-to-end/ce-create-geo-location.json | 29 +-
.../end-to-end/ce-create-inferred.json | 183 +
.../end-to-end/ce-create-many-to-many.json | 148 +-
.../end-to-end/ce-create-many-to-one.json | 68 +-
.../end-to-end/ce-create-one-to-many.json | 14 +-
.../end-to-end/ce-create-one-to-many3.json | 87 +
.../end-to-end/ce-create-one-to-one.json | 58 +-
...create-relationship-connecting-same-entity.json | 83 +-
.../end-to-end/ce-create-second-case.json | 113 +-
.../end-to-end/ce-delete-managed-element.json | 6 +-
.../end-to-end/ce-delete-many-to-many.json | 14 +-
.../end-to-end/ce-delete-many-to-one.json | 20 +-
.../end-to-end/ce-delete-one-to-many.json | 12 +-
.../end-to-end/ce-delete-one-to-one.json | 10 +-
...delete-relationship-connecting-same-entity.json | 10 +-
.../end-to-end/ce-merge-long-names.json | 435 +-
.../end-to-end/ce-merge-many-to-many.json | 91 +
.../ce-merge-one-to-many-deprecated-structure.json | 95 -
.../end-to-end/ce-merge-one-to-many.json | 96 +-
.../end-to-end/ce-merge-one-to-many2.json | 20 +-
.../end-to-end/ce-merge-reliability.json | 118 +
.../ce-source-entity-delete-cm-handle.json | 4 +-
.../ce-source-entity-delete-cm-handle2.json | 4 +-
.../cloudeventdata/end-to-end/ce-unknown-type.json | 25 +
.../expected-results/exp-create-geo-location.json | 22 +
.../expected-results/exp-create-inferred.json | 146 +
.../expected-results/exp-create-many-to-many.json | 98 +-
.../expected-results/exp-create-one-to-one.json | 20 +-
.../expected-results/exp-create-second-case.json | 203 +-
.../expected-results/exp-delete-one-to-one.json | 17 +-
.../expected-results/exp-merge-one-to-many.json | 143 +-
.../expected-results/exp-merge-reliability.json | 76 +
.../not-exp-delete-many-to-many.json | 17 +-
.../not-exp-delete-one-to-one.json | 8 +-
.../not-exp-source-entity-delete-cm-handle.json | 17 +-
.../attributes/ce-wrong-attribute-type.json | 27 +
.../attributes/ce-wrong-attribute-type2.json | 28 +
.../attributes/ce-wrong-attribute-type3.json | 28 +
.../validation/attributes/int-as-string.json | 30 +
.../ce-create-many-to-one-geolocation.json | 32 +-
.../ce-create-many-to-one-geolocation2.json | 20 +-
.../many-to-one/ce-create-many-to-one.json | 33 +-
.../many-to-one/ce-create-many-to-one2.json | 37 +-
.../many-to-one/ce-create-many-to-one3.json | 25 +-
.../many-to-one/ce-create-many-to-one4.json | 16 +-
.../many-to-one/ce-create-many-to-one5.json | 20 +-
.../many-to-one/ce-create-many-to-one6.json | 25 +-
.../many-to-one/ce-create-many-to-one7.json | 12 +-
.../many-to-one/ce-create-many-to-one8.json | 20 +-
.../many-to-one/ce-create-many-to-one9.json | 59 +
.../ce-merge-many-to-one-null-attribute.json | 56 +
.../one-to-many/ce-create-one-to-many.json | 34 +-
.../one-to-many/ce-create-one-to-many2.json | 34 +-
.../one-to-many/ce-create-one-to-many3.json | 20 +-
.../one-to-many/ce-create-one-to-many4.json | 12 +-
.../one-to-many/ce-create-one-to-many5.json | 22 +-
.../one-to-many/ce-create-one-to-many6.json | 20 +-
.../one-to-many/ce-create-one-to-many7.json | 12 +-
.../one-to-many/ce-create-one-to-many8.json | 22 +-
.../one-to-one/ce-create-one-to-one.json | 39 +-
.../one-to-one/ce-create-one-to-one2.json | 39 +-
.../one-to-one/ce-create-one-to-one3.json | 24 +-
.../one-to-one/ce-create-one-to-one4.json | 14 +-
.../one-to-one/ce-create-one-to-one5.json | 29 +-
.../one-to-one/ce-create-one-to-one6.json | 22 +-
.../one-to-one/ce-create-one-to-one7.json | 14 +-
.../one-to-one/ce-create-one-to-one8.json | 29 +-
.../data/02_getTopologyByEntityTypeName.groovy | 64 +-
.../contracts/data/05_getRelationshipTypes.groovy | 16 +-
.../contracts/data/08_getEntitiesByDomain.groovy | 34 +-
...tClassifiers_getTopologyByEntityTypeName.groovy | 324 +
...01_getClassifiers_getRelationshipsByType.groovy | 250 +
.../02_getClassifiers_getEntitiesByDomain.groovy | 163 +
.../classifiers/03_postClassifiers_merge.groovy | 129 +
.../classifiers/04_postClassifiers_delete.groovy | 237 +
.../exposure/data/00_getAllDomains.groovy | 276 +
.../exposure/data/01_getTopologyEntityTypes.groovy | 550 ++
.../data/02_getTopologyByEntityTypeName.groovy | 2008 ++++++
.../exposure/data/03_getTopologyById.groovy | 106 +
.../data/04_getAllRelationshipsForEntityId.groovy | 746 ++
.../exposure/data/05_getRelationshipTypes.groovy | 545 ++
.../exposure/data/06_getRelationshipsByType.groovy | 807 +++
.../exposure/data/07_getRelationshipById.groovy | 90 +
.../exposure/data/08_getEntitiesByDomain.groovy | 1034 +++
...etDecorators_getTopologyByEntityTypeName.groovy | 236 +
.../01_getDecorators_getRelationshipsByType.groovy | 236 +
.../02_getDecorators_getEntitiesByDomain.groovy | 236 +
.../decorators/03_postDecoratorsMerge.groovy | 310 +
.../decorators/04_postDecoratorsDelete.groovy | 301 +
.../exposure/schemas/00_getAllSchemas.groovy | 578 ++
.../exposure/schemas/01_getSchemaContent.groovy | 251 +
.../exposure/schemas/02_postSchemas.groovy | 1370 ++++
.../exposure/schemas/03_deleteSchemas.groovy | 66 +
.../contracts/groups/00_createGroup.groovy | 889 +++
.../resources/contracts/groups/01_getGroups.groovy | 277 +
.../contracts/groups/02_getGroupById.groovy | 252 +
.../contracts/groups/03_deleteGroup.groovy | 71 +
.../resources/contracts/groups/04_putGroup.groovy | 113 +
.../contracts/groups/05_getMembers.groovy | 592 ++
.../contracts/groups/06_getProvidedMembers.groovy | 435 ++
.../groups/07_updateProvidedMembers.groovy | 1128 ++++
.../contracts/schemas/00_getAllSchemas.groovy | 30 +-
.../contracts/schemas/01_getSchemaContent.groovy | 56 +-
.../pgsqlschema/00_init-oran-smo-teiv-data-v1.sql | 157 +-
.../pgsqlschema/00_init-oran-smo-teiv-data.sql | 2103 +++---
.../pgsqlschema/01_init-oran-smo-teiv-model-v1.sql | 86 +-
.../pgsqlschema/01_init-oran-smo-teiv-model.sql | 970 ++-
.../02_init-oran-smo-teiv-consumer-data.sql | 53 +
.../pgsqlschema/03_init-oran-smo-teiv-groups.sql | 70 +
.../test/resources/pgsqlschema/consumer-data.sql | 43 +
.../test/resources/pgsqlschema/data-deprecated.sql | 56 +-
teiv/src/test/resources/pgsqlschema/data.sql | 396 +-
teiv/src/test/resources/pgsqlschema/groups.sql | 83 +
.../resources/pgsqlschema/ingestion-test-data.sql | 527 ++
.../resources/pgsqlschema/ingestion-test-model.sql | 149 +
teiv/src/test/resources/pgsqlschema/model.sql | 11 +-
.../test-data-for-ingestion-validation.sql | 157 +
.../test-model-for-ingestion-validation.sql | 60 +
.../test/resources/yang/parser/bad-yang-file.yang | 63 +
.../resources/yang/parser/entity-in-wrong-ns.json | 15 +
.../test/resources/yang/parser/geolocation.json | 33 +
.../test/resources/yang/parser/missing-key.json | 14 +
.../resources/yang/parser/multiple-entity.json | 47 +
.../resources/yang/parser/not-existing-entity.json | 18 +
.../yang/parser/source-ids-without-list.json | 16 +
.../resources/yang/parser/wrong-attributes.json | 16 +
.../resources/yang/parser/wrong-entity-name.json | 15 +
.../resources/yang/parser/wrong-namespace.json | 15 +
.../wrong-source-ids-list-with-one-long.json | 18 +
.../yang/parser/wrong-source-ids-list.json | 20 +
.../parser/wrong-source-ids-long-without-list.json | 16 +
.../data/instance/AbstractStructureInstance.java | 24 +
393 files changed, 40313 insertions(+), 10624 deletions(-)
create mode 100644 charts/smo/topology-exposure-inventory/resources/init_sql/03_init-teiv-exposure-groups.sql
create mode 100644 docker-compose/sql_scripts/03_init-teiv-exposure-groups.sql
create mode 100644 pgsql-schema-generator/src/main/java/org/oran/smo/teiv/pgsqlgenerator/StaticColumnsGenerator.java
create mode 100644 pgsql-schema-generator/src/main/java/org/oran/smo/teiv/pgsqlgenerator/schema/groups/GroupsSchemaGenerator.java
create mode 100644 pgsql-schema-generator/src/main/resources/scripts/03_init-oran-smo-teiv-groups.sql
create mode 100644 pgsql-schema-generator/src/test/resources/baseline-schema/03_init-oran-smo-teiv-groups.sql
create mode 100644 pgsql-schema-generator/src/test/resources/baseline-schema/custom-sql-script.sql
create mode 100644 pgsql-schema-generator/src/test/resources/expected-db-schema/result_03_init-oran-smo-teiv-groups.sql
create mode 100644 teiv/src/main/java/org/oran/smo/teiv/controller/health/TiesGroupsHealthIndicator.java
create mode 100644 teiv/src/main/java/org/oran/smo/teiv/controller/health/TiesKafkaHealthIndicator.java
create mode 100644 teiv/src/main/java/org/oran/smo/teiv/exception/AdapterIdNotFoundException.java
create mode 100644 teiv/src/main/java/org/oran/smo/teiv/exception/AuditException.java
create mode 100644 teiv/src/main/java/org/oran/smo/teiv/exception/CloudEventParserException.java
create mode 100644 teiv/src/main/java/org/oran/smo/teiv/exception/IllegalCharacterException.java
create mode 100644 teiv/src/main/java/org/oran/smo/teiv/exception/YangException.java
create mode 100644 teiv/src/main/java/org/oran/smo/teiv/exception/YangParsingException.java
create mode 100644 teiv/src/main/java/org/oran/smo/teiv/exception/YangSchemaException.java
create mode 100644 teiv/src/main/java/org/oran/smo/teiv/exception/YangValidationException.java
create mode 100644 teiv/src/main/java/org/oran/smo/teiv/groups/GroupsCustomMetrics.java
create mode 100644 teiv/src/main/java/org/oran/smo/teiv/groups/api/GroupsService.java
create mode 100644 teiv/src/main/java/org/oran/smo/teiv/groups/api/impl/GroupsServiceImpl.java
create mode 100644 teiv/src/main/java/org/oran/smo/teiv/groups/api/impl/creator/DynamicGroupCreator.java
create mode 100644 teiv/src/main/java/org/oran/smo/teiv/groups/api/impl/creator/GroupCreator.java
create mode 100644 teiv/src/main/java/org/oran/smo/teiv/groups/api/impl/creator/StaticGroupCreator.java
create mode 100644 teiv/src/main/java/org/oran/smo/teiv/groups/api/impl/resolver/AllProvidedMembersRetriever.java
create mode 100644 teiv/src/main/java/org/oran/smo/teiv/groups/api/impl/resolver/CriteriaResolver.java
create mode 100644 teiv/src/main/java/org/oran/smo/teiv/groups/api/impl/resolver/CriteriaResolverRegistry.java
create mode 100644 teiv/src/main/java/org/oran/smo/teiv/groups/api/impl/resolver/DynamicGroupResolver.java
create mode 100644 teiv/src/main/java/org/oran/smo/teiv/groups/api/impl/resolver/EntityByDomainResolver.java
create mode 100644 teiv/src/main/java/org/oran/smo/teiv/groups/api/impl/resolver/EntityByTypeResolver.java
create mode 100644 teiv/src/main/java/org/oran/smo/teiv/groups/api/impl/resolver/GroupResolver.java
create mode 100644 teiv/src/main/java/org/oran/smo/teiv/groups/api/impl/resolver/InvalidProvidedMembersRetriever.java
create mode 100644 teiv/src/main/java/org/oran/smo/teiv/groups/api/impl/resolver/NotPresentProvidedMembersRetriever.java
create mode 100644 teiv/src/main/java/org/oran/smo/teiv/groups/api/impl/resolver/PresentProvidedMembersRetriever.java
create mode 100644 teiv/src/main/java/org/oran/smo/teiv/groups/api/impl/resolver/ProvidedMembersRetriever.java
create mode 100644 teiv/src/main/java/org/oran/smo/teiv/groups/api/impl/resolver/ProvidedMembersRetrieverRegistry.java
create mode 100644 teiv/src/main/java/org/oran/smo/teiv/groups/api/impl/resolver/RelationshipByEntityIdResolver.java
create mode 100644 teiv/src/main/java/org/oran/smo/teiv/groups/api/impl/resolver/RelationshipByTypeResolver.java
create mode 100644 teiv/src/main/java/org/oran/smo/teiv/groups/api/impl/resolver/StaticGroupResolver.java
create mode 100644 teiv/src/main/java/org/oran/smo/teiv/groups/audit/AuditInfo.java
create mode 100644 teiv/src/main/java/org/oran/smo/teiv/groups/audit/ExecutionStatus.java
create mode 100644 teiv/src/main/java/org/oran/smo/teiv/groups/audit/GroupOperation.java
create mode 100644 teiv/src/main/java/org/oran/smo/teiv/groups/rest/controller/GroupsConstants.java
create mode 100644 teiv/src/main/java/org/oran/smo/teiv/groups/rest/controller/GroupsController.java
create mode 100644 teiv/src/main/java/org/oran/smo/teiv/groups/rest/controller/GroupsException.java
create mode 100644 teiv/src/main/java/org/oran/smo/teiv/groups/rest/controller/GroupsUtil.java
create mode 100644 teiv/src/main/java/org/oran/smo/teiv/groups/spi/DynamicGroupRecord.java
create mode 100644 teiv/src/main/java/org/oran/smo/teiv/groups/spi/GroupNotFoundException.java
create mode 100644 teiv/src/main/java/org/oran/smo/teiv/groups/spi/GroupRecord.java
create mode 100644 teiv/src/main/java/org/oran/smo/teiv/groups/spi/GroupsRepository.java
create mode 100644 teiv/src/main/java/org/oran/smo/teiv/groups/spi/ProvidedMembersStatus.java
create mode 100644 teiv/src/main/java/org/oran/smo/teiv/groups/spi/StaticGroupMemberProcessor.java
create mode 100644 teiv/src/main/java/org/oran/smo/teiv/groups/spi/StaticGroupRecord.java
create mode 100644 teiv/src/main/java/org/oran/smo/teiv/groups/spi/impl/GroupsRepositoryImpl.java
create mode 100644 teiv/src/main/java/org/oran/smo/teiv/listener/audit/ExecutionStatus.java
create mode 100644 teiv/src/main/java/org/oran/smo/teiv/listener/audit/IngestionAuditInfo.java
create mode 100644 teiv/src/main/java/org/oran/smo/teiv/listener/audit/IngestionAuditLogger.java
create mode 100644 teiv/src/main/java/org/oran/smo/teiv/schema/Reliability.java
create mode 100644 teiv/src/main/java/org/oran/smo/teiv/schema/ResponsibleAdapter.java
create mode 100644 teiv/src/main/java/org/oran/smo/teiv/startup/SchemaCleanUpHandler.java
create mode 100644 teiv/src/main/java/org/oran/smo/teiv/utils/JooqUtils.java
create mode 100644 teiv/src/main/java/org/oran/smo/teiv/utils/yangparser/ExposureYangParser.java
create mode 100644 teiv/src/main/java/org/oran/smo/teiv/utils/yangparser/IngestionYangParser.java
create mode 100644 teiv/src/main/java/org/oran/smo/teiv/utils/yangparser/YangFindingsManager.java
create mode 100644 teiv/src/main/java/org/oran/smo/teiv/utils/yangparser/YangModelLoader.java
create mode 100644 teiv/src/main/resources/v1/topology-exposure-inventory-kafka-asyncapi.yaml
create mode 100644 teiv/src/test/java/org/oran/smo/teiv/TopologyApiBase.java
create mode 100644 teiv/src/test/java/org/oran/smo/teiv/controller/health/TiesGroupsHealthIndicatorTest.java
delete mode 100644 teiv/src/test/java/org/oran/smo/teiv/db/TestPostgresqlContainerV1.java
create mode 100644 teiv/src/test/java/org/oran/smo/teiv/groups/TopologyGroupsApiBase.java
create mode 100644 teiv/src/test/java/org/oran/smo/teiv/groups/api/impl/creator/DynamicGroupCreatorTest.java
create mode 100644 teiv/src/test/java/org/oran/smo/teiv/groups/api/impl/resolver/DynamicGroupResolverTest.java
create mode 100644 teiv/src/test/java/org/oran/smo/teiv/startup/SchemaCleanUpHandlerTest.java
create mode 100644 teiv/src/test/java/org/oran/smo/teiv/utils/ExposureYangParserTest.java
create mode 100644 teiv/src/test/java/org/oran/smo/teiv/utils/IngestionYangParserTest.java
create mode 100644 teiv/src/test/java/org/oran/smo/teiv/utils/JooqTypeConverterTest.java
create mode 100644 teiv/src/test/java/org/oran/smo/teiv/utils/KafkaTestExecutionListener.java
create mode 100644 teiv/src/test/resources/cloudeventdata/common/ce-64bit-numbers-as-json-numbers.json
create mode 100644 teiv/src/test/resources/cloudeventdata/common/ce-64bit-numbers-as-string.json
create mode 100644 teiv/src/test/resources/cloudeventdata/common/ce-complex-attributes.json
create mode 100644 teiv/src/test/resources/cloudeventdata/common/ce-data-only.json
create mode 100644 teiv/src/test/resources/cloudeventdata/common/ce-delete-entity-id.json
create mode 100644 teiv/src/test/resources/cloudeventdata/common/ce-deprecated.json
create mode 100644 teiv/src/test/resources/cloudeventdata/common/ce-geo-location.json
create mode 100644 teiv/src/test/resources/cloudeventdata/common/ce-null-attribute.json
create mode 100644 teiv/src/test/resources/cloudeventdata/common/ce-relationship-missing-source-ids.json
create mode 100644 teiv/src/test/resources/cloudeventdata/common/ce-relationship-with-one-source-id.json
create mode 100644 teiv/src/test/resources/cloudeventdata/common/ce-with-invalid-entity-id.json
create mode 100644 teiv/src/test/resources/cloudeventdata/common/ce-with-no-source-ids.json
create mode 100644 teiv/src/test/resources/cloudeventdata/end-to-end/ce-create-attribute-null.json
create mode 100644 teiv/src/test/resources/cloudeventdata/end-to-end/ce-create-geo-location-null.json
create mode 100644 teiv/src/test/resources/cloudeventdata/end-to-end/ce-create-inferred.json
create mode 100644 teiv/src/test/resources/cloudeventdata/end-to-end/ce-create-one-to-many3.json
create mode 100644 teiv/src/test/resources/cloudeventdata/end-to-end/ce-merge-many-to-many.json
delete mode 100644 teiv/src/test/resources/cloudeventdata/end-to-end/ce-merge-one-to-many-deprecated-structure.json
create mode 100644 teiv/src/test/resources/cloudeventdata/end-to-end/ce-merge-reliability.json
create mode 100644 teiv/src/test/resources/cloudeventdata/end-to-end/ce-unknown-type.json
create mode 100644 teiv/src/test/resources/cloudeventdata/end-to-end/expected-results/exp-create-geo-location.json
create mode 100644 teiv/src/test/resources/cloudeventdata/end-to-end/expected-results/exp-create-inferred.json
create mode 100644 teiv/src/test/resources/cloudeventdata/end-to-end/expected-results/exp-merge-reliability.json
create mode 100644 teiv/src/test/resources/cloudeventdata/validation/attributes/ce-wrong-attribute-type.json
create mode 100644 teiv/src/test/resources/cloudeventdata/validation/attributes/ce-wrong-attribute-type2.json
create mode 100644 teiv/src/test/resources/cloudeventdata/validation/attributes/ce-wrong-attribute-type3.json
create mode 100644 teiv/src/test/resources/cloudeventdata/validation/attributes/int-as-string.json
create mode 100644 teiv/src/test/resources/cloudeventdata/validation/many-to-one/ce-create-many-to-one9.json
create mode 100644 teiv/src/test/resources/cloudeventdata/validation/many-to-one/ce-merge-many-to-one-null-attribute.json
create mode 100644 teiv/src/test/resources/contracts/exposure/classifiers/00_getClassifiers_getTopologyByEntityTypeName.groovy
create mode 100644 teiv/src/test/resources/contracts/exposure/classifiers/01_getClassifiers_getRelationshipsByType.groovy
create mode 100644 teiv/src/test/resources/contracts/exposure/classifiers/02_getClassifiers_getEntitiesByDomain.groovy
create mode 100644 teiv/src/test/resources/contracts/exposure/classifiers/03_postClassifiers_merge.groovy
create mode 100644 teiv/src/test/resources/contracts/exposure/classifiers/04_postClassifiers_delete.groovy
create mode 100644 teiv/src/test/resources/contracts/exposure/data/00_getAllDomains.groovy
create mode 100644 teiv/src/test/resources/contracts/exposure/data/01_getTopologyEntityTypes.groovy
create mode 100644 teiv/src/test/resources/contracts/exposure/data/02_getTopologyByEntityTypeName.groovy
create mode 100644 teiv/src/test/resources/contracts/exposure/data/03_getTopologyById.groovy
create mode 100644 teiv/src/test/resources/contracts/exposure/data/04_getAllRelationshipsForEntityId.groovy
create mode 100644 teiv/src/test/resources/contracts/exposure/data/05_getRelationshipTypes.groovy
create mode 100644 teiv/src/test/resources/contracts/exposure/data/06_getRelationshipsByType.groovy
create mode 100644 teiv/src/test/resources/contracts/exposure/data/07_getRelationshipById.groovy
create mode 100644 teiv/src/test/resources/contracts/exposure/data/08_getEntitiesByDomain.groovy
create mode 100644 teiv/src/test/resources/contracts/exposure/decorators/00_getDecorators_getTopologyByEntityTypeName.groovy
create mode 100644 teiv/src/test/resources/contracts/exposure/decorators/01_getDecorators_getRelationshipsByType.groovy
create mode 100644 teiv/src/test/resources/contracts/exposure/decorators/02_getDecorators_getEntitiesByDomain.groovy
create mode 100644 teiv/src/test/resources/contracts/exposure/decorators/03_postDecoratorsMerge.groovy
create mode 100644 teiv/src/test/resources/contracts/exposure/decorators/04_postDecoratorsDelete.groovy
create mode 100644 teiv/src/test/resources/contracts/exposure/schemas/00_getAllSchemas.groovy
create mode 100644 teiv/src/test/resources/contracts/exposure/schemas/01_getSchemaContent.groovy
create mode 100644 teiv/src/test/resources/contracts/exposure/schemas/02_postSchemas.groovy
create mode 100644 teiv/src/test/resources/contracts/exposure/schemas/03_deleteSchemas.groovy
create mode 100644 teiv/src/test/resources/contracts/groups/00_createGroup.groovy
create mode 100644 teiv/src/test/resources/contracts/groups/01_getGroups.groovy
create mode 100644 teiv/src/test/resources/contracts/groups/02_getGroupById.groovy
create mode 100644 teiv/src/test/resources/contracts/groups/03_deleteGroup.groovy
create mode 100644 teiv/src/test/resources/contracts/groups/04_putGroup.groovy
create mode 100644 teiv/src/test/resources/contracts/groups/05_getMembers.groovy
create mode 100644 teiv/src/test/resources/contracts/groups/06_getProvidedMembers.groovy
create mode 100644 teiv/src/test/resources/contracts/groups/07_updateProvidedMembers.groovy
create mode 100644 teiv/src/test/resources/pgsqlschema/02_init-oran-smo-teiv-consumer-data.sql
create mode 100644 teiv/src/test/resources/pgsqlschema/03_init-oran-smo-teiv-groups.sql
create mode 100644 teiv/src/test/resources/pgsqlschema/consumer-data.sql
create mode 100644 teiv/src/test/resources/pgsqlschema/groups.sql
create mode 100644 teiv/src/test/resources/pgsqlschema/ingestion-test-data.sql
create mode 100644 teiv/src/test/resources/pgsqlschema/ingestion-test-model.sql
create mode 100644 teiv/src/test/resources/pgsqlschema/test-data-for-ingestion-validation.sql
create mode 100644 teiv/src/test/resources/pgsqlschema/test-model-for-ingestion-validation.sql
create mode 100644 teiv/src/test/resources/yang/parser/bad-yang-file.yang
create mode 100644 teiv/src/test/resources/yang/parser/entity-in-wrong-ns.json
create mode 100644 teiv/src/test/resources/yang/parser/geolocation.json
create mode 100644 teiv/src/test/resources/yang/parser/missing-key.json
create mode 100644 teiv/src/test/resources/yang/parser/multiple-entity.json
create mode 100644 teiv/src/test/resources/yang/parser/not-existing-entity.json
create mode 100644 teiv/src/test/resources/yang/parser/source-ids-without-list.json
create mode 100644 teiv/src/test/resources/yang/parser/wrong-attributes.json
create mode 100644 teiv/src/test/resources/yang/parser/wrong-entity-name.json
create mode 100644 teiv/src/test/resources/yang/parser/wrong-namespace.json
create mode 100644 teiv/src/test/resources/yang/parser/wrong-source-ids-list-with-one-long.json
create mode 100644 teiv/src/test/resources/yang/parser/wrong-source-ids-list.json
create mode 100644 teiv/src/test/resources/yang/parser/wrong-source-ids-long-without-list.json
diff --git a/charts/smo/topology-exposure-inventory/resources/init_sql/00_init-teiv-exposure-model.sql b/charts/smo/topology-exposure-inventory/resources/init_sql/00_init-teiv-exposure-model.sql
index 7fbb357..dbb7b9d 100644
--- a/charts/smo/topology-exposure-inventory/resources/init_sql/00_init-teiv-exposure-model.sql
+++ b/charts/smo/topology-exposure-inventory/resources/init_sql/00_init-teiv-exposure-model.sql
@@ -29,11 +29,6 @@ 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)
-);
-
CREATE TABLE IF NOT EXISTS ties_model.hash_info (
"name" TEXT PRIMARY KEY,
"hashedValue" VARCHAR(63) NOT NULL,
@@ -53,6 +48,7 @@ CREATE TABLE IF NOT EXISTS ties_model.entity_info (
"storedAt" TEXT PRIMARY KEY,
"name" TEXT NOT NULL,
"moduleReferenceName" TEXT NOT NULL,
+ "attributeNames" jsonb DEFAULT '[]'::jsonb,
FOREIGN KEY ("moduleReferenceName") REFERENCES ties_model.module_reference ("name") ON DELETE CASCADE
);
@@ -79,9 +75,6 @@ CREATE TABLE IF NOT EXISTS ties_model.relationship_info (
FOREIGN KEY ("moduleReferenceName") REFERENCES ties_model.module_reference ("name") ON DELETE CASCADE
);
--- Update model schema exec status
-INSERT INTO ties_model.execution_status("schema", "status") VALUES ('ties_model', 'success');
-
COPY ties_model.hash_info("name", "hashedValue", "type") FROM stdin;
CD_classifiers CD_classifiers COLUMN
CD_decorators CD_decorators COLUMN
@@ -117,6 +110,8 @@ FK_o-ran-smo-teiv-rel-cloud-ran_NFDEPLOYMENT_SERVES_ODUFUNCTION_aSide_NFDeployme
FK_o-ran-smo-teiv-rel-cloud-ran_NFDEPLOYMENT_SERVES_ODUFUNCTION_bSide_ODUFunction FK_C7C12DB840FBCF4EA729B8C2BBCD8BFDE06F0F08 CONSTRAINT
FK_o-ran-smo-teiv-rel-equipment-ran_ANTENNAMODULE_SERVES_ANTENNACAPABILITY_aSide_AntennaModule FK_D80D1E6B26DF620B4DE659C600A3B7F709A41960 CONSTRAINT
FK_o-ran-smo-teiv-rel-equipment-ran_ANTENNAMODULE_SERVES_ANTENNACAPABILITY_bSide_AntennaCapability FK_7148BEED02C0617DE1DEEB6639F34A9FA9251B06 CONSTRAINT
+FK_o-ran-smo-teiv-rel-equipment-ran_ANTENNAMODULE_SERVES_NRCELLDU_aSide_AntennaModule FK_1AB1E0CC29DA2E122D43A6616EC60A3F73E68649 CONSTRAINT
+FK_o-ran-smo-teiv-rel-equipment-ran_ANTENNAMODULE_SERVES_NRCELLDU_bSide_NRCellDU FK_8605800A4923C52258A8CE3989E18A7C93D22E8C CONSTRAINT
IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-cloud_CloudifiedNF_CD_classifiers IDX_BD96130868B69147B2F87B0D15F5829690DEF454 INDEX
IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-cloud_CloudifiedNF_CD_sourceIds IDX_9EDB5C47201FC82A4565BFED9EF369D6C6529B19 INDEX
IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-cloud_NFDEPLOYMENT_DEPLOYED_ON_OCLOUDNAMESPACE_CD_classifiers IDX_1BCFD9635C4FA089EDC2E18FFEF56DBF3C5E7A52 INDEX
@@ -206,6 +201,8 @@ IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-rel-cloud-ran_NFDEPLOYMENT_SERV
IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-rel-cloud-ran_NFDEPLOYMENT_SERVES_ODUFUNCTION_CD_sourceIds IDX_5996D077978D38D0C1A951A262F1F7E1E339F052 INDEX
IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-rel-equipment-ran_ANTENNAMODULE_SERVES_ANTENNACAPABILITY_CD_classifiers IDX_DD0D676834B12CA2F7E8219310998376A08D7F5F INDEX
IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-rel-equipment-ran_ANTENNAMODULE_SERVES_ANTENNACAPABILITY_CD_sourceIds IDX_E896A9EB22A3F9F96CE75A271475316A98B629C8 INDEX
+IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-rel-equipment-ran_ANTENNAMODULE_SERVES_NRCELLDU_CD_classifiers IDX_F93AD0AE5C6940EE73D0B661A2E2E5BB10B3772C INDEX
+IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-rel-equipment-ran_ANTENNAMODULE_SERVES_NRCELLDU_CD_sourceIds IDX_0E1BE8724BEBB21C5AE3986BE150BEC8F8CD903E INDEX
IDX_GIN_o-ran-smo-teiv-cloud_CloudifiedNF_CD_decorators IDX_GIN_o-ran-smo-teiv-cloud_CloudifiedNF_CD_decorators INDEX
IDX_GIN_o-ran-smo-teiv-cloud_NFDEPLOYMENT_DEPLOYED_ON_OCLOUDNAMESPACE_CD_decorators IDX_4055A796F223DD01411AFFB5AD97EEEAB6B2320C INDEX
IDX_GIN_o-ran-smo-teiv-cloud_NFDeployment_CD_decorators IDX_GIN_o-ran-smo-teiv-cloud_NFDeployment_CD_decorators INDEX
@@ -243,6 +240,7 @@ IDX_GIN_o-ran-smo-teiv-ran_OCUUPFunction_CD_decorators IDX_GIN_o-ran-smo-teiv-ra
IDX_GIN_o-ran-smo-teiv-ran_OCUUPFunction_REL_CD_decorators_MANAGEDELEMENT_MANAGES_OCUUPFUNCTION IDX_ADD3393C27589066C4993A3491436C6FB57A539F INDEX
IDX_GIN_o-ran-smo-teiv-ran_ODUFunction_CD_decorators IDX_GIN_o-ran-smo-teiv-ran_ODUFunction_CD_decorators INDEX
IDX_GIN_o-ran-smo-teiv-ran_ODUFunction_REL_CD_decorators_MANAGEDELEMENT_MANAGES_ODUFUNCTION IDX_0B9AC962B1E07740CE43D912B5FBC54E0B39DD24 INDEX
+IDX_GIN_o-ran-smo-teiv-ran_ODUFunction_dUpLMNId IDX_GIN_o-ran-smo-teiv-ran_ODUFunction_dUpLMNId INDEX
IDX_GIN_o-ran-smo-teiv-ran_ORUFunction_CD_decorators IDX_GIN_o-ran-smo-teiv-ran_ORUFunction_CD_decorators INDEX
IDX_GIN_o-ran-smo-teiv-ran_ORUFunction_REL_CD_decorators_MANAGEDELEMENT_MANAGES_ORUFUNCTION IDX_7B916E1753D2860DF434831CF1E9697ED9973C8F INDEX
IDX_GIN_o-ran-smo-teiv-ran_Sector_CD_decorators IDX_GIN_o-ran-smo-teiv-ran_Sector_CD_decorators INDEX
@@ -251,6 +249,7 @@ IDX_GIN_o-ran-smo-teiv-rel-cloud-ran_NFDEPLOYMENT_SERVES_OCUCPFUNCTION_CD_decora
IDX_GIN_o-ran-smo-teiv-rel-cloud-ran_NFDEPLOYMENT_SERVES_OCUUPFUNCTION_CD_decorators IDX_3AB53A0DB6DC4B4C8BB6194D6D487EBDC3D0E88F INDEX
IDX_GIN_o-ran-smo-teiv-rel-cloud-ran_NFDEPLOYMENT_SERVES_ODUFUNCTION_CD_decorators IDX_5BAC6D2F05A63FDE27F082E8C8F4D766C145E835 INDEX
IDX_GIN_o-ran-smo-teiv-rel-equipment-ran_ANTENNAMODULE_SERVES_ANTENNACAPABILITY_CD_decorators IDX_7BF09D0227840279556AD27ACECB068705893D28 INDEX
+IDX_GIN_o-ran-smo-teiv-rel-equipment-ran_ANTENNAMODULE_SERVES_NRCELLDU_CD_decorators IDX_319FDFF6C9E6BC1D922F0A2AFEAAC294E520F753 INDEX
PK_o-ran-smo-teiv-cloud_CloudifiedNF_id PK_o-ran-smo-teiv-cloud_CloudifiedNF_id CONSTRAINT
PK_o-ran-smo-teiv-cloud_NFDEPLOYMENT_DEPLOYED_ON_OCLOUDNAMESPACE_id PK_E4FDDE2DC433209F933C7F53C9F72C1D2EB04BC6 CONSTRAINT
PK_o-ran-smo-teiv-cloud_NFDeployment_id PK_o-ran-smo-teiv-cloud_NFDeployment_id CONSTRAINT
@@ -276,6 +275,7 @@ PK_o-ran-smo-teiv-rel-cloud-ran_NFDEPLOYMENT_SERVES_OCUCPFUNCTION_id PK_2D854968
PK_o-ran-smo-teiv-rel-cloud-ran_NFDEPLOYMENT_SERVES_OCUUPFUNCTION_id PK_E551D02D14B3C04A565DC73A386BEB29627D3C08 CONSTRAINT
PK_o-ran-smo-teiv-rel-cloud-ran_NFDEPLOYMENT_SERVES_ODUFUNCTION_id PK_A10CB552A0F126991DD325EC84DBFAC6F2BBE1A3 CONSTRAINT
PK_o-ran-smo-teiv-rel-equipment-ran_ANTENNAMODULE_SERVES_ANTENNACAPABILITY_id PK_63E61CB6802F21FE7A04A80A095F6AF8ABF067CE CONSTRAINT
+PK_o-ran-smo-teiv-rel-equipment-ran_ANTENNAMODULE_SERVES_NRCELLDU_id PK_F41873285F3BD831F63C6041B4356A063403406D CONSTRAINT
REL_CD_classifiers_ANTENNAMODULE_INSTALLED_AT_SITE REL_CD_classifiers_ANTENNAMODULE_INSTALLED_AT_SITE COLUMN
REL_CD_classifiers_CLOUDIFIEDNF_COMPRISES_NFDEPLOYMENT REL_CD_classifiers_CLOUDIFIEDNF_COMPRISES_NFDEPLOYMENT COLUMN
REL_CD_classifiers_MANAGEDELEMENT_DEPLOYED_AS_CLOUDIFIEDNF REL_CD_classifiers_MANAGEDELEMENT_DEPLOYED_AS_CLOUDIFIEDNF COLUMN
@@ -355,6 +355,23 @@ REL_ID_ODUFUNCTION_PROVIDES_NRCELLDU REL_ID_ODUFUNCTION_PROVIDES_NRCELLDU COLUMN
REL_ID_ODUFUNCTION_PROVIDES_NRSECTORCARRIER REL_ID_ODUFUNCTION_PROVIDES_NRSECTORCARRIER COLUMN
REL_ID_SECTOR_GROUPS_ANTENNAMODULE REL_ID_SECTOR_GROUPS_ANTENNAMODULE COLUMN
REL_ID_SECTOR_GROUPS_NRCELLDU REL_ID_SECTOR_GROUPS_NRCELLDU COLUMN
+REL_metadata_ANTENNAMODULE_INSTALLED_AT_SITE REL_metadata_ANTENNAMODULE_INSTALLED_AT_SITE COLUMN
+REL_metadata_CLOUDIFIEDNF_COMPRISES_NFDEPLOYMENT REL_metadata_CLOUDIFIEDNF_COMPRISES_NFDEPLOYMENT COLUMN
+REL_metadata_MANAGEDELEMENT_DEPLOYED_AS_CLOUDIFIEDNF REL_metadata_MANAGEDELEMENT_DEPLOYED_AS_CLOUDIFIEDNF COLUMN
+REL_metadata_MANAGEDELEMENT_MANAGES_NEARRTRICFUNCTION REL_metadata_MANAGEDELEMENT_MANAGES_NEARRTRICFUNCTION COLUMN
+REL_metadata_MANAGEDELEMENT_MANAGES_OCUCPFUNCTION REL_metadata_MANAGEDELEMENT_MANAGES_OCUCPFUNCTION COLUMN
+REL_metadata_MANAGEDELEMENT_MANAGES_OCUUPFUNCTION REL_metadata_MANAGEDELEMENT_MANAGES_OCUUPFUNCTION COLUMN
+REL_metadata_MANAGEDELEMENT_MANAGES_ODUFUNCTION REL_metadata_MANAGEDELEMENT_MANAGES_ODUFUNCTION COLUMN
+REL_metadata_MANAGEDELEMENT_MANAGES_ORUFUNCTION REL_metadata_MANAGEDELEMENT_MANAGES_ORUFUNCTION COLUMN
+REL_metadata_NFDEPLOYMENT_SERVES_MANAGEDELEMENT REL_metadata_NFDEPLOYMENT_SERVES_MANAGEDELEMENT COLUMN
+REL_metadata_NRCELLDU_USES_NRSECTORCARRIER REL_metadata_NRCELLDU_USES_NRSECTORCARRIER COLUMN
+REL_metadata_NRSECTORCARRIER_USES_ANTENNACAPABILITY REL_metadata_NRSECTORCARRIER_USES_ANTENNACAPABILITY COLUMN
+REL_metadata_OCLOUDNAMESPACE_DEPLOYED_ON_NODECLUSTER REL_metadata_OCLOUDNAMESPACE_DEPLOYED_ON_NODECLUSTER COLUMN
+REL_metadata_OCUCPFUNCTION_PROVIDES_NRCELLCU REL_metadata_OCUCPFUNCTION_PROVIDES_NRCELLCU COLUMN
+REL_metadata_ODUFUNCTION_PROVIDES_NRCELLDU REL_metadata_ODUFUNCTION_PROVIDES_NRCELLDU COLUMN
+REL_metadata_ODUFUNCTION_PROVIDES_NRSECTORCARRIER REL_metadata_ODUFUNCTION_PROVIDES_NRSECTORCARRIER COLUMN
+REL_metadata_SECTOR_GROUPS_ANTENNAMODULE REL_metadata_SECTOR_GROUPS_ANTENNAMODULE COLUMN
+REL_metadata_SECTOR_GROUPS_NRCELLDU REL_metadata_SECTOR_GROUPS_NRCELLDU COLUMN
UNIQUE_o-ran-smo-teiv-cloud_NFDeployment_REL_ID_CLOUDIFIEDNF_COMPRISES_NFDEPLOYMENT UNIQUE_A5A8418B6BE911F281E6E2AA640D7D9F777471DC CONSTRAINT
UNIQUE_o-ran-smo-teiv-cloud_NFDeployment_REL_ID_NFDEPLOYMENT_SERVES_MANAGEDELEMENT UNIQUE_8AD46969905BEEB89F63D3F37FD82B14F34FDCBC CONSTRAINT
UNIQUE_o-ran-smo-teiv-cloud_OCloudNamespace_REL_ID_OCLOUDNAMESPACE_DEPLOYED_ON_NODECLUSTER UNIQUE_C4DE73BD7AA3DBFA2D32E577D4E0A534A7184AB0 CONSTRAINT
@@ -382,6 +399,7 @@ arfcnUL arfcnUL COLUMN
azimuth azimuth COLUMN
bSChannelBwDL bSChannelBwDL COLUMN
bSide_AntennaCapability bSide_AntennaCapability COLUMN
+bSide_NRCellDU bSide_NRCellDU COLUMN
bSide_NearRTRICFunction bSide_NearRTRICFunction COLUMN
bSide_OCUCPFunction bSide_OCUCPFunction COLUMN
bSide_OCUUPFunction bSide_OCUUPFunction COLUMN
@@ -389,6 +407,7 @@ bSide_OCloudNamespace bSide_OCloudNamespace COLUMN
bSide_OCloudSite bSide_OCloudSite COLUMN
bSide_ODUFunction bSide_ODUFunction COLUMN
cellLocalId cellLocalId COLUMN
+dUpLMNId dUpLMNId COLUMN
eUtranFqBands eUtranFqBands COLUMN
electricalAntennaTilt electricalAntennaTilt COLUMN
frequencyDL frequencyDL COLUMN
@@ -399,9 +418,11 @@ gNBId gNBId COLUMN
gNBIdLength gNBIdLength COLUMN
geo-location geo-location COLUMN
geranFqBands geranFqBands COLUMN
+horizontalBeamWidth horizontalBeamWidth COLUMN
id id COLUMN
mechanicalAntennaBearing mechanicalAntennaBearing COLUMN
mechanicalAntennaTilt mechanicalAntennaTilt COLUMN
+metadata metadata COLUMN
nCI nCI COLUMN
nRFqBands nRFqBands COLUMN
nRPCI nRPCI COLUMN
@@ -433,6 +454,7 @@ o-ran-smo-teiv-rel-cloud-ran_NFDEPLOYMENT_SERVES_OCUCPFUNCTION o-ran-smo-teiv-re
o-ran-smo-teiv-rel-cloud-ran_NFDEPLOYMENT_SERVES_OCUUPFUNCTION o-ran-smo-teiv-rel-cloud-ran_NFDEPLOYMENT_SERVES_OCUUPFUNCTION TABLE
o-ran-smo-teiv-rel-cloud-ran_NFDEPLOYMENT_SERVES_ODUFUNCTION o-ran-smo-teiv-rel-cloud-ran_NFDEPLOYMENT_SERVES_ODUFUNCTION TABLE
o-ran-smo-teiv-rel-equipment-ran_ANTENNAMODULE_SERVES_ANTENNACAPABILITY CFC235E0404703D1E4454647DF8AAE2C193DB402 TABLE
+o-ran-smo-teiv-rel-equipment-ran_ANTENNAMODULE_SERVES_NRCELLDU o-ran-smo-teiv-rel-equipment-ran_ANTENNAMODULE_SERVES_NRCELLDU TABLE
oruId oruId COLUMN
pLMNId pLMNId COLUMN
pLMNIdList pLMNIdList COLUMN
@@ -440,6 +462,7 @@ plmnId plmnId COLUMN
positionWithinSector positionWithinSector COLUMN
sectorId sectorId COLUMN
totalTilt totalTilt COLUMN
+verticalBeamWidth verticalBeamWidth COLUMN
\.
COPY ties_model.module_reference("name", "namespace", "domain", "includedModules", "revision", "content") FROM stdin;
@@ -448,42 +471,43 @@ _3gpp-common-yang-types urn:3gpp:sa5:_3gpp-common-yang-types \N [] 2022-07-26 bW
ietf-geo-location urn:ietf:params:xml:ns:yang:ietf-geo-location \N [] 2022-02-11 bW9kdWxlIGlldGYtZ2VvLWxvY2F0aW9uIHsKICB5YW5nLXZlcnNpb24gMS4xOwogIG5hbWVzcGFjZSAidXJuOmlldGY6cGFyYW1zOnhtbDpuczp5YW5nOmlldGYtZ2VvLWxvY2F0aW9uIjsKICBwcmVmaXggZ2VvOwogIGltcG9ydCBpZXRmLXlhbmctdHlwZXMgewogICAgcHJlZml4IHlhbmc7CiAgICByZWZlcmVuY2UgIlJGQyA2OTkxOiBDb21tb24gWUFORyBEYXRhIFR5cGVzIjsKICB9CgogIG9yZ2FuaXphdGlvbgogICAgIklFVEYgTkVUTU9EIFdvcmtpbmcgR3JvdXAgKE5FVE1PRCkiOwogIGNvbnRhY3QKICAgIldHIFdlYjogICA8aHR0cHM6Ly9kYXRhdHJhY2tlci5pZXRmLm9yZy93Zy9uZXRtb2QvPgogICAgV0cgTGlzdDogIDxtYWlsdG86bmV0bW9kQGlldGYub3JnPgoKICAgIEVkaXRvcjogICBDaHJpc3RpYW4gSG9wcHMKICAgICAgICAgICAgICA8bWFpbHRvOmNob3Bwc0BjaG9wcHMub3JnPiI7CgogIGRlc2NyaXB0aW9uCiAgICAiVGhpcyBtb2R1bGUgZGVmaW5lcyBhIGdyb3VwaW5nIG9mIGEgY29udGFpbmVyIG9iamVjdCBmb3IKICAgICBzcGVjaWZ5aW5nIGEgbG9jYXRpb24gb24gb3IgYXJvdW5kIGFuIGFzdHJvbm9taWNhbCBvYmplY3QgKGUuZy4sCiAgICAgJ2VhcnRoJykuCgogICAgIFRoZSBrZXkgd29yZHMgJ01VU1QnLCAnTVVTVCBOT1QnLCAnUkVRVUlSRUQnLCAnU0hBTEwnLCAnU0hBTEwKICAgICBOT1QnLCAnU0hPVUxEJywgJ1NIT1VMRCBOT1QnLCAnUkVDT01NRU5ERUQnLCAnTk9UIFJFQ09NTUVOREVEJywKICAgICAnTUFZJywgYW5kICdPUFRJT05BTCcgaW4gdGhpcyBkb2N1bWVudCBhcmUgdG8gYmUgaW50ZXJwcmV0ZWQgYXMKICAgICBkZXNjcmliZWQgaW4gQkNQIDE0IChSRkMgMjExOSkgKFJGQyA4MTc0KSB3aGVuLCBhbmQgb25seSB3aGVuLAogICAgIHRoZXkgYXBwZWFyIGluIGFsbCBjYXBpdGFscywgYXMgc2hvd24gaGVyZS4KCiAgICAgQ29weXJpZ2h0IChjKSAyMDIyIElFVEYgVHJ1c3QgYW5kIHRoZSBwZXJzb25zIGlkZW50aWZpZWQgYXMKICAgICBhdXRob3JzIG9mIHRoZSBjb2RlLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KCiAgICAgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3JtcywKICAgICB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLCBpcyBwZXJtaXR0ZWQgcHVyc3VhbnQgdG8sCiAgICAgYW5kIHN1YmplY3QgdG8gdGhlIGxpY2Vuc2UgdGVybXMgY29udGFpbmVkIGluLCB0aGUKICAgICBSZXZpc2VkIEJTRCBMaWNlbnNlIHNldCBmb3J0aCBpbiBTZWN0aW9uIDQuYyBvZiB0aGUKICAgICBJRVRGIFRydXN0J3MgTGVnYWwgUHJvdmlzaW9ucyBSZWxhdGluZyB0byBJRVRGIERvY3VtZW50cwogICAgIChodHRwczovL3RydXN0ZWUuaWV0Zi5vcmcvbGljZW5zZS1pbmZvKS4KCiAgICAgVGhpcyB2ZXJzaW9uIG9mIHRoaXMgWUFORyBtb2R1bGUgaXMgcGFydCBvZiBSRkMgOTE3OQogICAgIChodHRwczovL3d3dy5yZmMtZWRpdG9yLm9yZy9pbmZvL3JmYzkxNzkpOyBzZWUgdGhlIFJGQyBpdHNlbGYKICAgICBmb3IgZnVsbCBsZWdhbCBub3RpY2VzLiI7CgogIHJldmlzaW9uIDIwMjItMDItMTEgewogICAgZGVzY3JpcHRpb24KICAgICAgIkluaXRpYWwgUmV2aXNpb24iOwogICAgcmVmZXJlbmNlCiAgICAgICJSRkMgOTE3OTogQSBZQU5HIEdyb3VwaW5nIGZvciBHZW9ncmFwaGljIExvY2F0aW9ucyI7CiAgfQoKICBmZWF0dXJlIGFsdGVybmF0ZS1zeXN0ZW1zIHsKICAgIGRlc2NyaXB0aW9uCiAgICAgICJUaGlzIGZlYXR1cmUgbWVhbnMgdGhlIGRldmljZSBzdXBwb3J0cyBzcGVjaWZ5aW5nIGxvY2F0aW9ucwogICAgICAgdXNpbmcgYWx0ZXJuYXRlIHN5c3RlbXMgZm9yIHJlZmVyZW5jZSBmcmFtZXMuIjsKICB9CgogIGdyb3VwaW5nIGdlby1sb2NhdGlvbiB7CiAgICBkZXNjcmlwdGlvbgogICAgICAiR3JvdXBpbmcgdG8gaWRlbnRpZnkgYSBsb2NhdGlvbiBvbiBhbiBhc3Ryb25vbWljYWwgb2JqZWN0LiI7CgogICAgY29udGFpbmVyIGdlby1sb2NhdGlvbiB7CiAgICAgIGRlc2NyaXB0aW9uCiAgICAgICAgIkEgbG9jYXRpb24gb24gYW4gYXN0cm9ub21pY2FsIGJvZHkgKGUuZy4sICdlYXJ0aCcpCiAgICAgICAgIHNvbWV3aGVyZSBpbiBhIHVuaXZlcnNlLiI7CgogICAgICBjb250YWluZXIgcmVmZXJlbmNlLWZyYW1lIHsKICAgICAgICBkZXNjcmlwdGlvbgogICAgICAgICAgIlRoZSBGcmFtZSBvZiBSZWZlcmVuY2UgZm9yIHRoZSBsb2NhdGlvbiB2YWx1ZXMuIjsKCiAgICAgICAgbGVhZiBhbHRlcm5hdGUtc3lzdGVtIHsKICAgICAgICAgIGlmLWZlYXR1cmUgImFsdGVybmF0ZS1zeXN0ZW1zIjsKICAgICAgICAgIHR5cGUgc3RyaW5nOwogICAgICAgICAgZGVzY3JpcHRpb24KICAgICAgICAgICAgIlRoZSBzeXN0ZW0gaW4gd2hpY2ggdGhlIGFzdHJvbm9taWNhbCBib2R5IGFuZAogICAgICAgICAgICAgZ2VvZGV0aWMtZGF0dW0gaXMgZGVmaW5lZC4gIE5vcm1hbGx5LCB0aGlzIHZhbHVlIGlzIG5vdAogICAgICAgICAgICAgcHJlc2VudCBhbmQgdGhlIHN5c3RlbSBpcyB0aGUgbmF0dXJhbCB1bml2ZXJzZTsgaG93ZXZlciwKICAgICAgICAgICAgIHdoZW4gcHJlc2VudCwgdGhpcyB2YWx1ZSBhbGxvd3MgZm9yIHNwZWNpZnlpbmcgYWx0ZXJuYXRlCiAgICAgICAgICAgICBzeXN0ZW1zIChlLmcuLCB2aXJ0dWFsIHJlYWxpdGllcykuICBBbiBhbHRlcm5hdGUtc3lzdGVtCiAgICAgICAgICAgICBtb2RpZmllcyB0aGUgZGVmaW5pdGlvbiAoYnV0IG5vdCB0aGUgdHlwZSkgb2YgdGhlIG90aGVyCiAgICAgICAgICAgICB2YWx1ZXMgaW4gdGhlIHJlZmVyZW5jZSBmcmFtZS4iOwogICAgICAgIH0KICAgICAgICBsZWFmIGFzdHJvbm9taWNhbC1ib2R5IHsKICAgICAgICAgIHR5cGUgc3RyaW5nIHsKICAgICAgICAgICAgcGF0dGVybiAnWyAtQFxbLVxeXy1+XSonOwogICAgICAgICAgfQogICAgICAgICAgZGVmYXVsdCAiZWFydGgiOwogICAgICAgICAgZGVzY3JpcHRpb24KICAgICAgICAgICAgIkFuIGFzdHJvbm9taWNhbCBib2R5IGFzIG5hbWVkIGJ5IHRoZSBJbnRlcm5hdGlvbmFsCiAgICAgICAgICAgICBBc3Ryb25vbWljYWwgVW5pb24gKElBVSkgb3IgYWNjb3JkaW5nIHRvIHRoZSBhbHRlcm5hdGUKICAgICAgICAgICAgIHN5c3RlbSBpZiBzcGVjaWZpZWQuICBFeGFtcGxlcyBpbmNsdWRlICdzdW4nIChvdXIgc3RhciksCiAgICAgICAgICAgICAnZWFydGgnIChvdXIgcGxhbmV0KSwgJ21vb24nIChvdXIgbW9vbiksICdlbmNlbGFkdXMnIChhCiAgICAgICAgICAgICBtb29uIG9mIFNhdHVybiksICdjZXJlcycgKGFuIGFzdGVyb2lkKSwgYW5kCiAgICAgICAgICAgICAnNjdwL2NodXJ5dW1vdi1nZXJhc2ltZW5rbyAoYSBjb21ldCkuICBUaGUgQVNDSUkgdmFsdWUKICAgICAgICAgICAgIFNIT1VMRCBoYXZlIHVwcGVyY2FzZSBjb252ZXJ0ZWQgdG8gbG93ZXJjYXNlIGFuZCBub3QKICAgICAgICAgICAgIGluY2x1ZGUgY29udHJvbCBjaGFyYWN0ZXJzIChpLmUuLCB2YWx1ZXMgMzIuLjY0LCBhbmQKICAgICAgICAgICAgIDkxLi4xMjYpLiAgQW55IHByZWNlZGluZyAndGhlJyBpbiB0aGUgbmFtZSBTSE9VTEQgTk9UIGJlCiAgICAgICAgICAgICBpbmNsdWRlZC4iOwogICAgICAgICAgcmVmZXJlbmNlCiAgICAgICAgICAgICJodHRwczovL3d3dy5pYXUub3JnLyI7CiAgICAgICAgfQogICAgICAgIGNvbnRhaW5lciBnZW9kZXRpYy1zeXN0ZW0gewogICAgICAgICAgZGVzY3JpcHRpb24KICAgICAgICAgICAgIlRoZSBnZW9kZXRpYyBzeXN0ZW0gb2YgdGhlIGxvY2F0aW9uIGRhdGEuIjsKICAgICAgICAgIGxlYWYgZ2VvZGV0aWMtZGF0dW0gewogICAgICAgICAgICB0eXBlIHN0cmluZyB7CiAgICAgICAgICAgICAgcGF0dGVybiAnWyAtQFxbLVxeXy1+XSonOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGRlc2NyaXB0aW9uCiAgICAgICAgICAgICAgIkEgZ2VvZGV0aWMtZGF0dW0gZGVmaW5pbmcgdGhlIG1lYW5pbmcgb2YgbGF0aXR1ZGUsCiAgICAgICAgICAgICAgIGxvbmdpdHVkZSwgYW5kIGhlaWdodC4gIFRoZSBkZWZhdWx0IHdoZW4gdGhlCiAgICAgICAgICAgICAgIGFzdHJvbm9taWNhbCBib2R5IGlzICdlYXJ0aCcgaXMgJ3dncy04NCcsIHdoaWNoIGlzCiAgICAgICAgICAgICAgIHVzZWQgYnkgdGhlIEdsb2JhbCBQb3NpdGlvbmluZyBTeXN0ZW0gKEdQUykuICBUaGUKICAgICAgICAgICAgICAgQVNDSUkgdmFsdWUgU0hPVUxEIGhhdmUgdXBwZXJjYXNlIGNvbnZlcnRlZCB0bwogICAgICAgICAgICAgICBsb3dlcmNhc2UgYW5kIG5vdCBpbmNsdWRlIGNvbnRyb2wgY2hhcmFjdGVycwogICAgICAgICAgICAgICAoaS5lLiwgdmFsdWVzIDMyLi42NCwgYW5kIDkxLi4xMjYpLiAgVGhlIElBTkEgcmVnaXN0cnkKICAgICAgICAgICAgICAgZnVydGhlciByZXN0cmljdHMgdGhlIHZhbHVlIGJ5IGNvbnZlcnRpbmcgYWxsIHNwYWNlcwogICAgICAgICAgICAgICAoJyAnKSB0byBkYXNoZXMgKCctJykuCiAgICAgICAgICAgICAgIFRoZSBzcGVjaWZpY2F0aW9uIGZvciB0aGUgZ2VvZGV0aWMtZGF0dW0gaW5kaWNhdGVzCiAgICAgICAgICAgICAgIGhvdyBhY2N1cmF0ZWx5IGl0IG1vZGVscyB0aGUgYXN0cm9ub21pY2FsIGJvZHkgaW4KICAgICAgICAgICAgICAgcXVlc3Rpb24sIGJvdGggZm9yIHRoZSAnaG9yaXpvbnRhbCcKICAgICAgICAgICAgICAgbGF0aXR1ZGUvbG9uZ2l0dWRlIGNvb3JkaW5hdGVzIGFuZCBmb3IgaGVpZ2h0CiAgICAgICAgICAgICAgIGNvb3JkaW5hdGVzLiI7CiAgICAgICAgICAgIHJlZmVyZW5jZQogICAgICAgICAgICAgICJSRkMgOTE3OTogQSBZQU5HIEdyb3VwaW5nIGZvciBHZW9ncmFwaGljIExvY2F0aW9ucywKICAgICAgICAgICAgICAgU2VjdGlvbiA2LjEiOwogICAgICAgICAgfQogICAgICAgICAgbGVhZiBjb29yZC1hY2N1cmFjeSB7CiAgICAgICAgICAgIHR5cGUgZGVjaW1hbDY0IHsKICAgICAgICAgICAgICBmcmFjdGlvbi1kaWdpdHMgNjsKICAgICAgICAgICAgfQogICAgICAgICAgICBkZXNjcmlwdGlvbgogICAgICAgICAgICAgICJUaGUgYWNjdXJhY3kgb2YgdGhlIGxhdGl0dWRlL2xvbmdpdHVkZSBwYWlyIGZvcgogICAgICAgICAgICAgICBlbGxpcHNvaWRhbCBjb29yZGluYXRlcywgb3IgdGhlIFgsIFksIGFuZCBaIGNvbXBvbmVudHMKICAgICAgICAgICAgICAgZm9yIENhcnRlc2lhbiBjb29yZGluYXRlcy4gIFdoZW4gY29vcmQtYWNjdXJhY3kgaXMKICAgICAgICAgICAgICAgc3BlY2lmaWVkLCBpdCBpbmRpY2F0ZXMgaG93IHByZWNpc2VseSB0aGUgY29vcmRpbmF0ZXMKICAgICAgICAgICAgICAgaW4gdGhlIGFzc29jaWF0ZWQgbGlzdCBvZiBsb2NhdGlvbnMgaGF2ZSBiZWVuCiAgICAgICAgICAgICAgIGRldGVybWluZWQgd2l0aCByZXNwZWN0IHRvIHRoZSBjb29yZGluYXRlIHN5c3RlbQogICAgICAgICAgICAgICBkZWZpbmVkIGJ5IHRoZSBnZW9kZXRpYy1kYXR1bS4gIEZvciBleGFtcGxlLCB0aGVyZQogICAgICAgICAgICAgICBtaWdodCBiZSB1bmNlcnRhaW50eSBkdWUgdG8gbWVhc3VyZW1lbnQgZXJyb3IgaWYgYW4KICAgICAgICAgICAgICAgZXhwZXJpbWVudGFsIG1lYXN1cmVtZW50IHdhcyBtYWRlIHRvIGRldGVybWluZSBlYWNoCiAgICAgICAgICAgICAgIGxvY2F0aW9uLiI7CiAgICAgICAgICB9CiAgICAgICAgICBsZWFmIGhlaWdodC1hY2N1cmFjeSB7CiAgICAgICAgICAgIHR5cGUgZGVjaW1hbDY0IHsKICAgICAgICAgICAgICBmcmFjdGlvbi1kaWdpdHMgNjsKICAgICAgICAgICAgfQogICAgICAgICAgICB1bml0cyAibWV0ZXJzIjsKICAgICAgICAgICAgZGVzY3JpcHRpb24KICAgICAgICAgICAgICAiVGhlIGFjY3VyYWN5IG9mIHRoZSBoZWlnaHQgdmFsdWUgZm9yIGVsbGlwc29pZGFsCiAgICAgICAgICAgICAgIGNvb3JkaW5hdGVzOyB0aGlzIHZhbHVlIGlzIG5vdCB1c2VkIHdpdGggQ2FydGVzaWFuCiAgICAgICAgICAgICAgIGNvb3JkaW5hdGVzLiAgV2hlbiBoZWlnaHQtYWNjdXJhY3kgaXMgc3BlY2lmaWVkLCBpdAogICAgICAgICAgICAgICBpbmRpY2F0ZXMgaG93IHByZWNpc2VseSB0aGUgaGVpZ2h0cyBpbiB0aGUKICAgICAgICAgICAgICAgYXNzb2NpYXRlZCBsaXN0IG9mIGxvY2F0aW9ucyBoYXZlIGJlZW4gZGV0ZXJtaW5lZAogICAgICAgICAgICAgICB3aXRoIHJlc3BlY3QgdG8gdGhlIGNvb3JkaW5hdGUgc3lzdGVtIGRlZmluZWQgYnkgdGhlCiAgICAgICAgICAgICAgIGdlb2RldGljLWRhdHVtLiAgRm9yIGV4YW1wbGUsIHRoZXJlIG1pZ2h0IGJlCiAgICAgICAgICAgICAgIHVuY2VydGFpbnR5IGR1ZSB0byBtZWFzdXJlbWVudCBlcnJvciBpZiBhbgogICAgICAgICAgICAgICBleHBlcmltZW50YWwgbWVhc3VyZW1lbnQgd2FzIG1hZGUgdG8gZGV0ZXJtaW5lIGVhY2gKICAgICAgICAgICAgICAgbG9jYXRpb24uIjsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0KICAgICAgY2hvaWNlIGxvY2F0aW9uIHsKICAgICAgICBkZXNjcmlwdGlvbgogICAgICAgICAgIlRoZSBsb2NhdGlvbiBkYXRhIGVpdGhlciBpbiBsYXRpdHVkZS9sb25naXR1ZGUgb3IKICAgICAgICAgICBDYXJ0ZXNpYW4gdmFsdWVzIjsKICAgICAgICBjYXNlIGVsbGlwc29pZCB7CiAgICAgICAgICBsZWFmIGxhdGl0dWRlIHsKICAgICAgICAgICAgdHlwZSBkZWNpbWFsNjQgewogICAgICAgICAgICAgIGZyYWN0aW9uLWRpZ2l0cyAxNjsKICAgICAgICAgICAgfQogICAgICAgICAgICB1bml0cyAiZGVjaW1hbCBkZWdyZWVzIjsKICAgICAgICAgICAgZGVzY3JpcHRpb24KICAgICAgICAgICAgICAiVGhlIGxhdGl0dWRlIHZhbHVlIG9uIHRoZSBhc3Ryb25vbWljYWwgYm9keS4gIFRoZQogICAgICAgICAgICAgICBkZWZpbml0aW9uIGFuZCBwcmVjaXNpb24gb2YgdGhpcyBtZWFzdXJlbWVudCBpcwogICAgICAgICAgICAgICBpbmRpY2F0ZWQgYnkgdGhlIHJlZmVyZW5jZS1mcmFtZS4iOwogICAgICAgICAgfQogICAgICAgICAgbGVhZiBsb25naXR1ZGUgewogICAgICAgICAgICB0eXBlIGRlY2ltYWw2NCB7CiAgICAgICAgICAgICAgZnJhY3Rpb24tZGlnaXRzIDE2OwogICAgICAgICAgICB9CiAgICAgICAgICAgIHVuaXRzICJkZWNpbWFsIGRlZ3JlZXMiOwogICAgICAgICAgICBkZXNjcmlwdGlvbgogICAgICAgICAgICAgICJUaGUgbG9uZ2l0dWRlIHZhbHVlIG9uIHRoZSBhc3Ryb25vbWljYWwgYm9keS4gIFRoZQogICAgICAgICAgICAgICBkZWZpbml0aW9uIGFuZCBwcmVjaXNpb24gb2YgdGhpcyBtZWFzdXJlbWVudCBpcwogICAgICAgICAgICAgICBpbmRpY2F0ZWQgYnkgdGhlIHJlZmVyZW5jZS1mcmFtZS4iOwogICAgICAgICAgfQogICAgICAgICAgbGVhZiBoZWlnaHQgewogICAgICAgICAgICB0eXBlIGRlY2ltYWw2NCB7CiAgICAgICAgICAgICAgZnJhY3Rpb24tZGlnaXRzIDY7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdW5pdHMgIm1ldGVycyI7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uCiAgICAgICAgICAgICAgIkhlaWdodCBmcm9tIGEgcmVmZXJlbmNlIDAgdmFsdWUuICBUaGUgcHJlY2lzaW9uIGFuZAogICAgICAgICAgICAgICAnMCcgdmFsdWUgaXMgZGVmaW5lZCBieSB0aGUgcmVmZXJlbmNlLWZyYW1lLiI7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGNhc2UgY2FydGVzaWFuIHsKICAgICAgICAgIGxlYWYgeCB7CiAgICAgICAgICAgIHR5cGUgZGVjaW1hbDY0IHsKICAgICAgICAgICAgICBmcmFjdGlvbi1kaWdpdHMgNjsKICAgICAgICAgICAgfQogICAgICAgICAgICB1bml0cyAibWV0ZXJzIjsKICAgICAgICAgICAgZGVzY3JpcHRpb24KICAgICAgICAgICAgICAiVGhlIFggdmFsdWUgYXMgZGVmaW5lZCBieSB0aGUgcmVmZXJlbmNlLWZyYW1lLiI7CiAgICAgICAgICB9CiAgICAgICAgICBsZWFmIHkgewogICAgICAgICAgICB0eXBlIGRlY2ltYWw2NCB7CiAgICAgICAgICAgICAgZnJhY3Rpb24tZGlnaXRzIDY7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdW5pdHMgIm1ldGVycyI7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uCiAgICAgICAgICAgICAgIlRoZSBZIHZhbHVlIGFzIGRlZmluZWQgYnkgdGhlIHJlZmVyZW5jZS1mcmFtZS4iOwogICAgICAgICAgfQogICAgICAgICAgbGVhZiB6IHsKICAgICAgICAgICAgdHlwZSBkZWNpbWFsNjQgewogICAgICAgICAgICAgIGZyYWN0aW9uLWRpZ2l0cyA2OwogICAgICAgICAgICB9CiAgICAgICAgICAgIHVuaXRzICJtZXRlcnMiOwogICAgICAgICAgICBkZXNjcmlwdGlvbgogICAgICAgICAgICAgICJUaGUgWiB2YWx1ZSBhcyBkZWZpbmVkIGJ5IHRoZSByZWZlcmVuY2UtZnJhbWUuIjsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0KICAgICAgY29udGFpbmVyIHZlbG9jaXR5IHsKICAgICAgICBkZXNjcmlwdGlvbgogICAgICAgICAgIklmIHRoZSBvYmplY3QgaXMgaW4gbW90aW9uLCB0aGUgdmVsb2NpdHkgdmVjdG9yIGRlc2NyaWJlcwogICAgICAgICAgIHRoaXMgbW90aW9uIGF0IHRoZSB0aW1lIGdpdmVuIGJ5IHRoZSB0aW1lc3RhbXAuICBGb3IgYQogICAgICAgICAgIGZvcm11bGEgdG8gY29udmVydCB0aGVzZSB2YWx1ZXMgdG8gc3BlZWQgYW5kIGhlYWRpbmcsIHNlZQogICAgICAgICAgIFJGQyA5MTc5LiI7CiAgICAgICAgcmVmZXJlbmNlCiAgICAgICAgICAiUkZDIDkxNzk6IEEgWUFORyBHcm91cGluZyBmb3IgR2VvZ3JhcGhpYyBMb2NhdGlvbnMiOwoKICAgICAgICBsZWFmIHYtbm9ydGggewogICAgICAgICAgdHlwZSBkZWNpbWFsNjQgewogICAgICAgICAgICBmcmFjdGlvbi1kaWdpdHMgMTI7CiAgICAgICAgICB9CiAgICAgICAgICB1bml0cyAibWV0ZXJzIHBlciBzZWNvbmQiOwogICAgICAgICAgZGVzY3JpcHRpb24KICAgICAgICAgICAgInYtbm9ydGggaXMgdGhlIHJhdGUgb2YgY2hhbmdlIChpLmUuLCBzcGVlZCkgdG93YXJkcwogICAgICAgICAgICAgdHJ1ZSBub3J0aCBhcyBkZWZpbmVkIGJ5IHRoZSBnZW9kZXRpYy1zeXN0ZW0uIjsKICAgICAgICB9CgogICAgICAgIGxlYWYgdi1lYXN0IHsKICAgICAgICAgIHR5cGUgZGVjaW1hbDY0IHsKICAgICAgICAgICAgZnJhY3Rpb24tZGlnaXRzIDEyOwogICAgICAgICAgfQogICAgICAgICAgdW5pdHMgIm1ldGVycyBwZXIgc2Vjb25kIjsKICAgICAgICAgIGRlc2NyaXB0aW9uCiAgICAgICAgICAgICJ2LWVhc3QgaXMgdGhlIHJhdGUgb2YgY2hhbmdlIChpLmUuLCBzcGVlZCkgcGVycGVuZGljdWxhcgogICAgICAgICAgICAgdG8gdGhlIHJpZ2h0IG9mIHRydWUgbm9ydGggYXMgZGVmaW5lZCBieQogICAgICAgICAgICAgdGhlIGdlb2RldGljLXN5c3RlbS4iOwogICAgICAgIH0KCiAgICAgICAgbGVhZiB2LXVwIHsKICAgICAgICAgIHR5cGUgZGVjaW1hbDY0IHsKICAgICAgICAgICAgZnJhY3Rpb24tZGlnaXRzIDEyOwogICAgICAgICAgfQogICAgICAgICAgdW5pdHMgIm1ldGVycyBwZXIgc2Vjb25kIjsKICAgICAgICAgIGRlc2NyaXB0aW9uCiAgICAgICAgICAgICJ2LXVwIGlzIHRoZSByYXRlIG9mIGNoYW5nZSAoaS5lLiwgc3BlZWQpIGF3YXkgZnJvbSB0aGUKICAgICAgICAgICAgIGNlbnRlciBvZiBtYXNzLiI7CiAgICAgICAgfQogICAgICB9CiAgICAgIGxlYWYgdGltZXN0YW1wIHsKICAgICAgICB0eXBlIHlhbmc6ZGF0ZS1hbmQtdGltZTsKICAgICAgICBkZXNjcmlwdGlvbgogICAgICAgICAgIlJlZmVyZW5jZSB0aW1lIHdoZW4gbG9jYXRpb24gd2FzIHJlY29yZGVkLiI7CiAgICAgIH0KICAgICAgbGVhZiB2YWxpZC11bnRpbCB7CiAgICAgICAgdHlwZSB5YW5nOmRhdGUtYW5kLXRpbWU7CiAgICAgICAgZGVzY3JpcHRpb24KICAgICAgICAgICJUaGUgdGltZXN0YW1wIGZvciB3aGljaCB0aGlzIGdlby1sb2NhdGlvbiBpcyB2YWxpZCB1bnRpbC4KICAgICAgICAgICBJZiB1bnNwZWNpZmllZCwgdGhlIGdlby1sb2NhdGlvbiBoYXMgbm8gc3BlY2lmaWMKICAgICAgICAgICBleHBpcmF0aW9uIHRpbWUuIjsKICAgICAgfQogICAgfQogIH0KfQo=
ietf-inet-types urn:ietf:params:xml:ns:yang:ietf-inet-types \N [] 2013-07-15 bW9kdWxlIGlldGYtaW5ldC10eXBlcyB7CgogIG5hbWVzcGFjZSAidXJuOmlldGY6cGFyYW1zOnhtbDpuczp5YW5nOmlldGYtaW5ldC10eXBlcyI7CiAgcHJlZml4ICJpbmV0IjsKCiAgb3JnYW5pemF0aW9uCiAgICJJRVRGIE5FVE1PRCAoTkVUQ09ORiBEYXRhIE1vZGVsaW5nIExhbmd1YWdlKSBXb3JraW5nIEdyb3VwIjsKCiAgY29udGFjdAogICAiV0cgV2ViOiAgIDxodHRwOi8vdG9vbHMuaWV0Zi5vcmcvd2cvbmV0bW9kLz4KICAgIFdHIExpc3Q6ICA8bWFpbHRvOm5ldG1vZEBpZXRmLm9yZz4KCiAgICBXRyBDaGFpcjogRGF2aWQgS2Vzc2VucwogICAgICAgICAgICAgIDxtYWlsdG86ZGF2aWQua2Vzc2Vuc0Buc24uY29tPgoKICAgIFdHIENoYWlyOiBKdWVyZ2VuIFNjaG9lbndhZWxkZXIKICAgICAgICAgICAgICA8bWFpbHRvOmouc2Nob2Vud2FlbGRlckBqYWNvYnMtdW5pdmVyc2l0eS5kZT4KCiAgICBFZGl0b3I6ICAgSnVlcmdlbiBTY2hvZW53YWVsZGVyCiAgICAgICAgICAgICAgPG1haWx0bzpqLnNjaG9lbndhZWxkZXJAamFjb2JzLXVuaXZlcnNpdHkuZGU+IjsKCiAgZGVzY3JpcHRpb24KICAgIlRoaXMgbW9kdWxlIGNvbnRhaW5zIGEgY29sbGVjdGlvbiBvZiBnZW5lcmFsbHkgdXNlZnVsIGRlcml2ZWQKICAgIFlBTkcgZGF0YSB0eXBlcyBmb3IgSW50ZXJuZXQgYWRkcmVzc2VzIGFuZCByZWxhdGVkIHRoaW5ncy4KCiAgICBDb3B5cmlnaHQgKGMpIDIwMTMgSUVURiBUcnVzdCBhbmQgdGhlIHBlcnNvbnMgaWRlbnRpZmllZCBhcwogICAgYXV0aG9ycyBvZiB0aGUgY29kZS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCgogICAgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvcgogICAgd2l0aG91dCBtb2RpZmljYXRpb24sIGlzIHBlcm1pdHRlZCBwdXJzdWFudCB0bywgYW5kIHN1YmplY3QKICAgIHRvIHRoZSBsaWNlbnNlIHRlcm1zIGNvbnRhaW5lZCBpbiwgdGhlIFNpbXBsaWZpZWQgQlNEIExpY2Vuc2UKICAgIHNldCBmb3J0aCBpbiBTZWN0aW9uIDQuYyBvZiB0aGUgSUVURiBUcnVzdCdzIExlZ2FsIFByb3Zpc2lvbnMKICAgIFJlbGF0aW5nIHRvIElFVEYgRG9jdW1lbnRzCiAgICAoaHR0cDovL3RydXN0ZWUuaWV0Zi5vcmcvbGljZW5zZS1pbmZvKS4KCiAgICBUaGlzIHZlcnNpb24gb2YgdGhpcyBZQU5HIG1vZHVsZSBpcyBwYXJ0IG9mIFJGQyA2OTkxOyBzZWUKICAgIHRoZSBSRkMgaXRzZWxmIGZvciBmdWxsIGxlZ2FsIG5vdGljZXMuIjsKCiAgcmV2aXNpb24gMjAxMy0wNy0xNSB7CiAgICBkZXNjcmlwdGlvbgogICAgICJUaGlzIHJldmlzaW9uIGFkZHMgdGhlIGZvbGxvd2luZyBuZXcgZGF0YSB0eXBlczoKICAgICAgLSBpcC1hZGRyZXNzLW5vLXpvbmUKICAgICAgLSBpcHY0LWFkZHJlc3Mtbm8tem9uZQogICAgICAtIGlwdjYtYWRkcmVzcy1uby16b25lIjsKICAgIHJlZmVyZW5jZQogICAgICJSRkMgNjk5MTogQ29tbW9uIFlBTkcgRGF0YSBUeXBlcyI7CiAgfQoKICByZXZpc2lvbiAyMDEwLTA5LTI0IHsKICAgIGRlc2NyaXB0aW9uCiAgICAgIkluaXRpYWwgcmV2aXNpb24uIjsKICAgIHJlZmVyZW5jZQogICAgICJSRkMgNjAyMTogQ29tbW9uIFlBTkcgRGF0YSBUeXBlcyI7CiAgfQoKICAvKioqIGNvbGxlY3Rpb24gb2YgdHlwZXMgcmVsYXRlZCB0byBwcm90b2NvbCBmaWVsZHMgKioqLwoKICB0eXBlZGVmIGlwLXZlcnNpb24gewogICAgdHlwZSBlbnVtZXJhdGlvbiB7CiAgICAgIGVudW0gdW5rbm93biB7CiAgICAgICAgdmFsdWUgIjAiOwogICAgICAgIGRlc2NyaXB0aW9uCiAgICAgICAgICJBbiB1bmtub3duIG9yIHVuc3BlY2lmaWVkIHZlcnNpb24gb2YgdGhlIEludGVybmV0CiAgICAgICAgICBwcm90b2NvbC4iOwogICAgICB9CiAgICAgIGVudW0gaXB2NCB7CiAgICAgICAgdmFsdWUgIjEiOwogICAgICAgIGRlc2NyaXB0aW9uCiAgICAgICAgICJUaGUgSVB2NCBwcm90b2NvbCBhcyBkZWZpbmVkIGluIFJGQyA3OTEuIjsKICAgICAgfQogICAgICBlbnVtIGlwdjYgewogICAgICAgIHZhbHVlICIyIjsKICAgICAgICBkZXNjcmlwdGlvbgogICAgICAgICAiVGhlIElQdjYgcHJvdG9jb2wgYXMgZGVmaW5lZCBpbiBSRkMgMjQ2MC4iOwogICAgICB9CiAgICB9CiAgICBkZXNjcmlwdGlvbgogICAgICJUaGlzIHZhbHVlIHJlcHJlc2VudHMgdGhlIHZlcnNpb24gb2YgdGhlIElQIHByb3RvY29sLgoKICAgICAgSW4gdGhlIHZhbHVlIHNldCBhbmQgaXRzIHNlbWFudGljcywgdGhpcyB0eXBlIGlzIGVxdWl2YWxlbnQKICAgICAgdG8gdGhlIEluZXRWZXJzaW9uIHRleHR1YWwgY29udmVudGlvbiBvZiB0aGUgU01JdjIuIjsKICAgIHJlZmVyZW5jZQogICAgICJSRkMgIDc5MTogSW50ZXJuZXQgUHJvdG9jb2wKICAgICAgUkZDIDI0NjA6IEludGVybmV0IFByb3RvY29sLCBWZXJzaW9uIDYgKElQdjYpIFNwZWNpZmljYXRpb24KICAgICAgUkZDIDQwMDE6IFRleHR1YWwgQ29udmVudGlvbnMgZm9yIEludGVybmV0IE5ldHdvcmsgQWRkcmVzc2VzIjsKICB9CgogIHR5cGVkZWYgZHNjcCB7CiAgICB0eXBlIHVpbnQ4IHsKICAgICAgcmFuZ2UgIjAuLjYzIjsKICAgIH0KICAgIGRlc2NyaXB0aW9uCiAgICAgIlRoZSBkc2NwIHR5cGUgcmVwcmVzZW50cyBhIERpZmZlcmVudGlhdGVkIFNlcnZpY2VzIENvZGUgUG9pbnQKICAgICAgdGhhdCBtYXkgYmUgdXNlZCBmb3IgbWFya2luZyBwYWNrZXRzIGluIGEgdHJhZmZpYyBzdHJlYW0uCiAgICAgIEluIHRoZSB2YWx1ZSBzZXQgYW5kIGl0cyBzZW1hbnRpY3MsIHRoaXMgdHlwZSBpcyBlcXVpdmFsZW50CiAgICAgIHRvIHRoZSBEc2NwIHRleHR1YWwgY29udmVudGlvbiBvZiB0aGUgU01JdjIuIjsKICAgIHJlZmVyZW5jZQogICAgICJSRkMgMzI4OTogTWFuYWdlbWVudCBJbmZvcm1hdGlvbiBCYXNlIGZvciB0aGUgRGlmZmVyZW50aWF0ZWQKICAgICAgICAgICAgICAgIFNlcnZpY2VzIEFyY2hpdGVjdHVyZQogICAgICBSRkMgMjQ3NDogRGVmaW5pdGlvbiBvZiB0aGUgRGlmZmVyZW50aWF0ZWQgU2VydmljZXMgRmllbGQKICAgICAgICAgICAgICAgIChEUyBGaWVsZCkgaW4gdGhlIElQdjQgYW5kIElQdjYgSGVhZGVycwogICAgICBSRkMgMjc4MDogSUFOQSBBbGxvY2F0aW9uIEd1aWRlbGluZXMgRm9yIFZhbHVlcyBJbgogICAgICAgICAgICAgICAgdGhlIEludGVybmV0IFByb3RvY29sIGFuZCBSZWxhdGVkIEhlYWRlcnMiOwogIH0KCiAgdHlwZWRlZiBpcHY2LWZsb3ctbGFiZWwgewogICAgdHlwZSB1aW50MzIgewogICAgICByYW5nZSAiMC4uMTA0ODU3NSI7CiAgICB9CiAgICBkZXNjcmlwdGlvbgogICAgICJUaGUgaXB2Ni1mbG93LWxhYmVsIHR5cGUgcmVwcmVzZW50cyB0aGUgZmxvdyBpZGVudGlmaWVyIG9yIEZsb3cKICAgICAgTGFiZWwgaW4gYW4gSVB2NiBwYWNrZXQgaGVhZGVyIHRoYXQgbWF5IGJlIHVzZWQgdG8KICAgICAgZGlzY3JpbWluYXRlIHRyYWZmaWMgZmxvd3MuCgogICAgICBJbiB0aGUgdmFsdWUgc2V0IGFuZCBpdHMgc2VtYW50aWNzLCB0aGlzIHR5cGUgaXMgZXF1aXZhbGVudAogICAgICB0byB0aGUgSVB2NkZsb3dMYWJlbCB0ZXh0dWFsIGNvbnZlbnRpb24gb2YgdGhlIFNNSXYyLiI7CiAgICByZWZlcmVuY2UKICAgICAiUkZDIDM1OTU6IFRleHR1YWwgQ29udmVudGlvbnMgZm9yIElQdjYgRmxvdyBMYWJlbAogICAgICBSRkMgMjQ2MDogSW50ZXJuZXQgUHJvdG9jb2wsIFZlcnNpb24gNiAoSVB2NikgU3BlY2lmaWNhdGlvbiI7CiAgfQoKICB0eXBlZGVmIHBvcnQtbnVtYmVyIHsKICAgIHR5cGUgdWludDE2IHsKICAgICAgcmFuZ2UgIjAuLjY1NTM1IjsKICAgIH0KICAgIGRlc2NyaXB0aW9uCiAgICAgIlRoZSBwb3J0LW51bWJlciB0eXBlIHJlcHJlc2VudHMgYSAxNi1iaXQgcG9ydCBudW1iZXIgb2YgYW4KICAgICAgSW50ZXJuZXQgdHJhbnNwb3J0LWxheWVyIHByb3RvY29sIHN1Y2ggYXMgVURQLCBUQ1AsIERDQ1AsIG9yCiAgICAgIFNDVFAuICBQb3J0IG51bWJlcnMgYXJlIGFzc2lnbmVkIGJ5IElBTkEuICBBIGN1cnJlbnQgbGlzdCBvZgogICAgICBhbGwgYXNzaWdubWVudHMgaXMgYXZhaWxhYmxlIGZyb20gPGh0dHA6Ly93d3cuaWFuYS5vcmcvPi4KCiAgICAgIE5vdGUgdGhhdCB0aGUgcG9ydCBudW1iZXIgdmFsdWUgemVybyBpcyByZXNlcnZlZCBieSBJQU5BLiAgSW4KICAgICAgc2l0dWF0aW9ucyB3aGVyZSB0aGUgdmFsdWUgemVybyBkb2VzIG5vdCBtYWtlIHNlbnNlLCBpdCBjYW4KICAgICAgYmUgZXhjbHVkZWQgYnkgc3VidHlwaW5nIHRoZSBwb3J0LW51bWJlciB0eXBlLgogICAgICBJbiB0aGUgdmFsdWUgc2V0IGFuZCBpdHMgc2VtYW50aWNzLCB0aGlzIHR5cGUgaXMgZXF1aXZhbGVudAogICAgICB0byB0aGUgSW5ldFBvcnROdW1iZXIgdGV4dHVhbCBjb252ZW50aW9uIG9mIHRoZSBTTUl2Mi4iOwogICAgcmVmZXJlbmNlCiAgICAgIlJGQyAgNzY4OiBVc2VyIERhdGFncmFtIFByb3RvY29sCiAgICAgIFJGQyAgNzkzOiBUcmFuc21pc3Npb24gQ29udHJvbCBQcm90b2NvbAogICAgICBSRkMgNDk2MDogU3RyZWFtIENvbnRyb2wgVHJhbnNtaXNzaW9uIFByb3RvY29sCiAgICAgIFJGQyA0MzQwOiBEYXRhZ3JhbSBDb25nZXN0aW9uIENvbnRyb2wgUHJvdG9jb2wgKERDQ1ApCiAgICAgIFJGQyA0MDAxOiBUZXh0dWFsIENvbnZlbnRpb25zIGZvciBJbnRlcm5ldCBOZXR3b3JrIEFkZHJlc3NlcyI7CiAgfQoKICAvKioqIGNvbGxlY3Rpb24gb2YgdHlwZXMgcmVsYXRlZCB0byBhdXRvbm9tb3VzIHN5c3RlbXMgKioqLwoKICB0eXBlZGVmIGFzLW51bWJlciB7CiAgICB0eXBlIHVpbnQzMjsKICAgIGRlc2NyaXB0aW9uCiAgICAgIlRoZSBhcy1udW1iZXIgdHlwZSByZXByZXNlbnRzIGF1dG9ub21vdXMgc3lzdGVtIG51bWJlcnMKICAgICAgd2hpY2ggaWRlbnRpZnkgYW4gQXV0b25vbW91cyBTeXN0ZW0gKEFTKS4gIEFuIEFTIGlzIGEgc2V0CiAgICAgIG9mIHJvdXRlcnMgdW5kZXIgYSBzaW5nbGUgdGVjaG5pY2FsIGFkbWluaXN0cmF0aW9uLCB1c2luZwogICAgICBhbiBpbnRlcmlvciBnYXRld2F5IHByb3RvY29sIGFuZCBjb21tb24gbWV0cmljcyB0byByb3V0ZQogICAgICBwYWNrZXRzIHdpdGhpbiB0aGUgQVMsIGFuZCB1c2luZyBhbiBleHRlcmlvciBnYXRld2F5CiAgICAgIHByb3RvY29sIHRvIHJvdXRlIHBhY2tldHMgdG8gb3RoZXIgQVNlcy4gIElBTkEgbWFpbnRhaW5zCiAgICAgIHRoZSBBUyBudW1iZXIgc3BhY2UgYW5kIGhhcyBkZWxlZ2F0ZWQgbGFyZ2UgcGFydHMgdG8gdGhlCiAgICAgIHJlZ2lvbmFsIHJlZ2lzdHJpZXMuCgogICAgICBBdXRvbm9tb3VzIHN5c3RlbSBudW1iZXJzIHdlcmUgb3JpZ2luYWxseSBsaW1pdGVkIHRvIDE2CiAgICAgIGJpdHMuICBCR1AgZXh0ZW5zaW9ucyBoYXZlIGVubGFyZ2VkIHRoZSBhdXRvbm9tb3VzIHN5c3RlbQogICAgICBudW1iZXIgc3BhY2UgdG8gMzIgYml0cy4gIFRoaXMgdHlwZSB0aGVyZWZvcmUgdXNlcyBhbiB1aW50MzIKICAgICAgYmFzZSB0eXBlIHdpdGhvdXQgYSByYW5nZSByZXN0cmljdGlvbiBpbiBvcmRlciB0byBzdXBwb3J0CiAgICAgIGEgbGFyZ2VyIGF1dG9ub21vdXMgc3lzdGVtIG51bWJlciBzcGFjZS4KCiAgICAgIEluIHRoZSB2YWx1ZSBzZXQgYW5kIGl0cyBzZW1hbnRpY3MsIHRoaXMgdHlwZSBpcyBlcXVpdmFsZW50CiAgICAgIHRvIHRoZSBJbmV0QXV0b25vbW91c1N5c3RlbU51bWJlciB0ZXh0dWFsIGNvbnZlbnRpb24gb2YKICAgICAgdGhlIFNNSXYyLiI7CiAgICByZWZlcmVuY2UKICAgICAiUkZDIDE5MzA6IEd1aWRlbGluZXMgZm9yIGNyZWF0aW9uLCBzZWxlY3Rpb24sIGFuZCByZWdpc3RyYXRpb24KICAgICAgICAgICAgICAgIG9mIGFuIEF1dG9ub21vdXMgU3lzdGVtIChBUykKICAgICAgUkZDIDQyNzE6IEEgQm9yZGVyIEdhdGV3YXkgUHJvdG9jb2wgNCAoQkdQLTQpCiAgICAgIFJGQyA0MDAxOiBUZXh0dWFsIENvbnZlbnRpb25zIGZvciBJbnRlcm5ldCBOZXR3b3JrIEFkZHJlc3NlcwogICAgICBSRkMgNjc5MzogQkdQIFN1cHBvcnQgZm9yIEZvdXItT2N0ZXQgQXV0b25vbW91cyBTeXN0ZW0gKEFTKQogICAgICAgICAgICAgICAgTnVtYmVyIFNwYWNlIjsKICB9CgogIC8qKiogY29sbGVjdGlvbiBvZiB0eXBlcyByZWxhdGVkIHRvIElQIGFkZHJlc3NlcyBhbmQgaG9zdG5hbWVzICoqKi8KCiAgdHlwZWRlZiBpcC1hZGRyZXNzIHsKICAgIHR5cGUgdW5pb24gewogICAgICB0eXBlIGluZXQ6aXB2NC1hZGRyZXNzOwogICAgICB0eXBlIGluZXQ6aXB2Ni1hZGRyZXNzOwogICAgfQogICAgZGVzY3JpcHRpb24KICAgICAiVGhlIGlwLWFkZHJlc3MgdHlwZSByZXByZXNlbnRzIGFuIElQIGFkZHJlc3MgYW5kIGlzIElQCiAgICAgIHZlcnNpb24gbmV1dHJhbC4gIFRoZSBmb3JtYXQgb2YgdGhlIHRleHR1YWwgcmVwcmVzZW50YXRpb24KICAgICAgaW1wbGllcyB0aGUgSVAgdmVyc2lvbi4gIFRoaXMgdHlwZSBzdXBwb3J0cyBzY29wZWQgYWRkcmVzc2VzCiAgICAgIGJ5IGFsbG93aW5nIHpvbmUgaWRlbnRpZmllcnMgaW4gdGhlIGFkZHJlc3MgZm9ybWF0LiI7CiAgICByZWZlcmVuY2UKICAgICAiUkZDIDQwMDc6IElQdjYgU2NvcGVkIEFkZHJlc3MgQXJjaGl0ZWN0dXJlIjsKICB9CgogIHR5cGVkZWYgaXB2NC1hZGRyZXNzIHsKICAgIHR5cGUgc3RyaW5nIHsKICAgICAgcGF0dGVybgogICAgICAgICcoKFswLTldfFsxLTldWzAtOV18MVswLTldWzAtOV18MlswLTRdWzAtOV18MjVbMC01XSlcLil7M30nCiAgICAgICsgICcoWzAtOV18WzEtOV1bMC05XXwxWzAtOV1bMC05XXwyWzAtNF1bMC05XXwyNVswLTVdKScKICAgICAgKyAnKCVbXHB7Tn1ccHtMfV0rKT8nOwogICAgfQogICAgZGVzY3JpcHRpb24KICAgICAgIlRoZSBpcHY0LWFkZHJlc3MgdHlwZSByZXByZXNlbnRzIGFuIElQdjQgYWRkcmVzcyBpbgogICAgICAgZG90dGVkLXF1YWQgbm90YXRpb24uICBUaGUgSVB2NCBhZGRyZXNzIG1heSBpbmNsdWRlIGEgem9uZQogICAgICAgaW5kZXgsIHNlcGFyYXRlZCBieSBhICUgc2lnbi4KCiAgICAgICBUaGUgem9uZSBpbmRleCBpcyB1c2VkIHRvIGRpc2FtYmlndWF0ZSBpZGVudGljYWwgYWRkcmVzcwogICAgICAgdmFsdWVzLiAgRm9yIGxpbmstbG9jYWwgYWRkcmVzc2VzLCB0aGUgem9uZSBpbmRleCB3aWxsCiAgICAgICB0eXBpY2FsbHkgYmUgdGhlIGludGVyZmFjZSBpbmRleCBudW1iZXIgb3IgdGhlIG5hbWUgb2YgYW4KICAgICAgIGludGVyZmFjZS4gIElmIHRoZSB6b25lIGluZGV4IGlzIG5vdCBwcmVzZW50LCB0aGUgZGVmYXVsdAogICAgICAgem9uZSBvZiB0aGUgZGV2aWNlIHdpbGwgYmUgdXNlZC4KCiAgICAgICBUaGUgY2Fub25pY2FsIGZvcm1hdCBmb3IgdGhlIHpvbmUgaW5kZXggaXMgdGhlIG51bWVyaWNhbAogICAgICAgZm9ybWF0IjsKICB9CgogIHR5cGVkZWYgaXB2Ni1hZGRyZXNzIHsKICAgIHR5cGUgc3RyaW5nIHsKICAgICAgcGF0dGVybiAnKCg6fFswLTlhLWZBLUZdezAsNH0pOikoWzAtOWEtZkEtRl17MCw0fTopezAsNX0nCiAgICAgICAgICAgICsgJygoKFswLTlhLWZBLUZdezAsNH06KT8oOnxbMC05YS1mQS1GXXswLDR9KSl8JwogICAgICAgICAgICArICcoKCgyNVswLTVdfDJbMC00XVswLTldfFswMV0/WzAtOV0/WzAtOV0pXC4pezN9JwogICAgICAgICAgICArICcoMjVbMC01XXwyWzAtNF1bMC05XXxbMDFdP1swLTldP1swLTldKSkpJwogICAgICAgICAgICArICcoJVtccHtOfVxwe0x9XSspPyc7CiAgICAgIHBhdHRlcm4gJygoW146XSs6KXs2fSgoW146XSs6W146XSspfCguKlwuLiopKSl8JwogICAgICAgICAgICArICcoKChbXjpdKzopKlteOl0rKT86OigoW146XSs6KSpbXjpdKyk/KScKICAgICAgICAgICAgKyAnKCUuKyk/JzsKICAgIH0KICAgIGRlc2NyaXB0aW9uCiAgICAgIlRoZSBpcHY2LWFkZHJlc3MgdHlwZSByZXByZXNlbnRzIGFuIElQdjYgYWRkcmVzcyBpbiBmdWxsLAogICAgICBtaXhlZCwgc2hvcnRlbmVkLCBhbmQgc2hvcnRlbmVkLW1peGVkIG5vdGF0aW9uLiAgVGhlIElQdjYKICAgICAgYWRkcmVzcyBtYXkgaW5jbHVkZSBhIHpvbmUgaW5kZXgsIHNlcGFyYXRlZCBieSBhICUgc2lnbi4KCiAgICAgIFRoZSB6b25lIGluZGV4IGlzIHVzZWQgdG8gZGlzYW1iaWd1YXRlIGlkZW50aWNhbCBhZGRyZXNzCiAgICAgIHZhbHVlcy4gIEZvciBsaW5rLWxvY2FsIGFkZHJlc3NlcywgdGhlIHpvbmUgaW5kZXggd2lsbAogICAgICB0eXBpY2FsbHkgYmUgdGhlIGludGVyZmFjZSBpbmRleCBudW1iZXIgb3IgdGhlIG5hbWUgb2YgYW4KICAgICAgaW50ZXJmYWNlLiAgSWYgdGhlIHpvbmUgaW5kZXggaXMgbm90IHByZXNlbnQsIHRoZSBkZWZhdWx0CiAgICAgIHpvbmUgb2YgdGhlIGRldmljZSB3aWxsIGJlIHVzZWQuCgogICAgICBUaGUgY2Fub25pY2FsIGZvcm1hdCBvZiBJUHY2IGFkZHJlc3NlcyB1c2VzIHRoZSB0ZXh0dWFsCiAgICAgIHJlcHJlc2VudGF0aW9uIGRlZmluZWQgaW4gU2VjdGlvbiA0IG9mIFJGQyA1OTUyLiAgVGhlCiAgICAgIGNhbm9uaWNhbCBmb3JtYXQgZm9yIHRoZSB6b25lIGluZGV4IGlzIHRoZSBudW1lcmljYWwKICAgICAgZm9ybWF0IGFzIGRlc2NyaWJlZCBpbiBTZWN0aW9uIDExLjIgb2YgUkZDIDQwMDcuIjsKICAgIHJlZmVyZW5jZQogICAgICJSRkMgNDI5MTogSVAgVmVyc2lvbiA2IEFkZHJlc3NpbmcgQXJjaGl0ZWN0dXJlCiAgICAgIFJGQyA0MDA3OiBJUHY2IFNjb3BlZCBBZGRyZXNzIEFyY2hpdGVjdHVyZQogICAgICBSRkMgNTk1MjogQSBSZWNvbW1lbmRhdGlvbiBmb3IgSVB2NiBBZGRyZXNzIFRleHQKICAgICAgICAgICAgICAgIFJlcHJlc2VudGF0aW9uIjsKICB9CgogIHR5cGVkZWYgaXAtYWRkcmVzcy1uby16b25lIHsKICAgIHR5cGUgdW5pb24gewogICAgICB0eXBlIGluZXQ6aXB2NC1hZGRyZXNzLW5vLXpvbmU7CiAgICAgIHR5cGUgaW5ldDppcHY2LWFkZHJlc3Mtbm8tem9uZTsKICAgIH0KICAgIGRlc2NyaXB0aW9uCiAgICAgIlRoZSBpcC1hZGRyZXNzLW5vLXpvbmUgdHlwZSByZXByZXNlbnRzIGFuIElQIGFkZHJlc3MgYW5kIGlzCiAgICAgIElQIHZlcnNpb24gbmV1dHJhbC4gIFRoZSBmb3JtYXQgb2YgdGhlIHRleHR1YWwgcmVwcmVzZW50YXRpb24KICAgICAgaW1wbGllcyB0aGUgSVAgdmVyc2lvbi4gIFRoaXMgdHlwZSBkb2VzIG5vdCBzdXBwb3J0IHNjb3BlZAogICAgICBhZGRyZXNzZXMgc2luY2UgaXQgZG9lcyBub3QgYWxsb3cgem9uZSBpZGVudGlmaWVycyBpbiB0aGUKICAgICAgYWRkcmVzcyBmb3JtYXQuIjsKICAgIHJlZmVyZW5jZQogICAgICJSRkMgNDAwNzogSVB2NiBTY29wZWQgQWRkcmVzcyBBcmNoaXRlY3R1cmUiOwogIH0KCiAgdHlwZWRlZiBpcHY0LWFkZHJlc3Mtbm8tem9uZSB7CiAgICB0eXBlIGluZXQ6aXB2NC1hZGRyZXNzIHsKICAgICAgcGF0dGVybiAnWzAtOVwuXSonOwogICAgfQogICAgZGVzY3JpcHRpb24KICAgICAgIkFuIElQdjQgYWRkcmVzcyB3aXRob3V0IGEgem9uZSBpbmRleC4gIFRoaXMgdHlwZSwgZGVyaXZlZCBmcm9tCiAgICAgICBpcHY0LWFkZHJlc3MsIG1heSBiZSB1c2VkIGluIHNpdHVhdGlvbnMgd2hlcmUgdGhlIHpvbmUgaXMKICAgICAgIGtub3duIGZyb20gdGhlIGNvbnRleHQgYW5kIGhlbmNlIG5vIHpvbmUgaW5kZXggaXMgbmVlZGVkLiI7CiAgfQoKICB0eXBlZGVmIGlwdjYtYWRkcmVzcy1uby16b25lIHsKICAgIHR5cGUgaW5ldDppcHY2LWFkZHJlc3MgewogICAgICBwYXR0ZXJuICdbMC05YS1mQS1GOlwuXSonOwogICAgfQogICAgZGVzY3JpcHRpb24KICAgICAgIkFuIElQdjYgYWRkcmVzcyB3aXRob3V0IGEgem9uZSBpbmRleC4gIFRoaXMgdHlwZSwgZGVyaXZlZCBmcm9tCiAgICAgICBpcHY2LWFkZHJlc3MsIG1heSBiZSB1c2VkIGluIHNpdHVhdGlvbnMgd2hlcmUgdGhlIHpvbmUgaXMKICAgICAgIGtub3duIGZyb20gdGhlIGNvbnRleHQgYW5kIGhlbmNlIG5vIHpvbmUgaW5kZXggaXMgbmVlZGVkLiI7CiAgICByZWZlcmVuY2UKICAgICAiUkZDIDQyOTE6IElQIFZlcnNpb24gNiBBZGRyZXNzaW5nIEFyY2hpdGVjdHVyZQogICAgICBSRkMgNDAwNzogSVB2NiBTY29wZWQgQWRkcmVzcyBBcmNoaXRlY3R1cmUKICAgICAgUkZDIDU5NTI6IEEgUmVjb21tZW5kYXRpb24gZm9yIElQdjYgQWRkcmVzcyBUZXh0CiAgICAgICAgICAgICAgICBSZXByZXNlbnRhdGlvbiI7CiAgfQoKICB0eXBlZGVmIGlwLXByZWZpeCB7CiAgICB0eXBlIHVuaW9uIHsKICAgICAgdHlwZSBpbmV0OmlwdjQtcHJlZml4OwogICAgICB0eXBlIGluZXQ6aXB2Ni1wcmVmaXg7CiAgICB9CiAgICBkZXNjcmlwdGlvbgogICAgICJUaGUgaXAtcHJlZml4IHR5cGUgcmVwcmVzZW50cyBhbiBJUCBwcmVmaXggYW5kIGlzIElQCiAgICAgIHZlcnNpb24gbmV1dHJhbC4gIFRoZSBmb3JtYXQgb2YgdGhlIHRleHR1YWwgcmVwcmVzZW50YXRpb25zCiAgICAgIGltcGxpZXMgdGhlIElQIHZlcnNpb24uIjsKICB9CgogIHR5cGVkZWYgaXB2NC1wcmVmaXggewogICAgdHlwZSBzdHJpbmcgewogICAgICBwYXR0ZXJuCiAgICAgICAgICcoKFswLTldfFsxLTldWzAtOV18MVswLTldWzAtOV18MlswLTRdWzAtOV18MjVbMC01XSlcLil7M30nCiAgICAgICArICAnKFswLTldfFsxLTldWzAtOV18MVswLTldWzAtOV18MlswLTRdWzAtOV18MjVbMC01XSknCiAgICAgICArICcvKChbMC05XSl8KFsxLTJdWzAtOV0pfCgzWzAtMl0pKSc7CiAgICB9CiAgICBkZXNjcmlwdGlvbgogICAgICJUaGUgaXB2NC1wcmVmaXggdHlwZSByZXByZXNlbnRzIGFuIElQdjQgYWRkcmVzcyBwcmVmaXguCiAgICAgIFRoZSBwcmVmaXggbGVuZ3RoIGlzIGdpdmVuIGJ5IHRoZSBudW1iZXIgZm9sbG93aW5nIHRoZQogICAgICBzbGFzaCBjaGFyYWN0ZXIgYW5kIG11c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIDMyLgoKICAgICAgQSBwcmVmaXggbGVuZ3RoIHZhbHVlIG9mIG4gY29ycmVzcG9uZHMgdG8gYW4gSVAgYWRkcmVzcwogICAgICBtYXNrIHRoYXQgaGFzIG4gY29udGlndW91cyAxLWJpdHMgZnJvbSB0aGUgbW9zdAogICAgICBzaWduaWZpY2FudCBiaXQgKE1TQikgYW5kIGFsbCBvdGhlciBiaXRzIHNldCB0byAwLgoKICAgICAgVGhlIGNhbm9uaWNhbCBmb3JtYXQgb2YgYW4gSVB2NCBwcmVmaXggaGFzIGFsbCBiaXRzIG9mCiAgICAgIHRoZSBJUHY0IGFkZHJlc3Mgc2V0IHRvIHplcm8gdGhhdCBhcmUgbm90IHBhcnQgb2YgdGhlCiAgICAgIElQdjQgcHJlZml4LiI7CiAgfQoKICB0eXBlZGVmIGlwdjYtcHJlZml4IHsKICAgIHR5cGUgc3RyaW5nIHsKICAgICAgcGF0dGVybiAnKCg6fFswLTlhLWZBLUZdezAsNH0pOikoWzAtOWEtZkEtRl17MCw0fTopezAsNX0nCiAgICAgICAgICAgICsgJygoKFswLTlhLWZBLUZdezAsNH06KT8oOnxbMC05YS1mQS1GXXswLDR9KSl8JwogICAgICAgICAgICArICcoKCgyNVswLTVdfDJbMC00XVswLTldfFswMV0/WzAtOV0/WzAtOV0pXC4pezN9JwogICAgICAgICAgICArICcoMjVbMC01XXwyWzAtNF1bMC05XXxbMDFdP1swLTldP1swLTldKSkpJwogICAgICAgICAgICArICcoLygoWzAtOV0pfChbMC05XXsyfSl8KDFbMC0xXVswLTldKXwoMTJbMC04XSkpKSc7CiAgICAgIHBhdHRlcm4gJygoW146XSs6KXs2fSgoW146XSs6W146XSspfCguKlwuLiopKSl8JwogICAgICAgICAgICArICcoKChbXjpdKzopKlteOl0rKT86OigoW146XSs6KSpbXjpdKyk/KScKICAgICAgICAgICAgKyAnKC8uKyknOwogICAgfQoKICAgIGRlc2NyaXB0aW9uCiAgICAgIlRoZSBpcHY2LXByZWZpeCB0eXBlIHJlcHJlc2VudHMgYW4gSVB2NiBhZGRyZXNzIHByZWZpeC4KICAgICAgVGhlIHByZWZpeCBsZW5ndGggaXMgZ2l2ZW4gYnkgdGhlIG51bWJlciBmb2xsb3dpbmcgdGhlCiAgICAgIHNsYXNoIGNoYXJhY3RlciBhbmQgbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gMTI4LgoKICAgICAgQSBwcmVmaXggbGVuZ3RoIHZhbHVlIG9mIG4gY29ycmVzcG9uZHMgdG8gYW4gSVAgYWRkcmVzcwogICAgICBtYXNrIHRoYXQgaGFzIG4gY29udGlndW91cyAxLWJpdHMgZnJvbSB0aGUgbW9zdAogICAgICBzaWduaWZpY2FudCBiaXQgKE1TQikgYW5kIGFsbCBvdGhlciBiaXRzIHNldCB0byAwLgoKICAgICAgVGhlIElQdjYgYWRkcmVzcyBzaG91bGQgaGF2ZSBhbGwgYml0cyB0aGF0IGRvIG5vdCBiZWxvbmcKICAgICAgdG8gdGhlIHByZWZpeCBzZXQgdG8gemVyby4KCiAgICAgIFRoZSBjYW5vbmljYWwgZm9ybWF0IG9mIGFuIElQdjYgcHJlZml4IGhhcyBhbGwgYml0cyBvZgogICAgICB0aGUgSVB2NiBhZGRyZXNzIHNldCB0byB6ZXJvIHRoYXQgYXJlIG5vdCBwYXJ0IG9mIHRoZQogICAgICBJUHY2IHByZWZpeC4gIEZ1cnRoZXJtb3JlLCB0aGUgSVB2NiBhZGRyZXNzIGlzIHJlcHJlc2VudGVkCiAgICAgIGFzIGRlZmluZWQgaW4gU2VjdGlvbiA0IG9mIFJGQyA1OTUyLiI7CiAgICByZWZlcmVuY2UKICAgICAiUkZDIDU5NTI6IEEgUmVjb21tZW5kYXRpb24gZm9yIElQdjYgQWRkcmVzcyBUZXh0CiAgICAgICAgICAgICAgICBSZXByZXNlbnRhdGlvbiI7CiAgfQoKICAvKioqIGNvbGxlY3Rpb24gb2YgZG9tYWluIG5hbWUgYW5kIFVSSSB0eXBlcyAqKiovCgogIHR5cGVkZWYgZG9tYWluLW5hbWUgewogICAgdHlwZSBzdHJpbmcgewogICAgICBwYXR0ZXJuCiAgICAgICAgJygoKFthLXpBLVowLTlfXShbYS16QS1aMC05XC1fXSl7MCw2MX0pP1thLXpBLVowLTldXC4pKicKICAgICAgKyAnKFthLXpBLVowLTlfXShbYS16QS1aMC05XC1fXSl7MCw2MX0pP1thLXpBLVowLTldXC4/KScKICAgICAgKyAnfFwuJzsKICAgICAgbGVuZ3RoICIxLi4yNTMiOwogICAgfQogICAgZGVzY3JpcHRpb24KICAgICAiVGhlIGRvbWFpbi1uYW1lIHR5cGUgcmVwcmVzZW50cyBhIEROUyBkb21haW4gbmFtZS4gIFRoZQogICAgICBuYW1lIFNIT1VMRCBiZSBmdWxseSBxdWFsaWZpZWQgd2hlbmV2ZXIgcG9zc2libGUuCgogICAgICBJbnRlcm5ldCBkb21haW4gbmFtZXMgYXJlIG9ubHkgbG9vc2VseSBzcGVjaWZpZWQuICBTZWN0aW9uCiAgICAgIDMuNSBvZiBSRkMgMTAzNCByZWNvbW1lbmRzIGEgc3ludGF4IChtb2RpZmllZCBpbiBTZWN0aW9uCiAgICAgIDIuMSBvZiBSRkMgMTEyMykuICBUaGUgcGF0dGVybiBhYm92ZSBpcyBpbnRlbmRlZCB0byBhbGxvdwogICAgICBmb3IgY3VycmVudCBwcmFjdGljZSBpbiBkb21haW4gbmFtZSB1c2UsIGFuZCBzb21lIHBvc3NpYmxlCiAgICAgIGZ1dHVyZSBleHBhbnNpb24uICBJdCBpcyBkZXNpZ25lZCB0byBob2xkIHZhcmlvdXMgdHlwZXMgb2YKICAgICAgZG9tYWluIG5hbWVzLCBpbmNsdWRpbmcgbmFtZXMgdXNlZCBmb3IgQSBvciBBQUFBIHJlY29yZHMKICAgICAgKGhvc3QgbmFtZXMpIGFuZCBvdGhlciByZWNvcmRzLCBzdWNoIGFzIFNSViByZWNvcmRzLiAgTm90ZQogICAgICB0aGF0IEludGVybmV0IGhvc3QgbmFtZXMgaGF2ZSBhIHN0cmljdGVyIHN5bnRheCAoZGVzY3JpYmVkCiAgICAgIGluIFJGQyA5NTIpIHRoYW4gdGhlIEROUyByZWNvbW1lbmRhdGlvbnMgaW4gUkZDcyAxMDM0IGFuZAogICAgICAxMTIzLCBhbmQgdGhhdCBzeXN0ZW1zIHRoYXQgd2FudCB0byBzdG9yZSBob3N0IG5hbWVzIGluCiAgICAgIHNjaGVtYSBub2RlcyB1c2luZyB0aGUgZG9tYWluLW5hbWUgdHlwZSBhcmUgcmVjb21tZW5kZWQgdG8KICAgICAgYWRoZXJlIHRvIHRoaXMgc3RyaWN0ZXIgc3RhbmRhcmQgdG8gZW5zdXJlIGludGVyb3BlcmFiaWxpdHkuCgogICAgICBUaGUgZW5jb2Rpbmcgb2YgRE5TIG5hbWVzIGluIHRoZSBETlMgcHJvdG9jb2wgaXMgbGltaXRlZAogICAgICB0byAyNTUgY2hhcmFjdGVycy4gIFNpbmNlIHRoZSBlbmNvZGluZyBjb25zaXN0cyBvZiBsYWJlbHMKICAgICAgcHJlZml4ZWQgYnkgYSBsZW5ndGggYnl0ZXMgYW5kIHRoZXJlIGlzIGEgdHJhaWxpbmcgTlVMTAogICAgICBieXRlLCBvbmx5IDI1MyBjaGFyYWN0ZXJzIGNhbiBhcHBlYXIgaW4gdGhlIHRleHR1YWwgZG90dGVkCiAgICAgIG5vdGF0aW9uLgoKICAgICAgVGhlIGRlc2NyaXB0aW9uIGNsYXVzZSBvZiBzY2hlbWEgbm9kZXMgdXNpbmcgdGhlIGRvbWFpbi1uYW1lCiAgICAgIHR5cGUgTVVTVCBkZXNjcmliZSB3aGVuIGFuZCBob3cgdGhlc2UgbmFtZXMgYXJlIHJlc29sdmVkIHRvCiAgICAgIElQIGFkZHJlc3Nlcy4gIE5vdGUgdGhhdCB0aGUgcmVzb2x1dGlvbiBvZiBhIGRvbWFpbi1uYW1lIHZhbHVlCiAgICAgIG1heSByZXF1aXJlIHRvIHF1ZXJ5IG11bHRpcGxlIEROUyByZWNvcmRzIChlLmcuLCBBIGZvciBJUHY0CiAgICAgIGFuZCBBQUFBIGZvciBJUHY2KS4gIFRoZSBvcmRlciBvZiB0aGUgcmVzb2x1dGlvbiBwcm9jZXNzIGFuZAogICAgICB3aGljaCBETlMgcmVjb3JkIHRha2VzIHByZWNlZGVuY2UgY2FuIGVpdGhlciBiZSBkZWZpbmVkCiAgICAgIGV4cGxpY2l0bHkgb3IgbWF5IGRlcGVuZCBvbiB0aGUgY29uZmlndXJhdGlvbiBvZiB0aGUKICAgICAgcmVzb2x2ZXIuCgogICAgICBEb21haW4tbmFtZSB2YWx1ZXMgdXNlIHRoZSBVUy1BU0NJSSBlbmNvZGluZy4gIFRoZWlyIGNhbm9uaWNhbAogICAgICBmb3JtYXQgdXNlcyBsb3dlcmNhc2UgVVMtQVNDSUkgY2hhcmFjdGVycy4gIEludGVybmF0aW9uYWxpemVkCiAgICAgIGRvbWFpbiBuYW1lcyBNVVNUIGJlIEEtbGFiZWxzIGFzIHBlciBSRkMgNTg5MC4iOwogICAgcmVmZXJlbmNlCiAgICAgIlJGQyAgOTUyOiBEb0QgSW50ZXJuZXQgSG9zdCBUYWJsZSBTcGVjaWZpY2F0aW9uCiAgICAgIFJGQyAxMDM0OiBEb21haW4gTmFtZXMgLSBDb25jZXB0cyBhbmQgRmFjaWxpdGllcwogICAgICBSRkMgMTEyMzogUmVxdWlyZW1lbnRzIGZvciBJbnRlcm5ldCBIb3N0cyAtLSBBcHBsaWNhdGlvbgogICAgICAgICAgICAgICAgYW5kIFN1cHBvcnQKICAgICAgUkZDIDI3ODI6IEEgRE5TIFJSIGZvciBzcGVjaWZ5aW5nIHRoZSBsb2NhdGlvbiBvZiBzZXJ2aWNlcwogICAgICAgICAgICAgICAgKEROUyBTUlYpCiAgICAgIFJGQyA1ODkwOiBJbnRlcm5hdGlvbmFsaXplZCBEb21haW4gTmFtZXMgaW4gQXBwbGljYXRpb25zCiAgICAgICAgICAgICAgICAoSUROQSk6IERlZmluaXRpb25zIGFuZCBEb2N1bWVudCBGcmFtZXdvcmsiOwogIH0KCiAgdHlwZWRlZiBob3N0IHsKICAgIHR5cGUgdW5pb24gewogICAgICB0eXBlIGluZXQ6aXAtYWRkcmVzczsKICAgICAgdHlwZSBpbmV0OmRvbWFpbi1uYW1lOwogICAgfQogICAgZGVzY3JpcHRpb24KICAgICAiVGhlIGhvc3QgdHlwZSByZXByZXNlbnRzIGVpdGhlciBhbiBJUCBhZGRyZXNzIG9yIGEgRE5TCiAgICAgIGRvbWFpbiBuYW1lLiI7CiAgfQoKICB0eXBlZGVmIHVyaSB7CiAgICB0eXBlIHN0cmluZzsKICAgIGRlc2NyaXB0aW9uCiAgICAgIlRoZSB1cmkgdHlwZSByZXByZXNlbnRzIGEgVW5pZm9ybSBSZXNvdXJjZSBJZGVudGlmaWVyCiAgICAgIChVUkkpIGFzIGRlZmluZWQgYnkgU1REIDY2LgoKICAgICAgT2JqZWN0cyB1c2luZyB0aGUgdXJpIHR5cGUgTVVTVCBiZSBpbiBVUy1BU0NJSSBlbmNvZGluZywKICAgICAgYW5kIE1VU1QgYmUgbm9ybWFsaXplZCBhcyBkZXNjcmliZWQgYnkgUkZDIDM5ODYgU2VjdGlvbnMKICAgICAgNi4yLjEsIDYuMi4yLjEsIGFuZCA2LjIuMi4yLiAgQWxsIHVubmVjZXNzYXJ5CiAgICAgIHBlcmNlbnQtZW5jb2RpbmcgaXMgcmVtb3ZlZCwgYW5kIGFsbCBjYXNlLWluc2Vuc2l0aXZlCiAgICAgIGNoYXJhY3RlcnMgYXJlIHNldCB0byBsb3dlcmNhc2UgZXhjZXB0IGZvciBoZXhhZGVjaW1hbAogICAgICBkaWdpdHMsIHdoaWNoIGFyZSBub3JtYWxpemVkIHRvIHVwcGVyY2FzZSBhcyBkZXNjcmliZWQgaW4KICAgICAgU2VjdGlvbiA2LjIuMi4xLgoKICAgICAgVGhlIHB1cnBvc2Ugb2YgdGhpcyBub3JtYWxpemF0aW9uIGlzIHRvIGhlbHAgcHJvdmlkZQogICAgICB1bmlxdWUgVVJJcy4gIE5vdGUgdGhhdCB0aGlzIG5vcm1hbGl6YXRpb24gaXMgbm90CiAgICAgIHN1ZmZpY2llbnQgdG8gcHJvdmlkZSB1bmlxdWVuZXNzLiAgVHdvIFVSSXMgdGhhdCBhcmUKICAgICAgdGV4dHVhbGx5IGRpc3RpbmN0IGFmdGVyIHRoaXMgbm9ybWFsaXphdGlvbiBtYXkgc3RpbGwgYmUKICAgICAgZXF1aXZhbGVudC4KCiAgICAgIE9iamVjdHMgdXNpbmcgdGhlIHVyaSB0eXBlIG1heSByZXN0cmljdCB0aGUgc2NoZW1lcyB0aGF0CiAgICAgIHRoZXkgcGVybWl0LiAgRm9yIGV4YW1wbGUsICdkYXRhOicgYW5kICd1cm46JyBzY2hlbWVzCiAgICAgIG1pZ2h0IG5vdCBiZSBhcHByb3ByaWF0ZS4KCiAgICAgIEEgemVyby1sZW5ndGggVVJJIGlzIG5vdCBhIHZhbGlkIFVSSS4gIFRoaXMgY2FuIGJlIHVzZWQgdG8KICAgICAgZXhwcmVzcyAnVVJJIGFic2VudCcgd2hlcmUgcmVxdWlyZWQuCgogICAgICBJbiB0aGUgdmFsdWUgc2V0IGFuZCBpdHMgc2VtYW50aWNzLCB0aGlzIHR5cGUgaXMgZXF1aXZhbGVudAogICAgICB0byB0aGUgVXJpIFNNSXYyIHRleHR1YWwgY29udmVudGlvbiBkZWZpbmVkIGluIFJGQyA1MDE3LiI7CiAgICByZWZlcmVuY2UKICAgICAiUkZDIDM5ODY6IFVuaWZvcm0gUmVzb3VyY2UgSWRlbnRpZmllciAoVVJJKTogR2VuZXJpYyBTeW50YXgKICAgICAgUkZDIDMzMDU6IFJlcG9ydCBmcm9tIHRoZSBKb2ludCBXM0MvSUVURiBVUkkgUGxhbm5pbmcgSW50ZXJlc3QKICAgICAgICAgICAgICAgIEdyb3VwOiBVbmlmb3JtIFJlc291cmNlIElkZW50aWZpZXJzIChVUklzKSwgVVJMcywKICAgICAgICAgICAgICAgIGFuZCBVbmlmb3JtIFJlc291cmNlIE5hbWVzIChVUk5zKTogQ2xhcmlmaWNhdGlvbnMKICAgICAgICAgICAgICAgIGFuZCBSZWNvbW1lbmRhdGlvbnMKICAgICAgUkZDIDUwMTc6IE1JQiBUZXh0dWFsIENvbnZlbnRpb25zIGZvciBVbmlmb3JtIFJlc291cmNlCiAgICAgICAgICAgICAgICBJZGVudGlmaWVycyAoVVJJcykiOwogIH0KCn0K
ietf-yang-types urn:ietf:params:xml:ns:yang:ietf-yang-types \N [] 2013-07-15 bW9kdWxlIGlldGYteWFuZy10eXBlcyB7CgogIG5hbWVzcGFjZSAidXJuOmlldGY6cGFyYW1zOnhtbDpuczp5YW5nOmlldGYteWFuZy10eXBlcyI7CiAgcHJlZml4ICJ5YW5nIjsKCiAgb3JnYW5pemF0aW9uCiAgICJJRVRGIE5FVE1PRCAoTkVUQ09ORiBEYXRhIE1vZGVsaW5nIExhbmd1YWdlKSBXb3JraW5nIEdyb3VwIjsKCiAgY29udGFjdAogICAiV0cgV2ViOiAgIDxodHRwOi8vdG9vbHMuaWV0Zi5vcmcvd2cvbmV0bW9kLz4KICAgIFdHIExpc3Q6ICA8bWFpbHRvOm5ldG1vZEBpZXRmLm9yZz4KCiAgICBXRyBDaGFpcjogRGF2aWQgS2Vzc2VucwogICAgICAgICAgICAgIDxtYWlsdG86ZGF2aWQua2Vzc2Vuc0Buc24uY29tPgoKICAgIFdHIENoYWlyOiBKdWVyZ2VuIFNjaG9lbndhZWxkZXIKICAgICAgICAgICAgICA8bWFpbHRvOmouc2Nob2Vud2FlbGRlckBqYWNvYnMtdW5pdmVyc2l0eS5kZT4KCiAgICBFZGl0b3I6ICAgSnVlcmdlbiBTY2hvZW53YWVsZGVyCiAgICAgICAgICAgICAgPG1haWx0bzpqLnNjaG9lbndhZWxkZXJAamFjb2JzLXVuaXZlcnNpdHkuZGU+IjsKCiAgZGVzY3JpcHRpb24KICAgIlRoaXMgbW9kdWxlIGNvbnRhaW5zIGEgY29sbGVjdGlvbiBvZiBnZW5lcmFsbHkgdXNlZnVsIGRlcml2ZWQKICAgIFlBTkcgZGF0YSB0eXBlcy4KCiAgICBDb3B5cmlnaHQgKGMpIDIwMTMgSUVURiBUcnVzdCBhbmQgdGhlIHBlcnNvbnMgaWRlbnRpZmllZCBhcwogICAgYXV0aG9ycyBvZiB0aGUgY29kZS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCgogICAgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvcgogICAgd2l0aG91dCBtb2RpZmljYXRpb24sIGlzIHBlcm1pdHRlZCBwdXJzdWFudCB0bywgYW5kIHN1YmplY3QKICAgIHRvIHRoZSBsaWNlbnNlIHRlcm1zIGNvbnRhaW5lZCBpbiwgdGhlIFNpbXBsaWZpZWQgQlNEIExpY2Vuc2UKICAgIHNldCBmb3J0aCBpbiBTZWN0aW9uIDQuYyBvZiB0aGUgSUVURiBUcnVzdCdzIExlZ2FsIFByb3Zpc2lvbnMKICAgIFJlbGF0aW5nIHRvIElFVEYgRG9jdW1lbnRzCiAgICAoaHR0cDovL3RydXN0ZWUuaWV0Zi5vcmcvbGljZW5zZS1pbmZvKS4KCiAgICBUaGlzIHZlcnNpb24gb2YgdGhpcyBZQU5HIG1vZHVsZSBpcyBwYXJ0IG9mIFJGQyA2OTkxOyBzZWUKICAgIHRoZSBSRkMgaXRzZWxmIGZvciBmdWxsIGxlZ2FsIG5vdGljZXMuIjsKCiAgcmV2aXNpb24gMjAxMy0wNy0xNSB7CiAgICBkZXNjcmlwdGlvbgogICAgICJUaGlzIHJldmlzaW9uIGFkZHMgdGhlIGZvbGxvd2luZyBuZXcgZGF0YSB0eXBlczoKICAgICAgLSB5YW5nLWlkZW50aWZpZXIKICAgICAgLSBoZXgtc3RyaW5nCiAgICAgIC0gdXVpZAogICAgICAtIGRvdHRlZC1xdWFkIjsKICAgIHJlZmVyZW5jZQogICAgICJSRkMgNjk5MTogQ29tbW9uIFlBTkcgRGF0YSBUeXBlcyI7CiAgfQoKICByZXZpc2lvbiAyMDEwLTA5LTI0IHsKICAgIGRlc2NyaXB0aW9uCiAgICAgIkluaXRpYWwgcmV2aXNpb24uIjsKICAgIHJlZmVyZW5jZQogICAgICJSRkMgNjAyMTogQ29tbW9uIFlBTkcgRGF0YSBUeXBlcyI7CiAgfQoKICAvKioqIGNvbGxlY3Rpb24gb2YgY291bnRlciBhbmQgZ2F1Z2UgdHlwZXMgKioqLwoKICB0eXBlZGVmIGNvdW50ZXIzMiB7CiAgICB0eXBlIHVpbnQzMjsKICAgIGRlc2NyaXB0aW9uCiAgICAgIlRoZSBjb3VudGVyMzIgdHlwZSByZXByZXNlbnRzIGEgbm9uLW5lZ2F0aXZlIGludGVnZXIKICAgICAgdGhhdCBtb25vdG9uaWNhbGx5IGluY3JlYXNlcyB1bnRpbCBpdCByZWFjaGVzIGEKICAgICAgbWF4aW11bSB2YWx1ZSBvZiAyXjMyLTEgKDQyOTQ5NjcyOTUgZGVjaW1hbCksIHdoZW4gaXQKICAgICAgd3JhcHMgYXJvdW5kIGFuZCBzdGFydHMgaW5jcmVhc2luZyBhZ2FpbiBmcm9tIHplcm8uCgogICAgICBDb3VudGVycyBoYXZlIG5vIGRlZmluZWQgJ2luaXRpYWwnIHZhbHVlLCBhbmQgdGh1cywgYQogICAgICBzaW5nbGUgdmFsdWUgb2YgYSBjb3VudGVyIGhhcyAoaW4gZ2VuZXJhbCkgbm8gaW5mb3JtYXRpb24KICAgICAgY29udGVudC4gIERpc2NvbnRpbnVpdGllcyBpbiB0aGUgbW9ub3RvbmljYWxseSBpbmNyZWFzaW5nCiAgICAgIHZhbHVlIG5vcm1hbGx5IG9jY3VyIGF0IHJlLWluaXRpYWxpemF0aW9uIG9mIHRoZQogICAgICBtYW5hZ2VtZW50IHN5c3RlbSwgYW5kIGF0IG90aGVyIHRpbWVzIGFzIHNwZWNpZmllZCBpbiB0aGUKICAgICAgZGVzY3JpcHRpb24gb2YgYSBzY2hlbWEgbm9kZSB1c2luZyB0aGlzIHR5cGUuICBJZiBzdWNoCiAgICAgIG90aGVyIHRpbWVzIGNhbiBvY2N1ciwgZm9yIGV4YW1wbGUsIHRoZSBjcmVhdGlvbiBvZgogICAgICBhIHNjaGVtYSBub2RlIG9mIHR5cGUgY291bnRlcjMyIGF0IHRpbWVzIG90aGVyIHRoYW4KICAgICAgcmUtaW5pdGlhbGl6YXRpb24sIHRoZW4gYSBjb3JyZXNwb25kaW5nIHNjaGVtYSBub2RlCiAgICAgIHNob3VsZCBiZSBkZWZpbmVkLCB3aXRoIGFuIGFwcHJvcHJpYXRlIHR5cGUsIHRvIGluZGljYXRlCiAgICAgIHRoZSBsYXN0IGRpc2NvbnRpbnVpdHkuCgogICAgICBUaGUgY291bnRlcjMyIHR5cGUgc2hvdWxkIG5vdCBiZSB1c2VkIGZvciBjb25maWd1cmF0aW9uCiAgICAgIHNjaGVtYSBub2Rlcy4gIEEgZGVmYXVsdCBzdGF0ZW1lbnQgU0hPVUxEIE5PVCBiZSB1c2VkIGluCiAgICAgIGNvbWJpbmF0aW9uIHdpdGggdGhlIHR5cGUgY291bnRlcjMyLgoKICAgICAgSW4gdGhlIHZhbHVlIHNldCBhbmQgaXRzIHNlbWFudGljcywgdGhpcyB0eXBlIGlzIGVxdWl2YWxlbnQKICAgICAgdG8gdGhlIENvdW50ZXIzMiB0eXBlIG9mIHRoZSBTTUl2Mi4iOwogICAgcmVmZXJlbmNlCiAgICAgIlJGQyAyNTc4OiBTdHJ1Y3R1cmUgb2YgTWFuYWdlbWVudCBJbmZvcm1hdGlvbiBWZXJzaW9uIDIKICAgICAgICAgICAgICAgIChTTUl2MikiOwogIH0KCiAgdHlwZWRlZiB6ZXJvLWJhc2VkLWNvdW50ZXIzMiB7CiAgICB0eXBlIHlhbmc6Y291bnRlcjMyOwogICAgZGVmYXVsdCAiMCI7CiAgICBkZXNjcmlwdGlvbgogICAgICJUaGUgemVyby1iYXNlZC1jb3VudGVyMzIgdHlwZSByZXByZXNlbnRzIGEgY291bnRlcjMyCiAgICAgIHRoYXQgaGFzIHRoZSBkZWZpbmVkICdpbml0aWFsJyB2YWx1ZSB6ZXJvLgoKICAgICAgQSBzY2hlbWEgbm9kZSBvZiB0aGlzIHR5cGUgd2lsbCBiZSBzZXQgdG8gemVybyAoMCkgb24gY3JlYXRpb24KICAgICAgYW5kIHdpbGwgdGhlcmVhZnRlciBpbmNyZWFzZSBtb25vdG9uaWNhbGx5IHVudGlsIGl0IHJlYWNoZXMKICAgICAgYSBtYXhpbXVtIHZhbHVlIG9mIDJeMzItMSAoNDI5NDk2NzI5NSBkZWNpbWFsKSwgd2hlbiBpdAogICAgICB3cmFwcyBhcm91bmQgYW5kIHN0YXJ0cyBpbmNyZWFzaW5nIGFnYWluIGZyb20gemVyby4KCiAgICAgIFByb3ZpZGVkIHRoYXQgYW4gYXBwbGljYXRpb24gZGlzY292ZXJzIGEgbmV3IHNjaGVtYSBub2RlCiAgICAgIG9mIHRoaXMgdHlwZSB3aXRoaW4gdGhlIG1pbmltdW0gdGltZSB0byB3cmFwLCBpdCBjYW4gdXNlIHRoZQogICAgICAnaW5pdGlhbCcgdmFsdWUgYXMgYSBkZWx0YS4gIEl0IGlzIGltcG9ydGFudCBmb3IgYSBtYW5hZ2VtZW50CiAgICAgIHN0YXRpb24gdG8gYmUgYXdhcmUgb2YgdGhpcyBtaW5pbXVtIHRpbWUgYW5kIHRoZSBhY3R1YWwgdGltZQogICAgICBiZXR3ZWVuIHBvbGxzLCBhbmQgdG8gZGlzY2FyZCBkYXRhIGlmIHRoZSBhY3R1YWwgdGltZSBpcyB0b28KICAgICAgbG9uZyBvciB0aGVyZSBpcyBubyBkZWZpbmVkIG1pbmltdW0gdGltZS4KCiAgICAgIEluIHRoZSB2YWx1ZSBzZXQgYW5kIGl0cyBzZW1hbnRpY3MsIHRoaXMgdHlwZSBpcyBlcXVpdmFsZW50CiAgICAgIHRvIHRoZSBaZXJvQmFzZWRDb3VudGVyMzIgdGV4dHVhbCBjb252ZW50aW9uIG9mIHRoZSBTTUl2Mi4iOwogICAgcmVmZXJlbmNlCiAgICAgICJSRkMgNDUwMjogUmVtb3RlIE5ldHdvcmsgTW9uaXRvcmluZyBNYW5hZ2VtZW50IEluZm9ybWF0aW9uCiAgICAgICAgICAgICAgICAgQmFzZSBWZXJzaW9uIDIiOwogIH0KCiAgdHlwZWRlZiBjb3VudGVyNjQgewogICAgdHlwZSB1aW50NjQ7CiAgICBkZXNjcmlwdGlvbgogICAgICJUaGUgY291bnRlcjY0IHR5cGUgcmVwcmVzZW50cyBhIG5vbi1uZWdhdGl2ZSBpbnRlZ2VyCiAgICAgIHRoYXQgbW9ub3RvbmljYWxseSBpbmNyZWFzZXMgdW50aWwgaXQgcmVhY2hlcyBhCiAgICAgIG1heGltdW0gdmFsdWUgb2YgMl42NC0xICgxODQ0Njc0NDA3MzcwOTU1MTYxNSBkZWNpbWFsKSwKICAgICAgd2hlbiBpdCB3cmFwcyBhcm91bmQgYW5kIHN0YXJ0cyBpbmNyZWFzaW5nIGFnYWluIGZyb20gemVyby4KCiAgICAgIENvdW50ZXJzIGhhdmUgbm8gZGVmaW5lZCAnaW5pdGlhbCcgdmFsdWUsIGFuZCB0aHVzLCBhCiAgICAgIHNpbmdsZSB2YWx1ZSBvZiBhIGNvdW50ZXIgaGFzIChpbiBnZW5lcmFsKSBubyBpbmZvcm1hdGlvbgogICAgICBjb250ZW50LiAgRGlzY29udGludWl0aWVzIGluIHRoZSBtb25vdG9uaWNhbGx5IGluY3JlYXNpbmcKICAgICAgdmFsdWUgbm9ybWFsbHkgb2NjdXIgYXQgcmUtaW5pdGlhbGl6YXRpb24gb2YgdGhlCiAgICAgIG1hbmFnZW1lbnQgc3lzdGVtLCBhbmQgYXQgb3RoZXIgdGltZXMgYXMgc3BlY2lmaWVkIGluIHRoZQogICAgICBkZXNjcmlwdGlvbiBvZiBhIHNjaGVtYSBub2RlIHVzaW5nIHRoaXMgdHlwZS4gIElmIHN1Y2gKICAgICAgb3RoZXIgdGltZXMgY2FuIG9jY3VyLCBmb3IgZXhhbXBsZSwgdGhlIGNyZWF0aW9uIG9mCiAgICAgIGEgc2NoZW1hIG5vZGUgb2YgdHlwZSBjb3VudGVyNjQgYXQgdGltZXMgb3RoZXIgdGhhbgogICAgICByZS1pbml0aWFsaXphdGlvbiwgdGhlbiBhIGNvcnJlc3BvbmRpbmcgc2NoZW1hIG5vZGUKICAgICAgc2hvdWxkIGJlIGRlZmluZWQsIHdpdGggYW4gYXBwcm9wcmlhdGUgdHlwZSwgdG8gaW5kaWNhdGUKICAgICAgdGhlIGxhc3QgZGlzY29udGludWl0eS4KCiAgICAgIFRoZSBjb3VudGVyNjQgdHlwZSBzaG91bGQgbm90IGJlIHVzZWQgZm9yIGNvbmZpZ3VyYXRpb24KICAgICAgc2NoZW1hIG5vZGVzLiAgQSBkZWZhdWx0IHN0YXRlbWVudCBTSE9VTEQgTk9UIGJlIHVzZWQgaW4KICAgICAgY29tYmluYXRpb24gd2l0aCB0aGUgdHlwZSBjb3VudGVyNjQuCgogICAgICBJbiB0aGUgdmFsdWUgc2V0IGFuZCBpdHMgc2VtYW50aWNzLCB0aGlzIHR5cGUgaXMgZXF1aXZhbGVudAogICAgICB0byB0aGUgQ291bnRlcjY0IHR5cGUgb2YgdGhlIFNNSXYyLiI7CiAgICByZWZlcmVuY2UKICAgICAiUkZDIDI1Nzg6IFN0cnVjdHVyZSBvZiBNYW5hZ2VtZW50IEluZm9ybWF0aW9uIFZlcnNpb24gMgogICAgICAgICAgICAgICAgKFNNSXYyKSI7CiAgfQoKICB0eXBlZGVmIHplcm8tYmFzZWQtY291bnRlcjY0IHsKICAgIHR5cGUgeWFuZzpjb3VudGVyNjQ7CiAgICBkZWZhdWx0ICIwIjsKICAgIGRlc2NyaXB0aW9uCiAgICAgIlRoZSB6ZXJvLWJhc2VkLWNvdW50ZXI2NCB0eXBlIHJlcHJlc2VudHMgYSBjb3VudGVyNjQgdGhhdAogICAgICBoYXMgdGhlIGRlZmluZWQgJ2luaXRpYWwnIHZhbHVlIHplcm8uCgogICAgICBBIHNjaGVtYSBub2RlIG9mIHRoaXMgdHlwZSB3aWxsIGJlIHNldCB0byB6ZXJvICgwKSBvbiBjcmVhdGlvbgogICAgICBhbmQgd2lsbCB0aGVyZWFmdGVyIGluY3JlYXNlIG1vbm90b25pY2FsbHkgdW50aWwgaXQgcmVhY2hlcwogICAgICBhIG1heGltdW0gdmFsdWUgb2YgMl42NC0xICgxODQ0Njc0NDA3MzcwOTU1MTYxNSBkZWNpbWFsKSwKICAgICAgd2hlbiBpdCB3cmFwcyBhcm91bmQgYW5kIHN0YXJ0cyBpbmNyZWFzaW5nIGFnYWluIGZyb20gemVyby4KCiAgICAgIFByb3ZpZGVkIHRoYXQgYW4gYXBwbGljYXRpb24gZGlzY292ZXJzIGEgbmV3IHNjaGVtYSBub2RlCiAgICAgIG9mIHRoaXMgdHlwZSB3aXRoaW4gdGhlIG1pbmltdW0gdGltZSB0byB3cmFwLCBpdCBjYW4gdXNlIHRoZQogICAgICAnaW5pdGlhbCcgdmFsdWUgYXMgYSBkZWx0YS4gIEl0IGlzIGltcG9ydGFudCBmb3IgYSBtYW5hZ2VtZW50CiAgICAgIHN0YXRpb24gdG8gYmUgYXdhcmUgb2YgdGhpcyBtaW5pbXVtIHRpbWUgYW5kIHRoZSBhY3R1YWwgdGltZQogICAgICBiZXR3ZWVuIHBvbGxzLCBhbmQgdG8gZGlzY2FyZCBkYXRhIGlmIHRoZSBhY3R1YWwgdGltZSBpcyB0b28KICAgICAgbG9uZyBvciB0aGVyZSBpcyBubyBkZWZpbmVkIG1pbmltdW0gdGltZS4KCiAgICAgIEluIHRoZSB2YWx1ZSBzZXQgYW5kIGl0cyBzZW1hbnRpY3MsIHRoaXMgdHlwZSBpcyBlcXVpdmFsZW50CiAgICAgIHRvIHRoZSBaZXJvQmFzZWRDb3VudGVyNjQgdGV4dHVhbCBjb252ZW50aW9uIG9mIHRoZSBTTUl2Mi4iOwogICAgcmVmZXJlbmNlCiAgICAgIlJGQyAyODU2OiBUZXh0dWFsIENvbnZlbnRpb25zIGZvciBBZGRpdGlvbmFsIEhpZ2ggQ2FwYWNpdHkKICAgICAgICAgICAgICAgIERhdGEgVHlwZXMiOwogIH0KCiAgdHlwZWRlZiBnYXVnZTMyIHsKICAgIHR5cGUgdWludDMyOwogICAgZGVzY3JpcHRpb24KICAgICAiVGhlIGdhdWdlMzIgdHlwZSByZXByZXNlbnRzIGEgbm9uLW5lZ2F0aXZlIGludGVnZXIsIHdoaWNoCiAgICAgIG1heSBpbmNyZWFzZSBvciBkZWNyZWFzZSwgYnV0IHNoYWxsIG5ldmVyIGV4Y2VlZCBhIG1heGltdW0KICAgICAgdmFsdWUsIG5vciBmYWxsIGJlbG93IGEgbWluaW11bSB2YWx1ZS4gIFRoZSBtYXhpbXVtIHZhbHVlCiAgICAgIGNhbm5vdCBiZSBncmVhdGVyIHRoYW4gMl4zMi0xICg0Mjk0OTY3Mjk1IGRlY2ltYWwpLCBhbmQKICAgICAgdGhlIG1pbmltdW0gdmFsdWUgY2Fubm90IGJlIHNtYWxsZXIgdGhhbiAwLiAgVGhlIHZhbHVlIG9mCiAgICAgIGEgZ2F1Z2UzMiBoYXMgaXRzIG1heGltdW0gdmFsdWUgd2hlbmV2ZXIgdGhlIGluZm9ybWF0aW9uCiAgICAgIGJlaW5nIG1vZGVsZWQgaXMgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIGl0cyBtYXhpbXVtCiAgICAgIHZhbHVlLCBhbmQgaGFzIGl0cyBtaW5pbXVtIHZhbHVlIHdoZW5ldmVyIHRoZSBpbmZvcm1hdGlvbgogICAgICBiZWluZyBtb2RlbGVkIGlzIHNtYWxsZXIgdGhhbiBvciBlcXVhbCB0byBpdHMgbWluaW11bSB2YWx1ZS4KICAgICAgSWYgdGhlIGluZm9ybWF0aW9uIGJlaW5nIG1vZGVsZWQgc3Vic2VxdWVudGx5IGRlY3JlYXNlcwogICAgICBiZWxvdyAoaW5jcmVhc2VzIGFib3ZlKSB0aGUgbWF4aW11bSAobWluaW11bSkgdmFsdWUsIHRoZQogICAgICBnYXVnZTMyIGFsc28gZGVjcmVhc2VzIChpbmNyZWFzZXMpLgoKICAgICAgSW4gdGhlIHZhbHVlIHNldCBhbmQgaXRzIHNlbWFudGljcywgdGhpcyB0eXBlIGlzIGVxdWl2YWxlbnQKICAgICAgdG8gdGhlIEdhdWdlMzIgdHlwZSBvZiB0aGUgU01JdjIuIjsKICAgIHJlZmVyZW5jZQogICAgICJSRkMgMjU3ODogU3RydWN0dXJlIG9mIE1hbmFnZW1lbnQgSW5mb3JtYXRpb24gVmVyc2lvbiAyCiAgICAgICAgICAgICAgICAoU01JdjIpIjsKICB9CgogIHR5cGVkZWYgZ2F1Z2U2NCB7CiAgICB0eXBlIHVpbnQ2NDsKICAgIGRlc2NyaXB0aW9uCiAgICAgIlRoZSBnYXVnZTY0IHR5cGUgcmVwcmVzZW50cyBhIG5vbi1uZWdhdGl2ZSBpbnRlZ2VyLCB3aGljaAogICAgICBtYXkgaW5jcmVhc2Ugb3IgZGVjcmVhc2UsIGJ1dCBzaGFsbCBuZXZlciBleGNlZWQgYSBtYXhpbXVtCiAgICAgIHZhbHVlLCBub3IgZmFsbCBiZWxvdyBhIG1pbmltdW0gdmFsdWUuICBUaGUgbWF4aW11bSB2YWx1ZQogICAgICBjYW5ub3QgYmUgZ3JlYXRlciB0aGFuIDJeNjQtMSAoMTg0NDY3NDQwNzM3MDk1NTE2MTUpLCBhbmQKICAgICAgdGhlIG1pbmltdW0gdmFsdWUgY2Fubm90IGJlIHNtYWxsZXIgdGhhbiAwLiAgVGhlIHZhbHVlIG9mCiAgICAgIGEgZ2F1Z2U2NCBoYXMgaXRzIG1heGltdW0gdmFsdWUgd2hlbmV2ZXIgdGhlIGluZm9ybWF0aW9uCiAgICAgIGJlaW5nIG1vZGVsZWQgaXMgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIGl0cyBtYXhpbXVtCiAgICAgIHZhbHVlLCBhbmQgaGFzIGl0cyBtaW5pbXVtIHZhbHVlIHdoZW5ldmVyIHRoZSBpbmZvcm1hdGlvbgogICAgICBiZWluZyBtb2RlbGVkIGlzIHNtYWxsZXIgdGhhbiBvciBlcXVhbCB0byBpdHMgbWluaW11bSB2YWx1ZS4KICAgICAgSWYgdGhlIGluZm9ybWF0aW9uIGJlaW5nIG1vZGVsZWQgc3Vic2VxdWVudGx5IGRlY3JlYXNlcwogICAgICBiZWxvdyAoaW5jcmVhc2VzIGFib3ZlKSB0aGUgbWF4aW11bSAobWluaW11bSkgdmFsdWUsIHRoZQogICAgICBnYXVnZTY0IGFsc28gZGVjcmVhc2VzIChpbmNyZWFzZXMpLgoKICAgICAgSW4gdGhlIHZhbHVlIHNldCBhbmQgaXRzIHNlbWFudGljcywgdGhpcyB0eXBlIGlzIGVxdWl2YWxlbnQKICAgICAgdG8gdGhlIENvdW50ZXJCYXNlZEdhdWdlNjQgU01JdjIgdGV4dHVhbCBjb252ZW50aW9uIGRlZmluZWQKICAgICAgaW4gUkZDIDI4NTYiOwogICAgcmVmZXJlbmNlCiAgICAgIlJGQyAyODU2OiBUZXh0dWFsIENvbnZlbnRpb25zIGZvciBBZGRpdGlvbmFsIEhpZ2ggQ2FwYWNpdHkKICAgICAgICAgICAgICAgIERhdGEgVHlwZXMiOwogIH0KCiAgLyoqKiBjb2xsZWN0aW9uIG9mIGlkZW50aWZpZXItcmVsYXRlZCB0eXBlcyAqKiovCgogIHR5cGVkZWYgb2JqZWN0LWlkZW50aWZpZXIgewogICAgdHlwZSBzdHJpbmcgewogICAgICBwYXR0ZXJuICcoKFswLTFdKFwuWzEtM10/WzAtOV0pKXwoMlwuKDB8KFsxLTldXGQqKSkpKScKICAgICAgICAgICAgKyAnKFwuKDB8KFsxLTldXGQqKSkpKic7CiAgICB9CiAgICBkZXNjcmlwdGlvbgogICAgICJUaGUgb2JqZWN0LWlkZW50aWZpZXIgdHlwZSByZXByZXNlbnRzIGFkbWluaXN0cmF0aXZlbHkKICAgICAgYXNzaWduZWQgbmFtZXMgaW4gYSByZWdpc3RyYXRpb24taGllcmFyY2hpY2FsLW5hbWUgdHJlZS4KCiAgICAgIFZhbHVlcyBvZiB0aGlzIHR5cGUgYXJlIGRlbm90ZWQgYXMgYSBzZXF1ZW5jZSBvZiBudW1lcmljYWwKICAgICAgbm9uLW5lZ2F0aXZlIHN1Yi1pZGVudGlmaWVyIHZhbHVlcy4gIEVhY2ggc3ViLWlkZW50aWZpZXIKICAgICAgdmFsdWUgTVVTVCBOT1QgZXhjZWVkIDJeMzItMSAoNDI5NDk2NzI5NSkuICBTdWItaWRlbnRpZmllcnMKICAgICAgYXJlIHNlcGFyYXRlZCBieSBzaW5nbGUgZG90cyBhbmQgd2l0aG91dCBhbnkgaW50ZXJtZWRpYXRlCiAgICAgIHdoaXRlc3BhY2UuCgogICAgICBUaGUgQVNOLjEgc3RhbmRhcmQgcmVzdHJpY3RzIHRoZSB2YWx1ZSBzcGFjZSBvZiB0aGUgZmlyc3QKICAgICAgc3ViLWlkZW50aWZpZXIgdG8gMCwgMSwgb3IgMi4gIEZ1cnRoZXJtb3JlLCB0aGUgdmFsdWUgc3BhY2UKICAgICAgb2YgdGhlIHNlY29uZCBzdWItaWRlbnRpZmllciBpcyByZXN0cmljdGVkIHRvIHRoZSByYW5nZQogICAgICAwIHRvIDM5IGlmIHRoZSBmaXJzdCBzdWItaWRlbnRpZmllciBpcyAwIG9yIDEuICBGaW5hbGx5LAogICAgICB0aGUgQVNOLjEgc3RhbmRhcmQgcmVxdWlyZXMgdGhhdCBhbiBvYmplY3QgaWRlbnRpZmllcgogICAgICBoYXMgYWx3YXlzIGF0IGxlYXN0IHR3byBzdWItaWRlbnRpZmllcnMuICBUaGUgcGF0dGVybgogICAgICBjYXB0dXJlcyB0aGVzZSByZXN0cmljdGlvbnMuCgogICAgICBBbHRob3VnaCB0aGUgbnVtYmVyIG9mIHN1Yi1pZGVudGlmaWVycyBpcyBub3QgbGltaXRlZCwKICAgICAgbW9kdWxlIGRlc2lnbmVycyBzaG91bGQgcmVhbGl6ZSB0aGF0IHRoZXJlIG1heSBiZQogICAgICBpbXBsZW1lbnRhdGlvbnMgdGhhdCBzdGljayB3aXRoIHRoZSBTTUl2MiBsaW1pdCBvZiAxMjgKICAgICAgc3ViLWlkZW50aWZpZXJzLgoKICAgICAgVGhpcyB0eXBlIGlzIGEgc3VwZXJzZXQgb2YgdGhlIFNNSXYyIE9CSkVDVCBJREVOVElGSUVSIHR5cGUKICAgICAgc2luY2UgaXQgaXMgbm90IHJlc3RyaWN0ZWQgdG8gMTI4IHN1Yi1pZGVudGlmaWVycy4gIEhlbmNlLAogICAgICB0aGlzIHR5cGUgU0hPVUxEIE5PVCBiZSB1c2VkIHRvIHJlcHJlc2VudCB0aGUgU01JdjIgT0JKRUNUCiAgICAgIElERU5USUZJRVIgdHlwZTsgdGhlIG9iamVjdC1pZGVudGlmaWVyLTEyOCB0eXBlIFNIT1VMRCBiZQogICAgICB1c2VkIGluc3RlYWQuIjsKICAgIHJlZmVyZW5jZQogICAgICJJU085ODM0LTE6IEluZm9ybWF0aW9uIHRlY2hub2xvZ3kgLS0gT3BlbiBTeXN0ZW1zCiAgICAgIEludGVyY29ubmVjdGlvbiAtLSBQcm9jZWR1cmVzIGZvciB0aGUgb3BlcmF0aW9uIG9mIE9TSQogICAgICBSZWdpc3RyYXRpb24gQXV0aG9yaXRpZXM6IEdlbmVyYWwgcHJvY2VkdXJlcyBhbmQgdG9wCiAgICAgIGFyY3Mgb2YgdGhlIEFTTi4xIE9iamVjdCBJZGVudGlmaWVyIHRyZWUiOwogIH0KCiAgdHlwZWRlZiBvYmplY3QtaWRlbnRpZmllci0xMjggewogICAgdHlwZSBvYmplY3QtaWRlbnRpZmllciB7CiAgICAgIHBhdHRlcm4gJ1xkKihcLlxkKil7MSwxMjd9JzsKICAgIH0KICAgIGRlc2NyaXB0aW9uCiAgICAgIlRoaXMgdHlwZSByZXByZXNlbnRzIG9iamVjdC1pZGVudGlmaWVycyByZXN0cmljdGVkIHRvIDEyOAogICAgICBzdWItaWRlbnRpZmllcnMuCgogICAgICBJbiB0aGUgdmFsdWUgc2V0IGFuZCBpdHMgc2VtYW50aWNzLCB0aGlzIHR5cGUgaXMgZXF1aXZhbGVudAogICAgICB0byB0aGUgT0JKRUNUIElERU5USUZJRVIgdHlwZSBvZiB0aGUgU01JdjIuIjsKICAgIHJlZmVyZW5jZQogICAgICJSRkMgMjU3ODogU3RydWN0dXJlIG9mIE1hbmFnZW1lbnQgSW5mb3JtYXRpb24gVmVyc2lvbiAyCiAgICAgICAgICAgICAgICAoU01JdjIpIjsKICB9CgogIHR5cGVkZWYgeWFuZy1pZGVudGlmaWVyIHsKICAgIHR5cGUgc3RyaW5nIHsKICAgICAgbGVuZ3RoICIxLi5tYXgiOwogICAgICBwYXR0ZXJuICdbYS16QS1aX11bYS16QS1aMC05XC1fLl0qJzsKICAgICAgcGF0dGVybiAnLnwuLnxbXnhYXS4qfC5bXm1NXS4qfC4uW15sTF0uKic7CiAgICB9CiAgICBkZXNjcmlwdGlvbgogICAgICAiQSBZQU5HIGlkZW50aWZpZXIgc3RyaW5nIGFzIGRlZmluZWQgYnkgdGhlICdpZGVudGlmaWVyJwogICAgICAgcnVsZSBpbiBTZWN0aW9uIDEyIG9mIFJGQyA2MDIwLiAgQW4gaWRlbnRpZmllciBtdXN0CiAgICAgICBzdGFydCB3aXRoIGFuIGFscGhhYmV0aWMgY2hhcmFjdGVyIG9yIGFuIHVuZGVyc2NvcmUKICAgICAgIGZvbGxvd2VkIGJ5IGFuIGFyYml0cmFyeSBzZXF1ZW5jZSBvZiBhbHBoYWJldGljIG9yCiAgICAgICBudW1lcmljIGNoYXJhY3RlcnMsIHVuZGVyc2NvcmVzLCBoeXBoZW5zLCBvciBkb3RzLgoKICAgICAgIEEgWUFORyBpZGVudGlmaWVyIE1VU1QgTk9UIHN0YXJ0IHdpdGggYW55IHBvc3NpYmxlCiAgICAgICBjb21iaW5hdGlvbiBvZiB0aGUgbG93ZXJjYXNlIG9yIHVwcGVyY2FzZSBjaGFyYWN0ZXIKICAgICAgIHNlcXVlbmNlICd4bWwnLiI7CiAgICByZWZlcmVuY2UKICAgICAgIlJGQyA2MDIwOiBZQU5HIC0gQSBEYXRhIE1vZGVsaW5nIExhbmd1YWdlIGZvciB0aGUgTmV0d29yawogICAgICAgICAgICAgICAgIENvbmZpZ3VyYXRpb24gUHJvdG9jb2wgKE5FVENPTkYpIjsKICB9CgogIC8qKiogY29sbGVjdGlvbiBvZiB0eXBlcyByZWxhdGVkIHRvIGRhdGUgYW5kIHRpbWUqKiovCgogIHR5cGVkZWYgZGF0ZS1hbmQtdGltZSB7CiAgICB0eXBlIHN0cmluZyB7CiAgICAgIHBhdHRlcm4gJ1xkezR9LVxkezJ9LVxkezJ9VFxkezJ9OlxkezJ9OlxkezJ9KFwuXGQrKT8nCiAgICAgICAgICAgICsgJyhafFtcK1wtXVxkezJ9OlxkezJ9KSc7CiAgICB9CiAgICBkZXNjcmlwdGlvbgogICAgICJUaGUgZGF0ZS1hbmQtdGltZSB0eXBlIGlzIGEgcHJvZmlsZSBvZiB0aGUgSVNPIDg2MDEKICAgICAgc3RhbmRhcmQgZm9yIHJlcHJlc2VudGF0aW9uIG9mIGRhdGVzIGFuZCB0aW1lcyB1c2luZyB0aGUKICAgICAgR3JlZ29yaWFuIGNhbGVuZGFyLiAgVGhlIHByb2ZpbGUgaXMgZGVmaW5lZCBieSB0aGUKICAgICAgZGF0ZS10aW1lIHByb2R1Y3Rpb24gaW4gU2VjdGlvbiA1LjYgb2YgUkZDIDMzMzkuCgogICAgICBUaGUgZGF0ZS1hbmQtdGltZSB0eXBlIGlzIGNvbXBhdGlibGUgd2l0aCB0aGUgZGF0ZVRpbWUgWE1MCiAgICAgIHNjaGVtYSB0eXBlIHdpdGggdGhlIGZvbGxvd2luZyBub3RhYmxlIGV4Y2VwdGlvbnM6CgogICAgICAoYSkgVGhlIGRhdGUtYW5kLXRpbWUgdHlwZSBkb2VzIG5vdCBhbGxvdyBuZWdhdGl2ZSB5ZWFycy4KCiAgICAgIChiKSBUaGUgZGF0ZS1hbmQtdGltZSB0aW1lLW9mZnNldCAtMDA6MDAgaW5kaWNhdGVzIGFuIHVua25vd24KICAgICAgICAgIHRpbWUgem9uZSAoc2VlIFJGQyAzMzM5KSB3aGlsZSAtMDA6MDAgYW5kICswMDowMCBhbmQgWgogICAgICAgICAgYWxsIHJlcHJlc2VudCB0aGUgc2FtZSB0aW1lIHpvbmUgaW4gZGF0ZVRpbWUuCgogICAgICAoYykgVGhlIGNhbm9uaWNhbCBmb3JtYXQgKHNlZSBiZWxvdykgb2YgZGF0YS1hbmQtdGltZSB2YWx1ZXMKICAgICAgICAgIGRpZmZlcnMgZnJvbSB0aGUgY2Fub25pY2FsIGZvcm1hdCB1c2VkIGJ5IHRoZSBkYXRlVGltZSBYTUwKICAgICAgICAgIHNjaGVtYSB0eXBlLCB3aGljaCByZXF1aXJlcyBhbGwgdGltZXMgdG8gYmUgaW4gVVRDIHVzaW5nCiAgICAgICAgICB0aGUgdGltZS1vZmZzZXQgJ1onLgoKICAgICAgVGhpcyB0eXBlIGlzIG5vdCBlcXVpdmFsZW50IHRvIHRoZSBEYXRlQW5kVGltZSB0ZXh0dWFsCiAgICAgIGNvbnZlbnRpb24gb2YgdGhlIFNNSXYyIHNpbmNlIFJGQyAzMzM5IHVzZXMgYSBkaWZmZXJlbnQKICAgICAgc2VwYXJhdG9yIGJldHdlZW4gZnVsbC1kYXRlIGFuZCBmdWxsLXRpbWUgYW5kIHByb3ZpZGVzCiAgICAgIGhpZ2hlciByZXNvbHV0aW9uIG9mIHRpbWUtc2VjZnJhYy4KCiAgICAgIFRoZSBjYW5vbmljYWwgZm9ybWF0IGZvciBkYXRlLWFuZC10aW1lIHZhbHVlcyB3aXRoIGEga25vd24gdGltZQogICAgICB6b25lIHVzZXMgYSBudW1lcmljIHRpbWUgem9uZSBvZmZzZXQgdGhhdCBpcyBjYWxjdWxhdGVkIHVzaW5nCiAgICAgIHRoZSBkZXZpY2UncyBjb25maWd1cmVkIGtub3duIG9mZnNldCB0byBVVEMgdGltZS4gIEEgY2hhbmdlIG9mCiAgICAgIHRoZSBkZXZpY2UncyBvZmZzZXQgdG8gVVRDIHRpbWUgd2lsbCBjYXVzZSBkYXRlLWFuZC10aW1lIHZhbHVlcwogICAgICB0byBjaGFuZ2UgYWNjb3JkaW5nbHkuICBTdWNoIGNoYW5nZXMgbWlnaHQgaGFwcGVuIHBlcmlvZGljYWxseQogICAgICBpbiBjYXNlIGEgc2VydmVyIGZvbGxvd3MgYXV0b21hdGljYWxseSBkYXlsaWdodCBzYXZpbmcgdGltZQogICAgICAoRFNUKSB0aW1lIHpvbmUgb2Zmc2V0IGNoYW5nZXMuICBUaGUgY2Fub25pY2FsIGZvcm1hdCBmb3IKICAgICAgZGF0ZS1hbmQtdGltZSB2YWx1ZXMgd2l0aCBhbiB1bmtub3duIHRpbWUgem9uZSAodXN1YWxseQogICAgICByZWZlcnJpbmcgdG8gdGhlIG5vdGlvbiBvZiBsb2NhbCB0aW1lKSB1c2VzIHRoZSB0aW1lLW9mZnNldAogICAgICAtMDA6MDAuIjsKICAgIHJlZmVyZW5jZQogICAgICJSRkMgMzMzOTogRGF0ZSBhbmQgVGltZSBvbiB0aGUgSW50ZXJuZXQ6IFRpbWVzdGFtcHMKICAgICAgUkZDIDI1Nzk6IFRleHR1YWwgQ29udmVudGlvbnMgZm9yIFNNSXYyCiAgICAgIFhTRC1UWVBFUzogWE1MIFNjaGVtYSBQYXJ0IDI6IERhdGF0eXBlcyBTZWNvbmQgRWRpdGlvbiI7CiAgfQoKICB0eXBlZGVmIHRpbWV0aWNrcyB7CiAgICB0eXBlIHVpbnQzMjsKICAgIGRlc2NyaXB0aW9uCiAgICAgIlRoZSB0aW1ldGlja3MgdHlwZSByZXByZXNlbnRzIGEgbm9uLW5lZ2F0aXZlIGludGVnZXIgdGhhdAogICAgICByZXByZXNlbnRzIHRoZSB0aW1lLCBtb2R1bG8gMl4zMiAoNDI5NDk2NzI5NiBkZWNpbWFsKSwgaW4KICAgICAgaHVuZHJlZHRocyBvZiBhIHNlY29uZCBiZXR3ZWVuIHR3byBlcG9jaHMuICBXaGVuIGEgc2NoZW1hCiAgICAgIG5vZGUgaXMgZGVmaW5lZCB0aGF0IHVzZXMgdGhpcyB0eXBlLCB0aGUgZGVzY3JpcHRpb24gb2YKICAgICAgdGhlIHNjaGVtYSBub2RlIGlkZW50aWZpZXMgYm90aCBvZiB0aGUgcmVmZXJlbmNlIGVwb2Nocy4KCiAgICAgIEluIHRoZSB2YWx1ZSBzZXQgYW5kIGl0cyBzZW1hbnRpY3MsIHRoaXMgdHlwZSBpcyBlcXVpdmFsZW50CiAgICAgIHRvIHRoZSBUaW1lVGlja3MgdHlwZSBvZiB0aGUgU01JdjIuIjsKICAgIHJlZmVyZW5jZQogICAgICJSRkMgMjU3ODogU3RydWN0dXJlIG9mIE1hbmFnZW1lbnQgSW5mb3JtYXRpb24gVmVyc2lvbiAyCiAgICAgICAgICAgICAgICAoU01JdjIpIjsKICB9CgogIHR5cGVkZWYgdGltZXN0YW1wIHsKICAgIHR5cGUgeWFuZzp0aW1ldGlja3M7CiAgICBkZXNjcmlwdGlvbgogICAgICJUaGUgdGltZXN0YW1wIHR5cGUgcmVwcmVzZW50cyB0aGUgdmFsdWUgb2YgYW4gYXNzb2NpYXRlZAogICAgICB0aW1ldGlja3Mgc2NoZW1hIG5vZGUgYXQgd2hpY2ggYSBzcGVjaWZpYyBvY2N1cnJlbmNlCiAgICAgIGhhcHBlbmVkLiAgVGhlIHNwZWNpZmljIG9jY3VycmVuY2UgbXVzdCBiZSBkZWZpbmVkIGluIHRoZQogICAgICBkZXNjcmlwdGlvbiBvZiBhbnkgc2NoZW1hIG5vZGUgZGVmaW5lZCB1c2luZyB0aGlzIHR5cGUuICBXaGVuCiAgICAgIHRoZSBzcGVjaWZpYyBvY2N1cnJlbmNlIG9jY3VycmVkIHByaW9yIHRvIHRoZSBsYXN0IHRpbWUgdGhlCiAgICAgIGFzc29jaWF0ZWQgdGltZXRpY2tzIGF0dHJpYnV0ZSB3YXMgemVybywgdGhlbiB0aGUgdGltZXN0YW1wCiAgICAgIHZhbHVlIGlzIHplcm8uICBOb3RlIHRoYXQgdGhpcyByZXF1aXJlcyBhbGwgdGltZXN0YW1wIHZhbHVlcwogICAgICB0byBiZSByZXNldCB0byB6ZXJvIHdoZW4gdGhlIHZhbHVlIG9mIHRoZSBhc3NvY2lhdGVkIHRpbWV0aWNrcwogICAgICBhdHRyaWJ1dGUgcmVhY2hlcyA0OTcrIGRheXMgYW5kIHdyYXBzIGFyb3VuZCB0byB6ZXJvLgoKICAgICAgVGhlIGFzc29jaWF0ZWQgdGltZXRpY2tzIHNjaGVtYSBub2RlIG11c3QgYmUgc3BlY2lmaWVkCiAgICAgIGluIHRoZSBkZXNjcmlwdGlvbiBvZiBhbnkgc2NoZW1hIG5vZGUgdXNpbmcgdGhpcyB0eXBlLgoKICAgICAgSW4gdGhlIHZhbHVlIHNldCBhbmQgaXRzIHNlbWFudGljcywgdGhpcyB0eXBlIGlzIGVxdWl2YWxlbnQKICAgICAgdG8gdGhlIFRpbWVTdGFtcCB0ZXh0dWFsIGNvbnZlbnRpb24gb2YgdGhlIFNNSXYyLiI7CiAgICByZWZlcmVuY2UKICAgICAiUkZDIDI1Nzk6IFRleHR1YWwgQ29udmVudGlvbnMgZm9yIFNNSXYyIjsKICB9CgogIC8qKiogY29sbGVjdGlvbiBvZiBnZW5lcmljIGFkZHJlc3MgdHlwZXMgKioqLwoKICB0eXBlZGVmIHBoeXMtYWRkcmVzcyB7CiAgICB0eXBlIHN0cmluZyB7CiAgICAgIHBhdHRlcm4gJyhbMC05YS1mQS1GXXsyfSg6WzAtOWEtZkEtRl17Mn0pKik/JzsKICAgIH0KCiAgICBkZXNjcmlwdGlvbgogICAgICJSZXByZXNlbnRzIG1lZGlhLSBvciBwaHlzaWNhbC1sZXZlbCBhZGRyZXNzZXMgcmVwcmVzZW50ZWQKICAgICAgYXMgYSBzZXF1ZW5jZSBvY3RldHMsIGVhY2ggb2N0ZXQgcmVwcmVzZW50ZWQgYnkgdHdvIGhleGFkZWNpbWFsCiAgICAgIG51bWJlcnMuICBPY3RldHMgYXJlIHNlcGFyYXRlZCBieSBjb2xvbnMuICBUaGUgY2Fub25pY2FsCiAgICAgIHJlcHJlc2VudGF0aW9uIHVzZXMgbG93ZXJjYXNlIGNoYXJhY3RlcnMuCgogICAgICBJbiB0aGUgdmFsdWUgc2V0IGFuZCBpdHMgc2VtYW50aWNzLCB0aGlzIHR5cGUgaXMgZXF1aXZhbGVudAogICAgICB0byB0aGUgUGh5c0FkZHJlc3MgdGV4dHVhbCBjb252ZW50aW9uIG9mIHRoZSBTTUl2Mi4iOwogICAgcmVmZXJlbmNlCiAgICAgIlJGQyAyNTc5OiBUZXh0dWFsIENvbnZlbnRpb25zIGZvciBTTUl2MiI7CiAgfQoKICB0eXBlZGVmIG1hYy1hZGRyZXNzIHsKICAgIHR5cGUgc3RyaW5nIHsKICAgICAgcGF0dGVybiAnWzAtOWEtZkEtRl17Mn0oOlswLTlhLWZBLUZdezJ9KXs1fSc7CiAgICB9CiAgICBkZXNjcmlwdGlvbgogICAgICJUaGUgbWFjLWFkZHJlc3MgdHlwZSByZXByZXNlbnRzIGFuIElFRUUgODAyIE1BQyBhZGRyZXNzLgogICAgICBUaGUgY2Fub25pY2FsIHJlcHJlc2VudGF0aW9uIHVzZXMgbG93ZXJjYXNlIGNoYXJhY3RlcnMuCgogICAgICBJbiB0aGUgdmFsdWUgc2V0IGFuZCBpdHMgc2VtYW50aWNzLCB0aGlzIHR5cGUgaXMgZXF1aXZhbGVudAogICAgICB0byB0aGUgTWFjQWRkcmVzcyB0ZXh0dWFsIGNvbnZlbnRpb24gb2YgdGhlIFNNSXYyLiI7CiAgICByZWZlcmVuY2UKICAgICAiSUVFRSA4MDI6IElFRUUgU3RhbmRhcmQgZm9yIExvY2FsIGFuZCBNZXRyb3BvbGl0YW4gQXJlYQogICAgICAgICAgICAgICAgTmV0d29ya3M6IE92ZXJ2aWV3IGFuZCBBcmNoaXRlY3R1cmUKICAgICAgUkZDIDI1Nzk6IFRleHR1YWwgQ29udmVudGlvbnMgZm9yIFNNSXYyIjsKICB9CgogIC8qKiogY29sbGVjdGlvbiBvZiBYTUwtc3BlY2lmaWMgdHlwZXMgKioqLwoKICB0eXBlZGVmIHhwYXRoMS4wIHsKICAgIHR5cGUgc3RyaW5nOwogICAgZGVzY3JpcHRpb24KICAgICAiVGhpcyB0eXBlIHJlcHJlc2VudHMgYW4gWFBBVEggMS4wIGV4cHJlc3Npb24uCgogICAgICBXaGVuIGEgc2NoZW1hIG5vZGUgaXMgZGVmaW5lZCB0aGF0IHVzZXMgdGhpcyB0eXBlLCB0aGUKICAgICAgZGVzY3JpcHRpb24gb2YgdGhlIHNjaGVtYSBub2RlIE1VU1Qgc3BlY2lmeSB0aGUgWFBhdGgKICAgICAgY29udGV4dCBpbiB3aGljaCB0aGUgWFBhdGggZXhwcmVzc2lvbiBpcyBldmFsdWF0ZWQuIjsKICAgIHJlZmVyZW5jZQogICAgICJYUEFUSDogWE1MIFBhdGggTGFuZ3VhZ2UgKFhQYXRoKSBWZXJzaW9uIDEuMCI7CiAgfQoKICAvKioqIGNvbGxlY3Rpb24gb2Ygc3RyaW5nIHR5cGVzICoqKi8KCiAgdHlwZWRlZiBoZXgtc3RyaW5nIHsKICAgIHR5cGUgc3RyaW5nIHsKICAgICAgcGF0dGVybiAnKFswLTlhLWZBLUZdezJ9KDpbMC05YS1mQS1GXXsyfSkqKT8nOwogICAgfQogICAgZGVzY3JpcHRpb24KICAgICAiQSBoZXhhZGVjaW1hbCBzdHJpbmcgd2l0aCBvY3RldHMgcmVwcmVzZW50ZWQgYXMgaGV4IGRpZ2l0cwogICAgICBzZXBhcmF0ZWQgYnkgY29sb25zLiAgVGhlIGNhbm9uaWNhbCByZXByZXNlbnRhdGlvbiB1c2VzCiAgICAgIGxvd2VyY2FzZSBjaGFyYWN0ZXJzLiI7CiAgfQoKICB0eXBlZGVmIHV1aWQgewogICAgdHlwZSBzdHJpbmcgewogICAgICBwYXR0ZXJuICdbMC05YS1mQS1GXXs4fS1bMC05YS1mQS1GXXs0fS1bMC05YS1mQS1GXXs0fS0nCiAgICAgICAgICAgICsgJ1swLTlhLWZBLUZdezR9LVswLTlhLWZBLUZdezEyfSc7CiAgICB9CiAgICBkZXNjcmlwdGlvbgogICAgICJBIFVuaXZlcnNhbGx5IFVuaXF1ZSBJRGVudGlmaWVyIGluIHRoZSBzdHJpbmcgcmVwcmVzZW50YXRpb24KICAgICAgZGVmaW5lZCBpbiBSRkMgNDEyMi4gIFRoZSBjYW5vbmljYWwgcmVwcmVzZW50YXRpb24gdXNlcwogICAgICBsb3dlcmNhc2UgY2hhcmFjdGVycy4KCiAgICAgIFRoZSBmb2xsb3dpbmcgaXMgYW4gZXhhbXBsZSBvZiBhIFVVSUQgaW4gc3RyaW5nIHJlcHJlc2VudGF0aW9uOgogICAgICBmODFkNGZhZS03ZGVjLTExZDAtYTc2NS0wMGEwYzkxZTZiZjYKICAgICAgIjsKICAgIHJlZmVyZW5jZQogICAgICJSRkMgNDEyMjogQSBVbml2ZXJzYWxseSBVbmlxdWUgSURlbnRpZmllciAoVVVJRCkgVVJOCiAgICAgICAgICAgICAgICBOYW1lc3BhY2UiOwogIH0KCiAgdHlwZWRlZiBkb3R0ZWQtcXVhZCB7CiAgICB0eXBlIHN0cmluZyB7CiAgICAgIHBhdHRlcm4KICAgICAgICAnKChbMC05XXxbMS05XVswLTldfDFbMC05XVswLTldfDJbMC00XVswLTldfDI1WzAtNV0pXC4pezN9JwogICAgICArICcoWzAtOV18WzEtOV1bMC05XXwxWzAtOV1bMC05XXwyWzAtNF1bMC05XXwyNVswLTVdKSc7CiAgICB9CiAgICBkZXNjcmlwdGlvbgogICAgICAiQW4gdW5zaWduZWQgMzItYml0IG51bWJlciBleHByZXNzZWQgaW4gdGhlIGRvdHRlZC1xdWFkCiAgICAgICBub3RhdGlvbiwgaS5lLiwgZm91ciBvY3RldHMgd3JpdHRlbiBhcyBkZWNpbWFsIG51bWJlcnMKICAgICAgIGFuZCBzZXBhcmF0ZWQgd2l0aCB0aGUgJy4nIChmdWxsIHN0b3ApIGNoYXJhY3Rlci4iOwogIH0KfQo=
-o-ran-smo-teiv-cloud urn:o-ran:smo-teiv-cloud CLOUD [] 2024-07-15 bW9kdWxlIG8tcmFuLXNtby10ZWl2LWNsb3VkIHsKICAgIHlhbmctdmVyc2lvbiAxLjE7CiAgICBuYW1lc3BhY2UgInVybjpvLXJhbjpzbW8tdGVpdi1jbG91ZCI7CiAgICBwcmVmaXggb3ItdGVpdi1jbG91ZDsKCiAgICBpbXBvcnQgby1yYW4tc21vLXRlaXYtY29tbW9uLXlhbmctdHlwZXMge3ByZWZpeCBvci10ZWl2LXR5cGVzOyB9CgogICAgaW1wb3J0IG8tcmFuLXNtby10ZWl2LWNvbW1vbi15YW5nLWV4dGVuc2lvbnMge3ByZWZpeCBvci10ZWl2LXlleHQ7IH0KCiAgICBpbXBvcnQgaWV0Zi1nZW8tbG9jYXRpb24gewogICAgICAgIHByZWZpeCBnZW87CiAgICAgICAgcmVmZXJlbmNlICJSRkMgOTE3OTogQSBZQU5HIEdyb3VwaW5nIGZvciBHZW9ncmFwaGljIExvY2F0aW9ucyI7CiAgICB9CgogICAgb3JnYW5pemF0aW9uICJPUkFOIjsKICAgIGNvbnRhY3QgIlRoZSBBdXRob3JzIjsKICAgIGRlc2NyaXB0aW9uCiAgICAgICAgIlJBTiBDbG91ZCB0b3BvbG9neSBtb2RlbC4KCiAgICAgICAgVGhpcyBtb2RlbCBjb250YWlucyB0aGUgdG9wb2xvZ3kgZW50aXRpZXMgYW5kIHJlbGF0aW9ucyBpbiB0aGUKICAgICAgICBSQU4gQ0xPVUQgZG9tYWluLCB3aGljaCBjb21wcmlzZXMgY2xvdWQgaW5mcmFzdHJ1Y3R1cmUgYW5kCiAgICAgICAgZGVwbG95bWVudCBhc3BlY3RzIHRoYXQgY2FuIGJlIHVzZWQgaW4gdGhlIHRvcG9sb2d5IG1vZGVsLgoKICAgICAgICBDb3B5cmlnaHQgKEMpIDIwMjQgRXJpY3Nzb24KICAgICAgICBNb2RpZmljYXRpb25zIENvcHlyaWdodCAoQykgMjAyNCBPcGVuSW5mcmEgRm91bmRhdGlvbiBFdXJvcGUKCiAgICAgICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTsKICAgICAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAgICAgICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CgogICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAoKICAgICAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAgICAgICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLAogICAgICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgogICAgICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKICAgICAgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KCiAgICAgICAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAiOwoKICAgIHJldmlzaW9uICIyMDI0LTA1LTAyIiB7CiAgICAgICAgZGVzY3JpcHRpb24gIkluaXRpYWwgcmV2aXNpb24uIjsKICAgICAgICBvci10ZWl2LXlleHQ6bGFiZWwgMC4zLjA7CiAgICB9CgogICAgcmV2aXNpb24gIjIwMjQtMDctMTUiIHsKICAgICAgICBkZXNjcmlwdGlvbiAiVGhpcyByZXZpc2lvbiBhbGlnbnMgTy1SQU4gV29yayBHcm91cCAxMCBTdGFnZSAyIFNwZWNpZmljYXRpb24gKE8tUkFOLldHMTAuVEUmSVYtQ0lNSS4wLVIwMDQudjAyLjAwKSI7CiAgICAgICAgb3ItdGVpdi15ZXh0OmxhYmVsIDAuNC4wOwogICAgfQoKICAgIG9yLXRlaXYteWV4dDpkb21haW4gQ0xPVUQ7CgogICAgbGlzdCBDbG91ZGlmaWVkTkYgewogICAgICAgIGRlc2NyaXB0aW9uICJBIFJBTiBOZXR3b3JrIEZ1bmN0aW9uIHNvZnR3YXJlIHRoYXQgaXMgZGVwbG95ZWQgaW4gdGhlIE8tQ2xvdWQgdmlhIG9uZSBvciBtb3JlIE5GIERlcGxveW1lbnRzLiI7CgogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICAgICAga2V5IGlkOwoKICAgICAgICBjb250YWluZXIgYXR0cmlidXRlcyB7CiAgICAgICAgICAgIGxlYWYgbmFtZSB7CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiTmFtZSBvZiBDbG91ZGlmaWVkIE5GIjsKICAgICAgICAgICAgICAgIHR5cGUgc3RyaW5nOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIGxpc3QgTkZEZXBsb3ltZW50IHsKICAgICAgICBkZXNjcmlwdGlvbiAiQSBzb2Z0d2FyZSBkZXBsb3ltZW50IG9uIE8tQ2xvdWQgcmVzb3VyY2VzIHRoYXQgcmVhbGl6ZXMsIGFsbCBvciBwYXJ0IG9mLCBhIENsb3VkaWZpZWQgTkYuIjsKCiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOlRvcF9HcnBfVHlwZTsKICAgICAgICBrZXkgaWQ7CgogICAgICAgIGNvbnRhaW5lciBhdHRyaWJ1dGVzIHsKICAgICAgICAgICAgbGVhZiBuYW1lIHsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJOYW1lIG9mIE5GIERlcGxveW1lbnQiOwogICAgICAgICAgICAgICAgdHlwZSBzdHJpbmc7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgbGlzdCBPQ2xvdWROYW1lc3BhY2UgewogICAgICAgIGRlc2NyaXB0aW9uICJPQ2xvdWROYW1lc3BhY2UgcHJvdmlkZSBhIG1lY2hhbmlzbSBmb3IgaXNvbGF0aW5nCiAgICAgICAgZ3JvdXBzIG9mIHJlc291cmNlcyB3aXRoaW4gYSBzaW5nbGUgY2x1c3Rlci4iOwoKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6VG9wX0dycF9UeXBlOwogICAgICAgIGtleSBpZDsKCiAgICAgICAgY29udGFpbmVyIGF0dHJpYnV0ZXMgewogICAgICAgICAgICBsZWFmIG5hbWUgewogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIk5hbWUgb2YgQ2xvdWQgTmFtZXNwYWNlIjsKICAgICAgICAgICAgICAgIHR5cGUgc3RyaW5nOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIGxpc3QgTm9kZUNsdXN0ZXIgewogICAgICAgIGRlc2NyaXB0aW9uICJBIE5vZGVDbHVzdGVyIG1hbmFnZXMgYSBjb2xsZWN0aW9uIG9mIE5vZGVzLiI7CgogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICAgICAga2V5IGlkOwoKICAgICAgICBjb250YWluZXIgYXR0cmlidXRlcyB7CiAgICAgICAgICAgIGxlYWYgbmFtZSB7CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiTmFtZSBvZiBOb2RlIENsdXN0ZXIiOwogICAgICAgICAgICAgICAgdHlwZSBzdHJpbmc7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgbGlzdCBPQ2xvdWRTaXRlIHsKICAgICAgICBkZXNjcmlwdGlvbiAiUmVwcmVzZW50cyB0aGUgaW5mcmFzdHJ1Y3R1cmUgdGhhdAogICAgICAgIGhvc3RzIHRoZSBORiBEZXBsb3ltZW50LiI7CgogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICAgICAga2V5IGlkOwoKICAgICAgICBjb250YWluZXIgYXR0cmlidXRlcyB7CiAgICAgICAgICAgIGxlYWYgbmFtZSB7CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiTmFtZSBvZiBDbG91ZCBTaXRlIjsKICAgICAgICAgICAgICAgIHR5cGUgc3RyaW5nOwogICAgICAgICAgICB9CgogICAgICAgICAgICB1c2VzIGdlbzpnZW8tbG9jYXRpb247CiAgICAgICAgfQogICAgfQoKCiAgICBvci10ZWl2LXlleHQ6YmlEaXJlY3Rpb25hbFRvcG9sb2d5UmVsYXRpb25zaGlwIENMT1VESUZJRURORl9DT01QUklTRVNfTkZERVBMT1lNRU5UIHsgLy8gMSB0byAxLi5uCgogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICAgICAga2V5IGlkOwoKICAgICAgICBsZWFmLWxpc3QgY29tcHJpc2VkLW5GRGVwbG95bWVudCB7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJDbG91ZGlmaWVkIE5GIGNvbXByaXNlcyBvZiB0aGVzZSBORiBEZXBsb3ltZW50LiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDphU2lkZSBDbG91ZGlmaWVkTkY7CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICAgICAgbWluLWVsZW1lbnRzIDE7CiAgICAgICAgfQoKICAgICAgICBsZWFmIGNvbXByaXNlZC1ieS1jbG91ZGlmaWVkTkYgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiTkYgRGVwbG95bWVudCBwYXJ0IG9mIENsb3VkaWZpZWQgTkYuIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmJTaWRlIE5GRGVwbG95bWVudDsKICAgICAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgICAgICBtYW5kYXRvcnkgdHJ1ZTsKICAgICAgICB9CiAgICB9CgogICAgb3ItdGVpdi15ZXh0OmJpRGlyZWN0aW9uYWxUb3BvbG9neVJlbGF0aW9uc2hpcCBORkRFUExPWU1FTlRfREVQTE9ZRURfT05fT0NMT1VETkFNRVNQQUNFIHsgLy8gMS4ubiB0byAxLi5uCgogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICAgICAga2V5IGlkOwoKICAgICAgICBsZWFmLWxpc3QgZGVwbG95ZWQtb24tb2Nsb3VkTmFtZXNwYWNlIHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIk5GIERlcGxveW1lbnQgZGVwbG95ZWQgb24gTy1DbG91ZCBOYW1lc3BhY2UuIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmFTaWRlIE5GRGVwbG95bWVudDsKICAgICAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgICAgICBtaW4tZWxlbWVudHMgMTsKICAgICAgICB9CgogICAgICAgIGxlYWYtbGlzdCBkZXBsb3llZC1uRkRlcGxveW1lbnQgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiT0Nsb3VkIE5hbWVzcGFjZSBkZXBsb3lzIE5GIERlcGxveW1lbnQuIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmJTaWRlIE9DbG91ZE5hbWVzcGFjZTsKICAgICAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgICAgICBtaW4tZWxlbWVudHMgMTsKICAgICAgICB9CiAgICB9CgogICAgb3ItdGVpdi15ZXh0OmJpRGlyZWN0aW9uYWxUb3BvbG9neVJlbGF0aW9uc2hpcCBPQ0xPVUROQU1FU1BBQ0VfREVQTE9ZRURfT05fTk9ERUNMVVNURVIgeyAvLyAxLi5uIHRvIDEKCiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOlRvcF9HcnBfVHlwZTsKICAgICAgICBrZXkgaWQ7CgogICAgICAgIGxlYWYgZGVwbG95ZWQtb24tbm9kZUNsdXN0ZXIgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiTy1DbG91ZCBOYW1lc3BhY2UgZGVwbG95ZWQgb24gTm9kZSBDbHVzdGVyLiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDphU2lkZSBPQ2xvdWROYW1lc3BhY2U7CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICAgICAgbWFuZGF0b3J5IHRydWU7CiAgICAgICAgfQoKICAgICAgICBsZWFmLWxpc3QgZGVwbG95ZWQtb2Nsb3VkTmFtZXNwYWNlIHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIk5vZGUgQ2x1c3RlciBkZXBsb3lzIE8tQ2xvdWQgTmFtZXNwYWNlLiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDpiU2lkZSBOb2RlQ2x1c3RlcjsKICAgICAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgICAgICBtaW4tZWxlbWVudHMgMTsKICAgICAgICB9CiAgICB9CgogICAgb3ItdGVpdi15ZXh0OmJpRGlyZWN0aW9uYWxUb3BvbG9neVJlbGF0aW9uc2hpcCBOT0RFQ0xVU1RFUl9MT0NBVEVEX0FUX09DTE9VRFNJVEUgeyAvLyAxLi5uIHRvIDEuLm4KCiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOlRvcF9HcnBfVHlwZTsKICAgICAgICBrZXkgaWQ7CgogICAgICAgIGxlYWYtbGlzdCBsb2NhdGVkLWF0LW9jbG91ZFNpdGUgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiTm9kZSBDbHVzdGVyIGxvY2F0ZWQgYXQgTy1DbG91ZCBTaXRlLiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDphU2lkZSBOb2RlQ2x1c3RlcjsKICAgICAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgICAgICBtaW4tZWxlbWVudHMgMTsKICAgICAgICB9CgogICAgICAgIGxlYWYtbGlzdCBsb2NhdGlvbi1vZi1vbm9kZUNsdXN0ZXIgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiTy1DbG91ZCBTaXRlIGlzIGxvY2F0aW9uIG9mIE5vZGUgQ2x1c3Rlci4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YlNpZGUgT0Nsb3VkU2l0ZTsKICAgICAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgICAgICBtaW4tZWxlbWVudHMgMTsKICAgICAgICB9CiAgICB9Cn0=
+o-ran-smo-teiv-cloud urn:o-ran:smo-teiv-cloud CLOUD [] 2024-07-15 bW9kdWxlIG8tcmFuLXNtby10ZWl2LWNsb3VkIHsKICAgIHlhbmctdmVyc2lvbiAxLjE7CiAgICBuYW1lc3BhY2UgInVybjpvLXJhbjpzbW8tdGVpdi1jbG91ZCI7CiAgICBwcmVmaXggb3ItdGVpdi1jbG91ZDsKCiAgICBpbXBvcnQgby1yYW4tc21vLXRlaXYtY29tbW9uLXlhbmctdHlwZXMge3ByZWZpeCBvci10ZWl2LXR5cGVzOyB9CgogICAgaW1wb3J0IG8tcmFuLXNtby10ZWl2LWNvbW1vbi15YW5nLWV4dGVuc2lvbnMge3ByZWZpeCBvci10ZWl2LXlleHQ7IH0KCiAgICBpbXBvcnQgaWV0Zi1nZW8tbG9jYXRpb24gewogICAgICAgIHByZWZpeCBnZW87CiAgICAgICAgcmVmZXJlbmNlICJSRkMgOTE3OTogQSBZQU5HIEdyb3VwaW5nIGZvciBHZW9ncmFwaGljIExvY2F0aW9ucyI7CiAgICB9CgogICAgb3JnYW5pemF0aW9uICJPUkFOIjsKICAgIGNvbnRhY3QgIlRoZSBBdXRob3JzIjsKICAgIGRlc2NyaXB0aW9uCiAgICAgICAgIlJBTiBDbG91ZCB0b3BvbG9neSBtb2RlbC4KCiAgICAgICAgVGhpcyBtb2RlbCBjb250YWlucyB0aGUgdG9wb2xvZ3kgZW50aXRpZXMgYW5kIHJlbGF0aW9ucyBpbiB0aGUKICAgICAgICBSQU4gQ0xPVUQgZG9tYWluLCB3aGljaCBjb21wcmlzZXMgY2xvdWQgaW5mcmFzdHJ1Y3R1cmUgYW5kCiAgICAgICAgZGVwbG95bWVudCBhc3BlY3RzIHRoYXQgY2FuIGJlIHVzZWQgaW4gdGhlIHRvcG9sb2d5IG1vZGVsLgoKICAgICAgICBDb3B5cmlnaHQgKEMpIDIwMjQgRXJpY3Nzb24KICAgICAgICBNb2RpZmljYXRpb25zIENvcHlyaWdodCAoQykgMjAyNCBPcGVuSW5mcmEgRm91bmRhdGlvbiBFdXJvcGUKCiAgICAgICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTsKICAgICAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAgICAgICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CgogICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAoKICAgICAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAgICAgICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLAogICAgICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgogICAgICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKICAgICAgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KCiAgICAgICAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAiOwoKICAgIHJldmlzaW9uICIyMDI0LTA1LTAyIiB7CiAgICAgICAgZGVzY3JpcHRpb24gIkluaXRpYWwgcmV2aXNpb24uIjsKICAgICAgICBvci10ZWl2LXlleHQ6bGFiZWwgMC4zLjA7CiAgICB9CgogICAgcmV2aXNpb24gIjIwMjQtMDctMTUiIHsKICAgICAgICBkZXNjcmlwdGlvbiAiVGhpcyByZXZpc2lvbiBhbGlnbnMgTy1SQU4gV29yayBHcm91cCAxMCBTdGFnZSAyIFNwZWNpZmljYXRpb24gKE8tUkFOLldHMTAuVEUmSVYtQ0lNSS4wLVIwMDQudjAyLjAwKSI7CiAgICAgICAgb3ItdGVpdi15ZXh0OmxhYmVsIDAuNC4wOwogICAgfQoKICAgIG9yLXRlaXYteWV4dDpkb21haW4gQ0xPVUQ7CgogICAgbGlzdCBDbG91ZGlmaWVkTkYgewogICAgICAgIGRlc2NyaXB0aW9uICJBIFJBTiBOZXR3b3JrIEZ1bmN0aW9uIHNvZnR3YXJlIHRoYXQgaXMgZGVwbG95ZWQgaW4gdGhlIE8tQ2xvdWQgdmlhIG9uZSBvciBtb3JlIE5GIERlcGxveW1lbnRzLiI7CgogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOk9yaWdpbl9FbnRpdHlfTWFwcGluZ19HcnA7CiAgICAgICAga2V5IGlkOwoKICAgICAgICBjb250YWluZXIgYXR0cmlidXRlcyB7CiAgICAgICAgICAgIGxlYWYgbmFtZSB7CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiTmFtZSBvZiBDbG91ZGlmaWVkIE5GIjsKICAgICAgICAgICAgICAgIHR5cGUgc3RyaW5nOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIGxpc3QgTkZEZXBsb3ltZW50IHsKICAgICAgICBkZXNjcmlwdGlvbiAiQSBzb2Z0d2FyZSBkZXBsb3ltZW50IG9uIE8tQ2xvdWQgcmVzb3VyY2VzIHRoYXQgcmVhbGl6ZXMsIGFsbCBvciBwYXJ0IG9mLCBhIENsb3VkaWZpZWQgTkYuIjsKCiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOlRvcF9HcnBfVHlwZTsKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6T3JpZ2luX0VudGl0eV9NYXBwaW5nX0dycDsKICAgICAgICBrZXkgaWQ7CgogICAgICAgIGNvbnRhaW5lciBhdHRyaWJ1dGVzIHsKICAgICAgICAgICAgbGVhZiBuYW1lIHsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJOYW1lIG9mIE5GIERlcGxveW1lbnQiOwogICAgICAgICAgICAgICAgdHlwZSBzdHJpbmc7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgbGlzdCBPQ2xvdWROYW1lc3BhY2UgewogICAgICAgIGRlc2NyaXB0aW9uICJPQ2xvdWROYW1lc3BhY2UgcHJvdmlkZSBhIG1lY2hhbmlzbSBmb3IgaXNvbGF0aW5nCiAgICAgICAgZ3JvdXBzIG9mIHJlc291cmNlcyB3aXRoaW4gYSBzaW5nbGUgY2x1c3Rlci4iOwoKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6VG9wX0dycF9UeXBlOwogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpPcmlnaW5fRW50aXR5X01hcHBpbmdfR3JwOwogICAgICAgIGtleSBpZDsKCiAgICAgICAgY29udGFpbmVyIGF0dHJpYnV0ZXMgewogICAgICAgICAgICBsZWFmIG5hbWUgewogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIk5hbWUgb2YgQ2xvdWQgTmFtZXNwYWNlIjsKICAgICAgICAgICAgICAgIHR5cGUgc3RyaW5nOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIGxpc3QgTm9kZUNsdXN0ZXIgewogICAgICAgIGRlc2NyaXB0aW9uICJBIE5vZGVDbHVzdGVyIG1hbmFnZXMgYSBjb2xsZWN0aW9uIG9mIE5vZGVzLiI7CgogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOk9yaWdpbl9FbnRpdHlfTWFwcGluZ19HcnA7CiAgICAgICAga2V5IGlkOwoKICAgICAgICBjb250YWluZXIgYXR0cmlidXRlcyB7CiAgICAgICAgICAgIGxlYWYgbmFtZSB7CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiTmFtZSBvZiBOb2RlIENsdXN0ZXIiOwogICAgICAgICAgICAgICAgdHlwZSBzdHJpbmc7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgbGlzdCBPQ2xvdWRTaXRlIHsKICAgICAgICBkZXNjcmlwdGlvbiAiUmVwcmVzZW50cyB0aGUgaW5mcmFzdHJ1Y3R1cmUgdGhhdAogICAgICAgIGhvc3RzIHRoZSBORiBEZXBsb3ltZW50LiI7CgogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOk9yaWdpbl9FbnRpdHlfTWFwcGluZ19HcnA7CiAgICAgICAga2V5IGlkOwoKICAgICAgICBjb250YWluZXIgYXR0cmlidXRlcyB7CiAgICAgICAgICAgIGxlYWYgbmFtZSB7CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiTmFtZSBvZiBDbG91ZCBTaXRlIjsKICAgICAgICAgICAgICAgIHR5cGUgc3RyaW5nOwogICAgICAgICAgICB9CgogICAgICAgICAgICB1c2VzIGdlbzpnZW8tbG9jYXRpb247CiAgICAgICAgfQogICAgfQoKCiAgICBvci10ZWl2LXlleHQ6YmlEaXJlY3Rpb25hbFRvcG9sb2d5UmVsYXRpb25zaGlwIENMT1VESUZJRURORl9DT01QUklTRVNfTkZERVBMT1lNRU5UIHsgLy8gMSB0byAxLi5uCgogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOk9yaWdpbl9FbnRpdHlfTWFwcGluZ19HcnA7CiAgICAgICAga2V5IGlkOwoKICAgICAgICBsZWFmLWxpc3QgY29tcHJpc2VkLW5GRGVwbG95bWVudCB7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJDbG91ZGlmaWVkIE5GIGNvbXByaXNlcyBvZiB0aGVzZSBORiBEZXBsb3ltZW50LiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDphU2lkZSBDbG91ZGlmaWVkTkY7CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICAgICAgbWluLWVsZW1lbnRzIDE7CiAgICAgICAgfQoKICAgICAgICBsZWFmIGNvbXByaXNlZC1ieS1jbG91ZGlmaWVkTkYgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiTkYgRGVwbG95bWVudCBwYXJ0IG9mIENsb3VkaWZpZWQgTkYuIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmJTaWRlIE5GRGVwbG95bWVudDsKICAgICAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgICAgICBtYW5kYXRvcnkgdHJ1ZTsKICAgICAgICB9CiAgICB9CgogICAgb3ItdGVpdi15ZXh0OmJpRGlyZWN0aW9uYWxUb3BvbG9neVJlbGF0aW9uc2hpcCBORkRFUExPWU1FTlRfREVQTE9ZRURfT05fT0NMT1VETkFNRVNQQUNFIHsgLy8gMS4ubiB0byAxLi5uCgogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOk9yaWdpbl9FbnRpdHlfTWFwcGluZ19HcnA7CiAgICAgICAga2V5IGlkOwoKICAgICAgICBsZWFmLWxpc3QgZGVwbG95ZWQtb24tb2Nsb3VkTmFtZXNwYWNlIHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIk5GIERlcGxveW1lbnQgZGVwbG95ZWQgb24gTy1DbG91ZCBOYW1lc3BhY2UuIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmFTaWRlIE5GRGVwbG95bWVudDsKICAgICAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgICAgICBtaW4tZWxlbWVudHMgMTsKICAgICAgICB9CgogICAgICAgIGxlYWYtbGlzdCBkZXBsb3llZC1uRkRlcGxveW1lbnQgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiT0Nsb3VkIE5hbWVzcGFjZSBkZXBsb3lzIE5GIERlcGxveW1lbnQuIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmJTaWRlIE9DbG91ZE5hbWVzcGFjZTsKICAgICAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgICAgICBtaW4tZWxlbWVudHMgMTsKICAgICAgICB9CiAgICB9CgogICAgb3ItdGVpdi15ZXh0OmJpRGlyZWN0aW9uYWxUb3BvbG9neVJlbGF0aW9uc2hpcCBPQ0xPVUROQU1FU1BBQ0VfREVQTE9ZRURfT05fTk9ERUNMVVNURVIgeyAvLyAxLi5uIHRvIDEKCiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOlRvcF9HcnBfVHlwZTsKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6T3JpZ2luX0VudGl0eV9NYXBwaW5nX0dycDsKICAgICAgICBrZXkgaWQ7CgogICAgICAgIGxlYWYgZGVwbG95ZWQtb24tbm9kZUNsdXN0ZXIgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiTy1DbG91ZCBOYW1lc3BhY2UgZGVwbG95ZWQgb24gTm9kZSBDbHVzdGVyLiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDphU2lkZSBPQ2xvdWROYW1lc3BhY2U7CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICAgICAgbWFuZGF0b3J5IHRydWU7CiAgICAgICAgfQoKICAgICAgICBsZWFmLWxpc3QgZGVwbG95ZWQtb2Nsb3VkTmFtZXNwYWNlIHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIk5vZGUgQ2x1c3RlciBkZXBsb3lzIE8tQ2xvdWQgTmFtZXNwYWNlLiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDpiU2lkZSBOb2RlQ2x1c3RlcjsKICAgICAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgICAgICBtaW4tZWxlbWVudHMgMTsKICAgICAgICB9CiAgICB9CgogICAgb3ItdGVpdi15ZXh0OmJpRGlyZWN0aW9uYWxUb3BvbG9neVJlbGF0aW9uc2hpcCBOT0RFQ0xVU1RFUl9MT0NBVEVEX0FUX09DTE9VRFNJVEUgeyAvLyAxLi5uIHRvIDEuLm4KCiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOlRvcF9HcnBfVHlwZTsKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6T3JpZ2luX0VudGl0eV9NYXBwaW5nX0dycDsKICAgICAgICBrZXkgaWQ7CgogICAgICAgIGxlYWYtbGlzdCBsb2NhdGVkLWF0LW9jbG91ZFNpdGUgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiTm9kZSBDbHVzdGVyIGxvY2F0ZWQgYXQgTy1DbG91ZCBTaXRlLiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDphU2lkZSBOb2RlQ2x1c3RlcjsKICAgICAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgICAgICBtaW4tZWxlbWVudHMgMTsKICAgICAgICB9CgogICAgICAgIGxlYWYtbGlzdCBsb2NhdGlvbi1vZi1vbm9kZUNsdXN0ZXIgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiTy1DbG91ZCBTaXRlIGlzIGxvY2F0aW9uIG9mIE5vZGUgQ2x1c3Rlci4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YlNpZGUgT0Nsb3VkU2l0ZTsKICAgICAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgICAgICBtaW4tZWxlbWVudHMgMTsKICAgICAgICB9CiAgICB9Cn0=
o-ran-smo-teiv-common-yang-extensions urn:o-ran:smo-teiv-common-yang-extensions \N [] 2024-05-24 bW9kdWxlIG8tcmFuLXNtby10ZWl2LWNvbW1vbi15YW5nLWV4dGVuc2lvbnMgewoKICB5YW5nLXZlcnNpb24gMS4xOwogIG5hbWVzcGFjZSAidXJuOm8tcmFuOnNtby10ZWl2LWNvbW1vbi15YW5nLWV4dGVuc2lvbnMiOwogIHByZWZpeCBvci10ZWl2LXlleHQ7CgogIG9yZ2FuaXphdGlvbiAiT1JBTiI7CiAgY29udGFjdCAiVGhlIEF1dGhvcnMiOwogIGRlc2NyaXB0aW9uCiAgIlRvcG9sb2d5IGFuZCBJbnZlbnRvcnkgWUFORyBleHRlbnNpb25zIG1vZGVsCgogIFRoaXMgbW9kZWwgY29udGFpbnMgZXh0ZW5zaW9ucyB0byB0aGUgWUFORyBsYW5ndWFnZSB0aGF0IHRvcG9sb2d5IGFuZAogIGludmVudG9yeSBtb2RlbHMgd2lsbCB1c2UgdG8gZGVmaW5lIGFuZCBhbm5vdGF0ZSB0eXBlcyBhbmQgcmVsYXRpb25zaGlwcy4KCiAgQ29weXJpZ2h0IChDKSAyMDI0IEVyaWNzc29uCiAgTW9kaWZpY2F0aW9ucyBDb3B5cmlnaHQgKEMpIDIwMjQgT3BlbkluZnJhIEZvdW5kYXRpb24gRXVyb3BlCgogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7CiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAoKICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKCiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUywKICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCgogIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIjsKCiAgICByZXZpc2lvbiAiMjAyNC0wNS0yNCIgewogICAgICAgIGRlc2NyaXB0aW9uICJJbml0aWFsIHJldmlzaW9uLiI7CiAgICAgICAgb3ItdGVpdi15ZXh0OmxhYmVsIDAuMy4wOwogICAgfQoKICAgIGV4dGVuc2lvbiBiaURpcmVjdGlvbmFsVG9wb2xvZ3lSZWxhdGlvbnNoaXAgewogICAgICAgIGRlc2NyaXB0aW9uCiAgICAgICAgICAgICJEZWZpbmVzIGEgYmktZGlyZWN0aW9uYWwgcmVsYXRpb25zaGlwIGluIHRoZSB0b3BvbG9neS4KCiAgICAgICAgICAgIEEgYmktZGlyZWN0aW9uYWwtYXNzb2NpYXRpb24gKEJEQSkgaXMgYSByZWxhdGlvbnNoaXAgY29tcHJpc2luZyBvZgogICAgICAgICAgICBhbiBBLXNpZGUgYW5kIGEgQi1zaWRlLiBUaGUgQS1zaWRlIGlzIGNvbnNpZGVyZWQgdGhlIG9yaWdpbmF0aW5nCiAgICAgICAgICAgIHNpZGUgb2YgdGhlIHJlbGF0aW9uc2hpcDsgdGhlIEItc2lkZSBpcyBjb25zaWRlcmVkIHRoZSB0ZXJtaW5hdGluZwogICAgICAgICAgICBzaWRlIG9mIHRoZSByZWxhdGlvbnNoaXAuIFRoZSBvcmRlciBvZiBBLXNpZGUgYW5kIEItc2lkZSBpcyBvZgogICAgICAgICAgICBpbXBvcnRhbmNlIGFuZCBNVVNUIE5PVCBiZSBjaGFuZ2VkIG9uY2UgZGVmaW5lZC4KCiAgICAgICAgICAgIEJvdGggQS1zaWRlIGFuZCBCLXNpZGUgYXJlIGRlZmluZWQgb24gYSB0eXBlLCBhbmQgYXJlIGdpdmVuIGEgcm9sZS4KICAgICAgICAgICAgQSB0eXBlIG1heSBoYXZlIG11bHRpcGxlIG9yaWdpbmF0aW5nIGFuZC9vciB0ZXJtaW5hdGluZyBzaWRlcyBvZiBhCiAgICAgICAgICAgIHJlbGF0aW9uc2hpcCwgYWxsIGRpc3Rpbmd1aXNoZWQgYnkgcm9sZSBuYW1lLgoKICAgICAgICAgICAgVGhlIHN0YXRlbWVudCBNVVNUIG9ubHkgYmUgYSBzdWJzdGF0ZW1lbnQgb2YgdGhlICdtb2R1bGUnIHN0YXRlbWVudC4KICAgICAgICAgICAgTXVsdGlwbGUgJ2JpLWRpcmVjdGlvbmFsLXRvcG9sb2d5LXJlbGF0aW9uc2hpcCcgc3RhdGVtZW50cyBhcmUKICAgICAgICAgICAgYWxsb3dlZCBwZXIgcGFyZW50IHN0YXRlbWVudC4KCiAgICAgICAgICAgIFN1YnN0YXRlbWVudHMgdG8gdGhlICdiaS1kaXJlY3Rpb25hbC10b3BvbG9neS1yZWxhdGlvbnNoaXAnIGRlZmluZQogICAgICAgICAgICB0aGUgQS1zaWRlIGFuZCB0aGUgQi1zaWRlLCByZXNwZWN0aXZlbHksIGFuZCBvcHRpb25hbGx5IHByb3BlcnRpZXMKICAgICAgICAgICAgb2YgdGhlIHJlbGF0aW9uc2hpcC4gRGF0YSBub2RlcyBvZiB0eXBlcyAnbGVhZicgYW5kICdsZWFmLWxpc3QnIGFyZQogICAgICAgICAgICB1c2VkIGZvciB0aGlzIHB1cnBvc2UuIE9uZSBvZiB0aGUgZGF0YSBub2RlcyBNVVNUIGJlIGFubm90YXRlZCB3aXRoCiAgICAgICAgICAgIHRoZSAnYS1zaWRlJyBleHRlbnNpb247IGFub3RoZXIgZGF0YSBub2RlIE1VU1QgYmUgYW5ub3RhdGVkIHdpdGggdGhlCiAgICAgICAgICAgICdiLXNpZGUnIGV4dGVuc2lvbi4gT3RoZXIgZGF0YSBub2RlcyBkZWZpbmUgcHJvcGVydGllcyBvZiB0aGUKICAgICAgICAgICAgcmVsYXRpb25zaGlwLgoKICAgICAgICAgICAgVGhlIGFyZ3VtZW50IGlzIHRoZSBuYW1lIG9mIHRoZSByZWxhdGlvbnNoaXAuIFRoZSByZWxhdGlvbnNoaXAgbmFtZQogICAgICAgICAgICBpcyBzY29wZWQgdG8gdGhlIG5hbWVzcGFjZSBvZiB0aGUgZGVjbGFyaW5nIG1vZHVsZSBhbmQgTVVTVCBiZQogICAgICAgICAgICB1bmlxdWUgd2l0aGluIHRoZSBzY29wZS4iOwoKICAgICAgICBhcmd1bWVudCByZWxhdGlvbnNoaXBOYW1lOwogICAgfQoKICAgIGV4dGVuc2lvbiBhU2lkZSB7CiAgICAgICAgZGVzY3JpcHRpb24KICAgICAgICAgICAgIkRlZmluZXMgdGhlIEEtc2lkZSBvZiBhIHJlbGF0aW9uc2hpcC4KCiAgICAgICAgICAgIFRoZSBzdGF0ZW1lbnQgTVVTVCBvbmx5IGJlIGEgc3Vic3RhdGVtZW50IG9mIGEgJ2xlYWYnIG9yICdsZWFmLWxpc3QnCiAgICAgICAgICAgIHN0YXRlbWVudCwgd2hpY2ggaXRzZWxmIG11c3QgYmUgYSBzdWJzdGF0ZW1lbnQgb2YgdGhlCiAgICAgICAgICAgICd1bmktZGlyZWN0aW9uYWwtdG9wb2xvZ3ktcmVsYXRpb25zaGlwJyBzdGF0ZW1lbnQuCgogICAgICAgICAgICBUaGUgZGF0YSB0eXBlIG9mIHRoZSBwYXJlbnQgJ2xlYWYnIG9yICdsZWFmLWxpc3QnIE1VU1QgYmUKICAgICAgICAgICAgJ2luc3RhbmNlLWlkZW50aWZpZXInLiBDb25zdHJhaW50cyBNQVkgYmUgdXNlZCBhcyBwYXJ0IG9mIHRoZSBwYXJlbnQKICAgICAgICAgICAgJ2xlYWYnIG9yICdsZWFmLWxpc3QnIHRvIGVuZm9yY2UgY2FyZGluYWxpdHkuCgogICAgICAgICAgICBUaGUgaWRlbnRpZmllciBvZiB0aGUgcGFyZW50ICdsZWFmJyBvciAnbGVhZi1saXN0JyBpcyB1c2VkIGFzIG5hbWUKICAgICAgICAgICAgb2YgdGhlIHJvbGUgb2YgdGhlIEEtc2lkZSBvZiB0aGUgcmVsYXRpb25zaGlwLiBUaGUgbmFtZSBvZiB0aGUgcm9sZQogICAgICAgICAgICBpcyBzY29wZWQgdG8gdGhlIHR5cGUgb24gd2hpY2ggdGhlIEEtc2lkZSBpcyBkZWZpbmVkIGFuZCBNVVNUIGJlCiAgICAgICAgICAgIHVuaXF1ZSB3aXRoaW4gdGhlIHNjb3BlLgoKICAgICAgICAgICAgV2hpbGUgdGhlIHBhcmVudCAnbGVhZicgb3IgJ2xlYWYtbGlzdCcgZG9lcyBub3QgcmVzdWx0IGluIGEgcHJvcGVydHkKICAgICAgICAgICAgb2YgdGhlIHJlbGF0aW9uc2hpcCwgaXQgaXMgUkVDT01NRU5ERUQgdG8gYXZvaWQgdXNpbmcgdGhlIG5hbWUgb2YgYW4KICAgICAgICAgICAgZXhpc3RpbmcgdHlwZSBwcm9wZXJ0eSBhcyByb2xlIG5hbWUgdG8gYXZvaWQgcG90ZW50aWFsIGFtYmlndWl0aWVzCiAgICAgICAgICAgIGJldHdlZW4gcHJvcGVydGllcyBvZiBhIHR5cGUsIGFuZCByb2xlcyBvZiBhIHJlbGF0aW9uc2hpcCBvbiB0aGUKICAgICAgICAgICAgdHlwZS4KCiAgICAgICAgICAgIFRoZSBhcmd1bWVudCBpcyB0aGUgbmFtZSBvZiB0aGUgdHlwZSBvbiB3aGljaCB0aGUgQS1zaWRlIHJlc2lkZXMuCiAgICAgICAgICAgIElmIHRoZSB0eXBlIGlzIGRlY2xhcmVkIGluIGFub3RoZXIgbW9kdWxlLCB0aGUgdHlwZSBtdXN0IGJlCiAgICAgICAgICAgIHByZWZpeGVkLCBhbmQgYSBjb3JyZXNwb25kaW5nICdpbXBvcnQnIHN0YXRlbWVudCBiZSB1c2VkIHRvIGRlY2xhcmUKICAgICAgICAgICAgdGhlIHByZWZpeC4iOwoKICAgICAgICBhcmd1bWVudCBhU2lkZVR5cGU7CiAgICB9CgogICAgZXh0ZW5zaW9uIGJTaWRlIHsKICAgICAgICBkZXNjcmlwdGlvbgogICAgICAgICAgICAiRGVmaW5lcyB0aGUgQi1zaWRlIG9mIGEgcmVsYXRpb25zaGlwLgoKICAgICAgICAgICAgVGhlIHN0YXRlbWVudCBNVVNUIG9ubHkgYmUgYSBzdWJzdGF0ZW1lbnQgb2YgYSAnbGVhZicgb3IgJ2xlYWYtbGlzdCcKICAgICAgICAgICAgc3RhdGVtZW50LCB3aGljaCBpdHNlbGYgbXVzdCBiZSBhIHN1YnN0YXRlbWVudCBvZiB0aGUKICAgICAgICAgICAgJ3VuaS1kaXJlY3Rpb25hbC10b3BvbG9neS1yZWxhdGlvbnNoaXAnIHN0YXRlbWVudC4KCiAgICAgICAgICAgIFRoZSBkYXRhIHR5cGUgb2YgdGhlIHBhcmVudCAnbGVhZicgb3IgJ2xlYWYtbGlzdCcgTVVTVCBiZQogICAgICAgICAgICAnaW5zdGFuY2UtaWRlbnRpZmllcicuIENvbnN0cmFpbnRzIE1BWSBiZSB1c2VkIGFzIHBhcnQgb2YgdGhlIHBhcmVudAogICAgICAgICAgICAnbGVhZicgb3IgJ2xlYWYtbGlzdCcgdG8gZW5mb3JjZSBjYXJkaW5hbGl0eS4KCiAgICAgICAgICAgIFRoZSBpZGVudGlmaWVyIG9mIHRoZSBwYXJlbnQgJ2xlYWYnIG9yICdsZWFmLWxpc3QnIGlzIHVzZWQgYXMgbmFtZQogICAgICAgICAgICBvZiB0aGUgcm9sZSBvZiB0aGUgQi1zaWRlIG9mIHRoZSByZWxhdGlvbnNoaXAuIFRoZSBuYW1lIG9mIHRoZSByb2xlCiAgICAgICAgICAgIGlzIHNjb3BlZCB0byB0aGUgdHlwZSBvbiB3aGljaCB0aGUgQi1zaWRlIGlzIGRlZmluZWQgYW5kIE1VU1QgYmUKICAgICAgICAgICAgdW5pcXVlIHdpdGhpbiB0aGUgc2NvcGUuCgogICAgICAgICAgICBXaGlsZSB0aGUgcGFyZW50ICdsZWFmJyBvciAnbGVhZi1saXN0JyBkb2VzIG5vdCByZXN1bHQgaW4gYSBwcm9wZXJ0eQogICAgICAgICAgICBvZiB0aGUgcmVsYXRpb25zaGlwLCBpdCBpcyBSRUNPTU1FTkRFRCB0byBhdm9pZCB1c2luZyB0aGUgbmFtZSBvZiBhbgogICAgICAgICAgICBleGlzdGluZyB0eXBlIHByb3BlcnR5IGFzIHJvbGUgbmFtZSB0byBhdm9pZCBwb3RlbnRpYWwgYW1iaWd1aXRpZXMKICAgICAgICAgICAgYmV0d2VlbiBwcm9wZXJ0aWVzIG9mIGEgdHlwZSwgYW5kIHJvbGVzIG9mIGEgcmVsYXRpb25zaGlwIG9uIHRoZQogICAgICAgICAgICB0eXBlLgoKICAgICAgICAgICAgVGhlIGFyZ3VtZW50IGlzIHRoZSBuYW1lIG9mIHRoZSB0eXBlIG9uIHdoaWNoIHRoZSBCLXNpZGUgcmVzaWRlcy4KICAgICAgICAgICAgSWYgdGhlIHR5cGUgaXMgZGVjbGFyZWQgaW4gYW5vdGhlciBtb2R1bGUsIHRoZSB0eXBlIG11c3QgYmUKICAgICAgICAgICAgcHJlZml4ZWQsIGFuZCBhIGNvcnJlc3BvbmRpbmcgJ2ltcG9ydCcgc3RhdGVtZW50IGJlIHVzZWQgdG8gZGVjbGFyZQogICAgICAgICAgICB0aGUgcHJlZml4LiI7CgogICAgICAgIGFyZ3VtZW50IGJTaWRlVHlwZTsKICAgIH0KCiAgICBleHRlbnNpb24gZG9tYWluIHsKICAgICAgICBkZXNjcmlwdGlvbiAiS2V5d29yZCB1c2VkIHRvIGNhcnJ5IGRvbWFpbiBpbmZvcm1hdGlvbi4iOwogICAgICAgIGFyZ3VtZW50IGRvbWFpbk5hbWU7CiAgICB9CgogICAgZXh0ZW5zaW9uIGxhYmVsIHsKICAgICAgICBkZXNjcmlwdGlvbgogICAgICAgICAgICAiVGhlIGxhYmVsIGNhbiBiZSB1c2VkIHRvIGdpdmUgbW9kdWxlcyBhbmQgc3VibW9kdWxlcyBhIHNlbWFudGljCiAgICAgICAgICAgIHZlcnNpb24sIGluIGFkZGl0aW9uIHRvIHRoZWlyIHJldmlzaW9uLgoKICAgICAgICAgICAgVGhlIGZvcm1hdCBvZiB0aGUgbGFiZWwgaXMgJ3gueS56JyAtIGV4cHJlc3NlZCBhcyBwYXR0ZXJuLCBpdCBpcwogICAgICAgICAgICBbMC05XStcXC5bMC05XStcXC5bMC05XSsKCiAgICAgICAgICAgIFRoZSBzdGF0ZW1lbnQgTVVTVCBvbmx5IGJlIGEgc3Vic3RhdGVtZW50IG9mIHRoZSByZXZpc2lvbiBzdGF0ZW1lbnQuCiAgICAgICAgICAgIFplcm8gb3Igb25lIHJldmlzaW9uIGxhYmVsIHN0YXRlbWVudHMgcGVyIHBhcmVudCBzdGF0ZW1lbnQgYXJlCiAgICAgICAgICAgIGFsbG93ZWQuCgogICAgICAgICAgICBSZXZpc2lvbiBsYWJlbHMgTVVTVCBiZSB1bmlxdWUgYW1vbmdzdCBhbGwgcmV2aXNpb25zIG9mIGEgbW9kdWxlIG9yCiAgICAgICAgICAgIHN1Ym1vZHVsZS4iOwoKICAgICAgICBhcmd1bWVudCBzZW12ZXJzaW9uOwogICAgfQp9
-o-ran-smo-teiv-common-yang-types urn:o-ran:smo-teiv-common-yang-types \N [] 2024-05-24 bW9kdWxlIG8tcmFuLXNtby10ZWl2LWNvbW1vbi15YW5nLXR5cGVzIHsKICAgIHlhbmctdmVyc2lvbiAxLjE7CiAgICBuYW1lc3BhY2UgInVybjpvLXJhbjpzbW8tdGVpdi1jb21tb24teWFuZy10eXBlcyI7CiAgICBwcmVmaXggb3ItdGVpdi10eXBlczsKCiAgICBpbXBvcnQgby1yYW4tc21vLXRlaXYtY29tbW9uLXlhbmctZXh0ZW5zaW9ucyB7IHByZWZpeCBvci10ZWl2LXlleHQ7IH0KCiAgICBpbXBvcnQgXzNncHAtY29tbW9uLXlhbmctdHlwZXMgeyBwcmVmaXggdHlwZXMzZ3BwOyB9CgogIG9yZ2FuaXphdGlvbiAiT1JBTiI7CiAgY29udGFjdCAiVGhlIEF1dGhvcnMiOwogIGRlc2NyaXB0aW9uCiAgIlRvcG9sb2d5IGFuZCBJbnZlbnRvcnkgY29tbW9uIHR5cGVzIG1vZGVsCgogIFRoaXMgbW9kZWwgY29udGFpbnMgcmUtdXNhYmxlIGRhdGEgdHlwZXMgdGhhdCB0b3BvbG9neSBhbmQgaW52ZW50b3J5IG1vZGVscwogIHdpbGwgZnJlcXVlbnRseSB1c2UgYXMgcGFydCBvZiB0eXBlcyBhbmQgcmVsYXRpb25zaGlwcy4KCiAgQ29weXJpZ2h0IChDKSAyMDI0IEVyaWNzc29uCiAgTW9kaWZpY2F0aW9ucyBDb3B5cmlnaHQgKEMpIDIwMjQgT3BlbkluZnJhIEZvdW5kYXRpb24gRXVyb3BlCgogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7CiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAoKICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKCiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUywKICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCgogIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIjsKCiAgICByZXZpc2lvbiAiMjAyNC0wNS0yNCIgewogICAgICAgIGRlc2NyaXB0aW9uICJJbml0aWFsIHJldmlzaW9uLiI7CiAgICAgICAgb3ItdGVpdi15ZXh0OmxhYmVsIDAuMy4wOwogICAgfQoKICAgIGdyb3VwaW5nIFRvcF9HcnBfVHlwZSB7CiAgICAgICAgZGVzY3JpcHRpb24gIkdyb3VwaW5nIGNvbnRhaW5pbmcgdGhlIGtleSBhdHRyaWJ1dGUgY29tbW9uIHRvIGFsbCB0eXBlcy4KICAgICAgICAgICAgQWxsIHR5cGVzIE1VU1QgdXNlIHRoaXMgZ3JvdXBpbmcuIjsKCiAgICAgICAgbGVhZiBpZCB7CiAgICAgICAgICAgIHR5cGUgc3RyaW5nOwogICAgICAgICAgICBkZXNjcmlwdGlvbiAiVW5pcXVlIGlkZW50aWZpZXIgb2YgdG9wb2xvZ3kgZW50aXRpZXMuIFJlcHJlc2VudHMgdGhlCiAgICAgICAgICAgICAgICBFbnRpdHkgSW5zdGFuY2UgSWRlbnRpZmllci4iOwogICAgICAgIH0KICAgIH0KCiAgICBjb250YWluZXIgZGVjb3JhdG9ycyB7CiAgICAgICAgZGVzY3JpcHRpb24KICAgICAgICAgICAgIlRoaXMgY29udGFpbmVyIHNlcnZlcyBhcyBleHRlbnNpb24gcG9pbnQgZm9yIGFwcGxpY2F0aW9ucyB3aXNoaW5nCiAgICAgICAgICAgIHRvIGRlZmluZSB0aGVpciBvd24gZGVjb3JhdG9ycy4gVGhpcyBpcyBkb25lIHZpYSBhdWdtZW50YXRpb25zLiBUaGV5CiAgICAgICAgICAgIGNhbiBvbmx5IGJlIGRlZmluZWQgaW4gbmFtZSB2YWx1ZSBwYWlyLgoKICAgICAgICAgICAgVGhpcyBpcyBhIGNvbnN1bWVyIGRhdGEgYW5kIGNhbiBiZSBhdHRhY2hlZCB0byBUb3BvbG9neSBFbnRpdHkgb3IKICAgICAgICAgICAgVG9wb2xvZ3kgUmVsYXRpb24gaW5zdGFuY2UsIG91dHNpZGUgb2YgdGhlIGRlY2xhcmVkIFRvcG9sb2d5IEVudGl0eQogICAgICAgICAgICBvciBUb3BvbG9neSBSZWxhdGlvbnNoaXAncyBhdHRyaWJ1dGVzLiBUaGlzIGNhbm5vdCBiZSBpbnN0YW50aWF0ZWQsCiAgICAgICAgICAgIGFuZCBpdCBNVVNUIE5PVCBiZSBhdWdtZW50ZWQgb3IgZGV2aWF0ZWQgaW4gYW55IHdheSwgdW5sZXNzIHN0YXRlZAogICAgICAgICAgICBvdGhlcndpc2UuIjsKICAgIH0KCiAgICBsZWFmLWxpc3QgY2xhc3NpZmllcnMgewogICAgICAgIGRlc2NyaXB0aW9uCiAgICAgICAgICAgICJDb25zdW1lciBkZWZpbmVkIHRhZ3MgdG8gdG9wb2xvZ3kgZW50aXRpZXMgYW5kIHJlbGF0aW9uc2hpcHMuCgogICAgICAgICAgICBUaGlzIGlzIGEgY29uc3VtZXIgZGF0YSBhbmQgY2FuIGJlIGF0dGFjaGVkIHRvIFRvcG9sb2d5IEVudGl0eSBvcgogICAgICAgICAgICBUb3BvbG9neSBSZWxhdGlvbiBpbnN0YW5jZSwgb3V0c2lkZSBvZiB0aGUgZGVjbGFyZWQgVG9wb2xvZ3kgRW50aXR5CiAgICAgICAgICAgIG9yIFRvcG9sb2d5IFJlbGF0aW9uc2hpcCdzIGF0dHJpYnV0ZXMuIFRoaXMgY2Fubm90IGJlIGluc3RhbnRpYXRlZCwKICAgICAgICAgICAgYW5kIGl0IE1VU1QgTk9UIGJlIGF1Z21lbnRlZCBvciBkZXZpYXRlZCBpbiBhbnkgd2F5LCB1bmxlc3Mgc3RhdGVkCiAgICAgICAgICAgIG90aGVyd2lzZS4iOwoKICAgICAgICB0eXBlIGlkZW50aXR5cmVmIHsgYmFzZSBjbGFzc2lmaWVyOyB9CiAgICB9CgogICAgbGVhZi1saXN0IHNvdXJjZUlkcyB7CiAgICAgICAgZGVzY3JpcHRpb24KICAgICAgICAgICAgIkFuIG9yZGVyZWQgbGlzdCBvZiBpZGVudGl0aWVzIHRoYXQgcmVwcmVzZW50IHRoZSBzZXQgb2YgbmF0aXZlCiAgICAgICAgICAgIHNvdXJjZSBpZGVudGlmaWVycyBmb3IgcGFydGljaXBhdGluZyBlbnRpdGllcy4KCiAgICAgICAgICAgIFRoaXMgaXMgYSBjb25zdW1lciBkYXRhIGFuZCBjYW4gYmUgYXR0YWNoZWQgdG8gVG9wb2xvZ3kgRW50aXR5IG9yCiAgICAgICAgICAgIFRvcG9sb2d5IFJlbGF0aW9uIGluc3RhbmNlLCBvdXRzaWRlIG9mIHRoZSBkZWNsYXJlZCBUb3BvbG9neSBFbnRpdHkKICAgICAgICAgICAgb3IgVG9wb2xvZ3kgUmVsYXRpb25zaGlwJ3MgYXR0cmlidXRlcy4gVGhpcyBjYW5ub3QgYmUgaW5zdGFudGlhdGVkLAogICAgICAgICAgICBhbmQgaXQgTVVTVCBOT1QgYmUgYXVnbWVudGVkIG9yIGRldmlhdGVkIGluIGFueSB3YXksIHVubGVzcyBzdGF0ZWQKICAgICAgICAgICAgb3RoZXJ3aXNlLiI7CgogICAgICAgIHR5cGUgc3RyaW5nOwogICAgICAgIG9yZGVyZWQtYnkgdXNlcjsKICAgIH0KCiAgICBjb250YWluZXIgbWV0YWRhdGEgewogICAgICAgIGRlc2NyaXB0aW9uCiAgICAgICAgICAgICJUaGlzIGNvbnRhaW5lciBzZXJ2ZXMgYXMgZXh0ZW5zaW9uIHBvaW50IHRvIGRlZmluZSBtZXRhZGF0YS4gVGhleQogICAgICAgICAgICBjYW4gb25seSBiZSBkZWZpbmVkIGluIG5hbWUgdmFsdWUgcGFpci4KCiAgICAgICAgICAgIFRoaXMgaXMgYSBjb25zdW1lciBkYXRhIGFuZCBjYW4gYmUgYXR0YWNoZWQgdG8gVG9wb2xvZ3kgRW50aXR5IG9yCiAgICAgICAgICAgIFRvcG9sb2d5IFJlbGF0aW9uIGluc3RhbmNlLCBvdXRzaWRlIG9mIHRoZSBkZWNsYXJlZCBUb3BvbG9neSBFbnRpdHkKICAgICAgICAgICAgb3IgVG9wb2xvZ3kgUmVsYXRpb25zaGlwJ3MgYXR0cmlidXRlcy4gVGhpcyBjYW5ub3QgYmUgaW5zdGFudGlhdGVkLAogICAgICAgICAgICBhbmQgaXQgTVVTVCBOT1QgYmUgYXVnbWVudGVkIG9yIGRldmlhdGVkIGluIGFueSB3YXksIHVubGVzcyBzdGF0ZWQKICAgICAgICAgICAgb3RoZXJ3aXNlLiI7CiAgICB9CgogICAgaWRlbnRpdHkgY2xhc3NpZmllcnsKICAgICAgICBkZXNjcmlwdGlvbiAiVGhlIGNsYXNzaWZpZXIgaXMgdXNlZCBhcyBhIGJhc2UgdG8gcHJvdmlkZSBhbGwgY2xhc3NpZmllcnMKICAgICAgICAgICAgd2l0aCBpZGVudGl0eS4gIjsKICAgIH0KfQ==
-o-ran-smo-teiv-equipment urn:o-ran:smo-teiv-equipment EQUIPMENT [] 2024-05-24 bW9kdWxlIG8tcmFuLXNtby10ZWl2LWVxdWlwbWVudCB7CiAgICB5YW5nLXZlcnNpb24gMS4xOwogICAgbmFtZXNwYWNlICJ1cm46by1yYW46c21vLXRlaXYtZXF1aXBtZW50IjsKICAgIHByZWZpeCBvci10ZWl2LWVxdWlwOwoKICAgIGltcG9ydCBvLXJhbi1zbW8tdGVpdi1jb21tb24teWFuZy10eXBlcyB7cHJlZml4IG9yLXRlaXYtdHlwZXM7IH0KCiAgICBpbXBvcnQgby1yYW4tc21vLXRlaXYtY29tbW9uLXlhbmctZXh0ZW5zaW9ucyB7cHJlZml4IG9yLXRlaXYteWV4dDsgfQoKICAgIGltcG9ydCBpZXRmLWdlby1sb2NhdGlvbiB7CiAgICAgICAgcHJlZml4IGdlbzsKICAgICAgICByZWZlcmVuY2UgIlJGQyA5MTc5OiBBIFlBTkcgR3JvdXBpbmcgZm9yIEdlb2dyYXBoaWMgTG9jYXRpb25zIjsKICAgIH0KCiAgICBvcmdhbml6YXRpb24gIk9SQU4iOwogICAgY29udGFjdCAiVGhlIEF1dGhvcnMiOwogICAgZGVzY3JpcHRpb24KICAgICJSQU4gRXF1aXBtZW50IHRvcG9sb2d5IG1vZGVsLgoKICAgIFRoaXMgbW9kZWwgY29udGFpbnMgdGhlIHRvcG9sb2d5IGVudGl0aWVzIGFuZCByZWxhdGlvbnMgaW4gdGhlCiAgICBSQU4gRXF1aXBtZW50IGRvbWFpbiwgd2hpY2ggaXMgbW9kZWxsZWQgdG8gdW5kZXJzdGFuZCB0aGUgcGh5c2ljYWwKICAgIGxvY2F0aW9uIG9mIGVxdWlwbWVudCBzdWNoIGFzIGFudGVubmFzIGFzc29jaWF0ZWQgd2l0aCBhIGNlbGwvY2FycmllcgogICAgYW5kIHRoZWlyIHJlbGV2YW50IHByb3BlcnRpZXMgZS5nLiB0aWx0LCBtYXggcG93ZXIgZXRjLgoKICAgIENvcHlyaWdodCAoQykgMjAyNCBFcmljc3NvbgogICAgTW9kaWZpY2F0aW9ucyBDb3B5cmlnaHQgKEMpIDIwMjQgT3BlbkluZnJhIEZvdW5kYXRpb24gRXVyb3BlCgogICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTsKICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KICAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAoKICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAoKICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUywKICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgogICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCI7CgogICAgcmV2aXNpb24gIjIwMjQtMDUtMjQiIHsKICAgICAgICBkZXNjcmlwdGlvbiAiSW5pdGlhbCByZXZpc2lvbi4iOwogICAgICAgIG9yLXRlaXYteWV4dDpsYWJlbCAwLjMuMDsKICAgIH0KCiAgICBvci10ZWl2LXlleHQ6ZG9tYWluIEVRVUlQTUVOVDsKCiAgICBsaXN0IEFudGVubmFNb2R1bGUgewogICAgICAgIGRlc2NyaXB0aW9uICJBbiBBbnRlbm5hIE1vZHVsZSByZXByZXNlbnRzIHRoZSBwaHlzaWNhbCBhc3BlY3Qgb2YgYW4KICAgICAgICAgICAgYW50ZW5uYS4iOwoKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6VG9wX0dycF9UeXBlOwogICAgICAgIGtleSBpZDsKCiAgICAgICAgY29udGFpbmVyIGF0dHJpYnV0ZXMgewogICAgICAgICAgICBsZWFmIGFudGVubmFNb2RlbE51bWJlciB7CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiVmVuZG9yLXNwZWNpZmljIGFudGVubmEgbW9kZWwgaWRlbnRpZmllci4gVGhpcwogICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSBpcyBwYXJ0IG9mIEFJU0cgdjMgQURCIFN0YW5kYXJkIGFuZCBoYXMgbm8KICAgICAgICAgICAgICAgICAgICBvcGVyYXRpb25hbCBpbXBhY3QuIjsKICAgICAgICAgICAgICAgIHR5cGUgc3RyaW5nOwogICAgICAgICAgICB9CgogICAgICAgICAgICBsZWFmIG1lY2hhbmljYWxBbnRlbm5hQmVhcmluZyB7CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiQW50ZW5uYSBiZWFyaW5nIG9uIGFudGVubmEgc3VidW5pdCB3aGVyZSBhbnRlbm5hCiAgICAgICAgICAgICAgICAgICAgdW5pdCBpcyBpbnN0YWxsZWQuIjsKICAgICAgICAgICAgICAgIHR5cGUgaW50MzI7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGxlYWYgbWVjaGFuaWNhbEFudGVubmFUaWx0IHsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJUaGUgZml4ZWQgYW50ZW5uYSB0aWx0IG9mIHRoZSBpbnN0YWxsYXRpb24sIGRlZmluZWQKICAgICAgICAgICAgICAgICAgICBhcyB0aGUgaW5jbGluYXRpb24gb2YgdGhlIGFudGVubmEgZWxlbWVudCByZXNwZWN0IHRvIHRoZQogICAgICAgICAgICAgICAgICAgIHZlcnRpY2FsIHBsYW5lLiBJdCBpcyBhIHNpZ25lZCB2YWx1ZS4gUG9zaXRpdmUgaW5kaWNhdGVzCiAgICAgICAgICAgICAgICAgICAgZG93bnRpbHQsIGFuZCBuZWdhdGl2ZSBpbmRpY2F0ZXMgdXB0aWx0LiI7CiAgICAgICAgICAgICAgICB0eXBlIGludDMyOwogICAgICAgICAgICB9CgogICAgICAgICAgICBsZWFmIHBvc2l0aW9uV2l0aGluU2VjdG9yIHsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJBbnRlbm5hIHVuaXQgcG9zaXRpb24gd2l0aGluIHNlY3Rvci4gVGhpcyBhdHRyaWJ1dGUKICAgICAgICAgICAgICAgICAgICBpcyBwYXJ0IG9mIEFJU0cgdjMgQURCIFN0YW5kYXJkIGFuZCBoYXMgbm8gb3BlcmF0aW9uYWwKICAgICAgICAgICAgICAgICAgICBpbXBhY3QuIjsKICAgICAgICAgICAgICAgIHR5cGUgc3RyaW5nOwogICAgICAgICAgICB9CgogICAgICAgICAgICBsZWFmIHRvdGFsVGlsdCB7CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiVG90YWwgYW50ZW5uYSBlbGV2YXRpb24gaW5jbHVkaW5nIHRoZSBpbnN0YWxsZWQKICAgICAgICAgICAgICAgICAgICB0aWx0IGFuZCB0aGUgdGlsdCBhcHBsaWVkIGJ5IHRoZSBSZW1vdGUgRWxlY3RyaWNhbAogICAgICAgICAgICAgICAgICAgIFRpbHQgKFJFVCkuIjsKICAgICAgICAgICAgICAgIHR5cGUgaW50MzI7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGxlYWYgZWxlY3RyaWNhbEFudGVubmFUaWx0IHsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJFbGVjdHJpY2FsbHktY29udHJvbGxlZCB0aWx0IG9mIG1haW4gYmVhbSBtYXhpbXVtCiAgICAgICAgICAgICAgICAgICAgd2l0aCByZXNwZWN0IHRvIGRpcmVjdGlvbiBvcnRob2dvbmFsIHRvIGFudGVubmEgZWxlbWVudAogICAgICAgICAgICAgICAgICAgIGF4aXMgKHNlZSAzR1BQIFRTIDI1LjQ2NikuIFZhbHVlIGlzIHNpZ25lZDsgdGlsdCBkb3duIGlzCiAgICAgICAgICAgICAgICAgICAgcG9zaXRpdmUsIHRpbHQgdXAgaXMgbmVnYXRpdmUuIjsKICAgICAgICAgICAgICAgIHR5cGUgaW50MzI7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGxlYWYtbGlzdCBhbnRlbm5hQmVhbVdpZHRoIHsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJUaGUgYW5ndWxhciBzcGFuIG9mIHRoZSBtYWluIGxvYmUgb2YgdGhlIGFudGVubmEKICAgICAgICAgICAgICAgICAgICByYWRpYXRpb24gcGF0dGVybiBpbiB0aGUgaG9yaXpvbnRhbCBwbGFuZS4gTWVhc3VyZWQgaW4KICAgICAgICAgICAgICAgICAgICBkZWdyZWVzLiI7CiAgICAgICAgICAgICAgICB0eXBlIHVpbnQzMjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgdXNlcyBnZW86Z2VvLWxvY2F0aW9uOwogICAgICAgIH0KICAgIH0KCiAgICBsaXN0IFNpdGUgewogICAgICAgIGRlc2NyaXB0aW9uICJBIHNpdGUgaXMgYSBwaHlzaWNhbCBsb2NhdGlvbiB3aGVyZSBhbiBlcXVpcG1lbnQgY2FuIGJlCiAgICAgICAgICAgIGluc3RhbGxlZC4iOwoKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6VG9wX0dycF9UeXBlOwogICAgICAgIGtleSBpZDsKCiAgICAgICAgY29udGFpbmVyIGF0dHJpYnV0ZXMgewogICAgICAgICAgICBsZWFmIG5hbWUgewogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIk5hbWUgb2YgU2l0ZSI7CiAgICAgICAgICAgICAgICB0eXBlIHN0cmluZzsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgdXNlcyBnZW86Z2VvLWxvY2F0aW9uOwoKICAgICAgICB9CiAgICB9CgogICAgb3ItdGVpdi15ZXh0OmJpRGlyZWN0aW9uYWxUb3BvbG9neVJlbGF0aW9uc2hpcCBBTlRFTk5BTU9EVUxFX0lOU1RBTExFRF9BVF9TSVRFIHsgLy8gMC4ubiB0byAwLi4xCgogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICAgICAga2V5IGlkOwoKICAgICAgICBsZWFmIGluc3RhbGxlZC1hdC1zaXRlIHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIkFudGVubmEgTW9kdWxlIGluc3RhbGxlZCBhdCBTaXRlLiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDphU2lkZSBBbnRlbm5hTW9kdWxlOwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgfQoKICAgICAgICBsZWFmLWxpc3QgaW5zdGFsbGVkLWFudGVubmFNb2R1bGUgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiU2l0ZSB3aGVyZSBBbnRlbm5hIE1vZHVsZSBpcyBpbnN0YWxsZWQuIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmJTaWRlIFNpdGU7CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICB9CiAgICB9Cn0=
-o-ran-smo-teiv-oam urn:o-ran:smo-teiv-oam OAM [] 2024-05-24 bW9kdWxlIG8tcmFuLXNtby10ZWl2LW9hbSB7CiAgICB5YW5nLXZlcnNpb24gMS4xOwogICAgbmFtZXNwYWNlICJ1cm46by1yYW46c21vLXRlaXYtb2FtIjsKICAgIHByZWZpeCBvci10ZWl2LW9hbTsKCiAgICBpbXBvcnQgby1yYW4tc21vLXRlaXYtY29tbW9uLXlhbmctdHlwZXMgeyBwcmVmaXggb3ItdGVpdi10eXBlczsgfQoKICAgIGltcG9ydCBvLXJhbi1zbW8tdGVpdi1jb21tb24teWFuZy1leHRlbnNpb25zIHsgcHJlZml4IG9yLXRlaXYteWV4dDsgfQoKICAgIG9yZ2FuaXphdGlvbiAiT1JBTiI7CiAgICBjb250YWN0ICJUaGUgQXV0aG9ycyI7CiAgICBkZXNjcmlwdGlvbiAKICAgICJSQU4gTyZNIHRvcG9sb2d5IG1vZGVsLgoKICAgIFRoaXMgbW9kZWwgY29udGFpbnMgdGhlIHRvcG9sb2d5IGVudGl0aWVzIGFuZCByZWxhdGlvbnMgaW4gdGhlCiAgICBSQU4gTyZNIGRvbWFpbiwgd2hpY2ggYXJlIGludGVuZGVkIHRvIHJlcHJlc2VudCBtYW5hZ2VtZW50IHN5c3RlbXMKICAgIGFuZCBtYW5hZ2VtZW50IGludGVyZmFjZXMuCgogICAgQ29weXJpZ2h0IChDKSAyMDI0IEVyaWNzc29uCiAgICBNb2RpZmljYXRpb25zIENvcHlyaWdodCAoQykgMjAyNCBPcGVuSW5mcmEgRm91bmRhdGlvbiBFdXJvcGUKCiAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpOwogICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CgogICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCgogICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLAogICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCiAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCiAgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KCiAgICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCI7CgogICAgcmV2aXNpb24gIjIwMjQtMDUtMjQiIHsKICAgICAgICBkZXNjcmlwdGlvbiAiSW5pdGlhbCByZXZpc2lvbi4iOwogICAgICAgIG9yLXRlaXYteWV4dDpsYWJlbCAwLjMuMDsKICAgIH0KCiAgICBvci10ZWl2LXlleHQ6ZG9tYWluIE9BTTsKCiAgICBsaXN0IE1hbmFnZWRFbGVtZW50IHsKICAgICAgICBkZXNjcmlwdGlvbiAiQSBNYW5hZ2VkIEVsZW1lbnQgKE1FKSBpcyBhIG5vZGUgaW50byBhIHRlbGVjb21tdW5pY2F0aW9uCiAgICAgICAgICAgIG5ldHdvcmsgcHJvdmlkaW5nIHN1cHBvcnQgYW5kL29yIHNlcnZpY2UgdG8gc3Vic2NyaWJlcnMuIEFuIE1FCiAgICAgICAgICAgIGNvbW11bmljYXRlcyB3aXRoIGEgbWFuYWdlciBhcHBsaWNhdGlvbiAoZGlyZWN0bHkgb3IgaW5kaXJlY3RseSkKICAgICAgICAgICAgb3ZlciBvbmUgb3IgbW9yZSBpbnRlcmZhY2VzIGZvciB0aGUgcHVycG9zZSBvZiBiZWluZyBtb25pdG9yZWQKICAgICAgICAgICAgYW5kL29yIGNvbnRyb2xsZWQuIjsKCiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOlRvcF9HcnBfVHlwZTsKICAgICAgICBrZXkgaWQ7CiAgICB9Cn0=
-o-ran-smo-teiv-ran urn:o-ran:smo-teiv-ran RAN [] 2024-07-15 bW9kdWxlIG8tcmFuLXNtby10ZWl2LXJhbiB7CiAgICB5YW5nLXZlcnNpb24gMS4xOwogICAgbmFtZXNwYWNlICJ1cm46by1yYW46c21vLXRlaXYtcmFuIjsKICAgIHByZWZpeCBvci10ZWl2LXJhbjsKCiAgICBpbXBvcnQgby1yYW4tc21vLXRlaXYtY29tbW9uLXlhbmctdHlwZXMge3ByZWZpeCBvci10ZWl2LXR5cGVzOyB9CgogICAgaW1wb3J0IG8tcmFuLXNtby10ZWl2LWNvbW1vbi15YW5nLWV4dGVuc2lvbnMge3ByZWZpeCBvci10ZWl2LXlleHQ7IH0KCiAgICBpbXBvcnQgXzNncHAtY29tbW9uLXlhbmctdHlwZXMgeyBwcmVmaXggdHlwZXMzZ3BwOyB9CgogICAgaW1wb3J0IGlldGYtZ2VvLWxvY2F0aW9uIHsKICAgICAgICBwcmVmaXggZ2VvOwogICAgICAgIHJlZmVyZW5jZSAiUkZDIDkxNzk6IEEgWUFORyBHcm91cGluZyBmb3IgR2VvZ3JhcGhpYyBMb2NhdGlvbnMiOwogICAgfQoKICAgIG9yZ2FuaXphdGlvbiAiT1JBTiI7CiAgICBjb250YWN0ICJUaGUgQXV0aG9ycyI7CiAgICBkZXNjcmlwdGlvbgogICAgICAgICJSQU4gTG9naWNhbCB0b3BvbG9neSBtb2RlbC4KCiAgICAgICAgVGhpcyBtb2RlbCBjb250YWlucyB0aGUgdG9wb2xvZ3kgZW50aXRpZXMgYW5kIHJlbGF0aW9ucyBpbiB0aGUKICAgICAgICBSQU4gTG9naWNhbCBkb21haW4sIHdoaWNoIHJlcHJlc2VudHMgdGhlIGZ1bmN0aW9uYWwgY2FwYWJpbGl0eQogICAgICAgIG9mIHRoZSBkZXBsb3llZCBSQU4gdGhhdCBhcmUgcmVsZXZhbnQgdG8gckFwcHMgdXNlIGNhc2VzLgoKICAgICAgICBDb3B5cmlnaHQgKEMpIDIwMjQgRXJpY3Nzb24KICAgICAgICBNb2RpZmljYXRpb25zIENvcHlyaWdodCAoQykgMjAyNCBPcGVuSW5mcmEgRm91bmRhdGlvbiBFdXJvcGUKCiAgICAgICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTsKICAgICAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAgICAgICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CgogICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAoKICAgICAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAgICAgICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLAogICAgICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgogICAgICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKICAgICAgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KCiAgICAgICAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAiOwoKICAgIHJldmlzaW9uICIyMDI0LTA1LTI0IiB7CiAgICAgICAgZGVzY3JpcHRpb24gIkluaXRpYWwgcmV2aXNpb24uIjsKICAgICAgICBvci10ZWl2LXlleHQ6bGFiZWwgMC4zLjA7CiAgICB9CgogICAgcmV2aXNpb24gIjIwMjQtMDctMTUiIHsKICAgICAgICBkZXNjcmlwdGlvbiAiVGhpcyByZXZpc2lvbiBhbGlnbnMgTy1SQU4gV29yayBHcm91cCAxMCBTdGFnZSAyIFNwZWNpZmljYXRpb24gKE8tUkFOLldHMTAuVEUmSVYtQ0lNSS4wLVIwMDQudjAyLjAwKSI7CiAgICAgICAgb3ItdGVpdi15ZXh0OmxhYmVsIDAuNC4wOwogICAgfQoKICAgIG9yLXRlaXYteWV4dDpkb21haW4gUkFOOwoKICAgIGxpc3QgT1JVRnVuY3Rpb24gewogICAgICAgIGRlc2NyaXB0aW9uICJPLVJBTiBSYWRpbyBVbml0IChPLVJVKS4KCiAgICAgICAgQSBsb2dpY2FsIG5vZGUgaG9zdGluZyBMb3ctUEhZIGxheWVyIGFuZCBSRiBwcm9jZXNzaW5nIGJhc2VkIG9uIGEKICAgICAgICBsb3dlciBsYXllciBmdW5jdGlvbmFsIHNwbGl0LiAgVGhpcyBpcyBzaW1pbGFyIHRvIDNHUFDigJlzIOKAnFRSUOKAnSBvcgogICAgICAgIOKAnFJSSOKAnSBidXQgbW9yZSBzcGVjaWZpYyBpbiBpbmNsdWRpbmcgdGhlIExvdy1QSFkgbGF5ZXIgKEZGVC9pRkZULAogICAgICAgIFBSQUNIIGV4dHJhY3Rpb24pLiBUaGUgTy1SVSB0ZXJtaW5hdGVzIHRoZSBPcGVuIEZyb250aGF1bCBpbnRlcmZhY2UKICAgICAgICAoYWxzbyBrbm93biBhcyBMTFMgaW50ZXJmYWNlKSBhcyB3ZWxsIGFzIExvdy1QSFkgZnVuY3Rpb25zIG9mIHRoZQogICAgICAgIHJhZGlvIGludGVyZmFjZSB0b3dhcmRzIHRoZSBVRS4gVGhpcyBpcyBkZXBsb3llZCBhcyBhIFBORi4gVGhlIE8tUlUKICAgICAgICB0ZXJtaW5hdGVzIHRoZSBPcGVuIEZyb250aGF1bCBNLVBsYW5lIGludGVyZmFjZSB0b3dhcmRzIHRoZSBPLURVCiAgICAgICAgYW5kIFNNTy4KCiAgICAgICAgTm90ZTogSW4gVG9wb2xvZ3ksIHlvdSBjYW4gY3JlYXRlLCByZWFkLCB1cGRhdGUsIGFuZCBkZWxldGUKICAgICAgICB0aGUgTy1SVSBvYmplY3QuIjsKCiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOlRvcF9HcnBfVHlwZTsKICAgICAgICBrZXkgaWQ7CgogICAgICAgIGNvbnRhaW5lciBhdHRyaWJ1dGVzIHsKICAgICAgICAgICAgbGVhZiBvcnVJZCB7CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiVW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBPLVJVIHdpdGhpbiBhIE9SVUZ1bmN0aW9uIjsKICAgICAgICAgICAgICAgIHR5cGUgaW50NjQ7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgbGlzdCBOZWFyUlRSSUNGdW5jdGlvbiB7CiAgICAgICAgZGVzY3JpcHRpb24gIk5lYXItUmVhbC1UaW1lIFJBTiBJbnRlbGxpZ2VudCBDb250cm9sbGVyIChOZWFyLVJUIFJJQykuCgogICAgICAgIEFuIE8tUkFOIE5ldHdvcmsgRnVuY3Rpb24gKE5GKSB0aGF0IGVuYWJsZXMgbmVhci1yZWFsLXRpbWUgY29udHJvbAogICAgICAgIGFuZCBvcHRpbWl6YXRpb24gb2YgUkFOIGVsZW1lbnRzIGFuZCByZXNvdXJjZXMgdmlhIGZpbmUtZ3JhaW5lZAogICAgICAgIGRhdGEgY29sbGVjdGlvbiBhbmQgYWN0aW9ucyBvdmVyIEUyIGludGVyZmFjZS4gSXQgbWF5IGluY2x1ZGUKICAgICAgICBBSS9NTCAoQXJ0aWZpY2lhbCBJbnRlbGxpZ2VuY2UgLyBNYWNoaW5lIExlYXJuaW5nKSB3b3JrZmxvdwogICAgICAgIGluY2x1ZGluZyBtb2RlbCB0cmFpbmluZywgaW5mZXJlbmNlLCBhbmQgdXBkYXRlcy4KCiAgICAgICAgTm90ZTogSW4gVG9wb2xvZ3ksIHlvdSBjYW4gY3JlYXRlLCByZWFkLCB1cGRhdGUsIGFuZCBkZWxldGUKICAgICAgICB0aGUgTmVhci1SVCBSSUMgb2JqZWN0LiI7CgogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICAgICAga2V5IGlkOwoKICAgICAgICBjb250YWluZXIgYXR0cmlidXRlcyB7CiAgICAgICAgICAgIGxlYWYgbmVhclJ0UmljSWQgewogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIlVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgTmVhci1SVCBSSUMgd2l0aGluIGEgTmVhclJUUklDRnVuY3Rpb24iOwogICAgICAgICAgICAgICAgdHlwZSBpbnQ2NDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgY29udGFpbmVyIHBMTU5JZCB7CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiUExNTiBpZGVudGlmaWVyIHRvIGJlIHVzZWQgYXMgcGFydCBvZiBnbG9iYWwgUkFOCiAgICAgICAgICAgICAgICBub2RlIGlkZW50aXR5IjsKICAgICAgICAgICAgICAgIHVzZXMgdHlwZXMzZ3BwOlBMTU5JZDsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBsaXN0IE9EVUZ1bmN0aW9uIHsKICAgICAgICBkZXNjcmlwdGlvbiAiTy1SQU4gRGlzdHJpYnV0ZWQgVW5pdCAoTy1EVSkuCgogICAgICAgIFRoZSBPLURVIGlzIGFuIE8tUkFOIE5GIGluIHRoZSBPLVJBTiBBcmNoaXRlY3R1cmUuIEFuIE8tRFUsIGNvbWJpbmVkCiAgICAgICAgd2l0aCBvbmUgb3IgbW9yZSBPLVJVKHMpIGNvbm5lY3RlZCB0byBpdCwgc3VwcG9ydHMgYW5kIGlzIGZ1bGx5CiAgICAgICAgY29tcGF0aWJsZSB3aXRoIHRoZSBmdW5jdGlvbnMgb2YgYSBnTkItRFUgYXMgZGVmaW5lZCBieSAzR1BQIFRTIDM4LjQwMS4KCiAgICAgICAgVGhlIGZvbGxvd2luZyBpcyB0cnVlIGZvciBhIE8tRFU6CiAgICAgICAgSXMgY29ubmVjdGVkIHRvIHRoZSBPLUNVLUNQIHRocm91Z2ggdGhlIEYxLUMgaW50ZXJmYWNlLiBJcwogICAgICAgIGNvbm5lY3RlZCB0byB0aGUgTy1DVS1VUCB0aHJvdWdoIHRoZSBGMS1VIGludGVyZmFjZS4gT25lIE8tRFUgaXMKICAgICAgICBjb25uZWN0ZWQgdG8gb25seSBvbmUgTy1DVS1DUC4gT25lIE8tRFUgY2FuIGJlIGNvbm5lY3RlZCB0bwogICAgICAgIG11bHRpcGxlIE8tQ1UtVVBzIHVuZGVyIHRoZSBjb250cm9sIG9mIHRoZSBzYW1lIE8tQ1UtQ1AuCgogICAgICAgIE5vdGU6IEEgZ05CIG1heSBjb25zaXN0IG9mIGEgTy1DVS1DUCwgbXVsdGlwbGUgTy1DVS1VUHMgYW5kCiAgICAgICAgbXVsdGlwbGUgTy1EVXMuIE8tRFUgaXMgYSBjb25jcmV0ZSBjbGFzcyB0aGF0IGV4dGVuZHMgdGhlIE5HLVJBTgogICAgICAgIG5vZGUgb2JqZWN0LiBJbiBUb3BvbG9neSwgeW91IGNhbiBjcmVhdGUsIHJlYWQsIHVwZGF0ZSwgYW5kIGRlbGV0ZQogICAgICAgIHRoZSBnTkItRFUgb2JqZWN0LiI7CgogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICAgICAga2V5IGlkOwoKICAgICAgICBjb250YWluZXIgYXR0cmlidXRlcyB7CiAgICAgICAgICAgIGxlYWYgZ05CRFVJZCB7CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiVW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBEVSB3aXRoaW4gYSBnTm9kZUIiOwogICAgICAgICAgICAgICAgdHlwZSBpbnQ2NDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbGVhZiBnTkJJZCB7CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiSWRlbnRpdHkgb2YgZ05vZGVCIHdpdGhpbiBhIFBMTU4iOwogICAgICAgICAgICAgICAgdHlwZSBpbnQ2NDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbGVhZiBnTkJJZExlbmd0aCB7CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiTGVuZ3RoIG9mIGdOQklkIGJpdCBzdHJpbmcgcmVwcmVzZW50YXRpb24iOwogICAgICAgICAgICAgICAgdHlwZSBpbnQzMjsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBsaXN0IE9DVUNQRnVuY3Rpb24gewogICAgICAgIGRlc2NyaXB0aW9uICJPLVJBTiBDZW50cmFsaXplZCBVbml0IENvbnRyb2wgUGxhbmUgKE8tQ1UtQ1ApCgogICAgICAgIFRoaXMgaXMgYSBsb2dpY2FsIG5vZGUgaG9zdGluZyB0aGUgUmFkaW8gUmVzb3VyY2UgQ29udHJvbCAoUlJDKSBhbmQKICAgICAgICB0aGUgY29udHJvbCBwbGFuZSBwYXJ0IG9mIHRoZSBQYWNrZXQgRGF0YSBDb252ZXJnZW5jZSBQcm90b2NvbAogICAgICAgIChQRENQKS4gVGhlIE8tQ1UtQ1AgdGVybWluYXRlcyB0aGUgRTEgaW50ZXJmYWNlIGNvbm5lY3RlZCB3aXRoCiAgICAgICAgdGhlIE8tQ1UtVVAgYW5kIHRoZSBGMS1DIGludGVyZmFjZSBjb25uZWN0ZWQgd2l0aCB0aGUgTy1SQU4KICAgICAgICBEaXN0cmlidXRlZCBVbml0IChPLURVKS4KCiAgICAgICAgVGhlIGZvbGxvd2luZyBpcyB0cnVlIGZvciBhIE8tQ1UtQ1A6CiAgICAgICAgSXMgY29ubmVjdGVkIHRvIHRoZSBPLURVIHRocm91Z2ggdGhlIEYxLUMgaW50ZXJmYWNlLiBJcyBjb25uZWN0ZWQKICAgICAgICB0byB0aGUgTy1DVS1VUCB0aHJvdWdoIHRoZSBFMSBpbnRlcmZhY2UuIE9ubHkgb25lIE8tQ1UtQ1AgaXMKICAgICAgICBjb25uZWN0ZWQgdG8gb25lIE8tRFUuIE9ubHkgb25lIE8tQ1UtQ1AgaXMgY29ubmVjdGVkIHRvIG9uZQogICAgICAgIE8tQ1UtVVAuIE9uZSBPLURVIGNhbiBiZSBjb25uZWN0ZWQgdG8gbXVsdGlwbGUgTy1DVS1VUHMgdW5kZXIKICAgICAgICB0aGUgY29udHJvbCBvZiB0aGUgc2FtZSBPLUNVLUNQLiBPbmUgTy1DVS1VUCBjYW4gYmUgY29ubmVjdGVkIHRvCiAgICAgICAgbXVsdGlwbGUgRFVzIHVuZGVyIHRoZSBjb250cm9sIG9mIHRoZSBzYW1lIE8tQ1UtQ1AuCgogICAgICAgIE5vdGU6IEEgZ05CIG1heSBjb25zaXN0IG9mIGEgTy1DVS1DUCwgbXVsdGlwbGUgTy1DVS1VUHMgYW5kCiAgICAgICAgbXVsdGlwbGUgTy1EVXMuIEFuIE8tQ1UtQ1AgaXMgYSBjb25jcmV0ZSBjbGFzcyB0aGF0IGV4dGVuZHMgdGhlCiAgICAgICAgTkctUkFOIG5vZGUgb2JqZWN0LiBJbiBUb3BvbG9neSwgeW91IGNhbiBjcmVhdGUsIHJlYWQsIHVwZGF0ZSwgYW5kCiAgICAgICAgZGVsZXRlIHRoZSBPLUNVLUNQIG9iamVjdC4iOwoKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6VG9wX0dycF9UeXBlOwogICAgICAgIGtleSBpZDsKCiAgICAgICAgY29udGFpbmVyIGF0dHJpYnV0ZXMgewogICAgICAgICAgICBsZWFmIGdOQkNVTmFtZSB7CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiTmFtZSBvZiBnTm9kZUItQ1UiOwogICAgICAgICAgICAgICAgdHlwZSBzdHJpbmc7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGxlYWYgZ05CSWQgewogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIklkZW50aXR5IG9mIGdOb2RlQiB3aXRoaW4gYSBQTE1OIjsKICAgICAgICAgICAgICAgIHR5cGUgaW50NjQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGxlYWYgZ05CSWRMZW5ndGggewogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIkxlbmd0aCBvZiBnTkJJZCBiaXQgc3RyaW5nIHJlcHJlc2VudGF0aW9uIjsKICAgICAgICAgICAgICAgIHR5cGUgaW50MzI7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGNvbnRhaW5lciBwTE1OSWQgewogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIlBMTU4gaWRlbnRpZmllciB0byBiZSB1c2VkIGFzIHBhcnQgb2YgZ2xvYmFsIFJBTgogICAgICAgICAgICAgICAgbm9kZSBpZGVudGl0eSI7CiAgICAgICAgICAgICAgICB1c2VzIHR5cGVzM2dwcDpQTE1OSWQ7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgbGlzdCBPQ1VVUEZ1bmN0aW9uIHsKICAgICAgICBkZXNjcmlwdGlvbiAiTy1SQU4gQ2VudHJhbGl6ZWQgVW5pdCBVc2VyIFBsYW5lIChPLUNVLVVQKQoKICAgICAgICBBbiBPLUNVLVVQIGlzIGEgbG9naWNhbCBub2RlIGhvc3RpbmcgdGhlIFVzZXIgUGxhbmUgcGFydCBvZiB0aGUKICAgICAgICBQYWNrZXQgRGF0YSBDb252ZXJnZW5jZSBQcm90b2NvbCAoUERDUCkgYW5kIHRoZSBTZXJ2aWNlIERhdGEKICAgICAgICBBZGFwdGF0aW9uIFByb3RvY29sIChTREFQKS4gVGhlIE8tQ1UtVVAgdGVybWluYXRlcyB0aGUgRTEgaW50ZXJmYWNlCiAgICAgICAgY29ubmVjdGVkIHdpdGggdGhlIE8tQ1UtQ1AgYW5kIHRoZSBGMS1VIGludGVyZmFjZSBjb25uZWN0ZWQgd2l0aAogICAgICAgIHRoZSBPLVJBTiBEaXN0cmlidXRlZCBVbml0IChPLURVKS4KCiAgICAgICAgVGhlIGZvbGxvd2luZyBpcyB0cnVlIGZvciBhIE8tQ1UtVVA6CiAgICAgICAgSXMgY29ubmVjdGVkIHRvIHRoZSBPLURVIHRocm91Z2ggdGhlIEYxLVUgaW50ZXJmYWNlLiBJcyBjb25uZWN0ZWQKICAgICAgICB0byB0aGUgTy1DVS1DUCB0aHJvdWdoIHRoZSBFMSBpbnRlcmZhY2UuIE9uZSBPLUNVLVVQIGlzCiAgICAgICAgY29ubmVjdGVkIHRvIG9ubHkgb25lIE8tQ1UtQ1AuIE9uZSBPLURVIGNhbiBiZSBjb25uZWN0ZWQgdG8KICAgICAgICBtdWx0aXBsZSBPLUNVLVVQcyB1bmRlciB0aGUgY29udHJvbCBvZiB0aGUgc2FtZSBPLUNVLUNQLiBPbmUKICAgICAgICBPLUNVLVVQIGNhbiBiZSBjb25uZWN0ZWQgdG8gbXVsdGlwbGUgRFVzIHVuZGVyIHRoZSBjb250cm9sIG9mIHRoZQogICAgICAgIHNhbWUgTy1DVS1DUC4KCiAgICAgICAgTm90ZTogQSBnTkIgbWF5IGNvbnNpc3Qgb2YgYW4gTy1DVS1DUCwgbXVsdGlwbGUgTy1DVS1VUHMgYW5kCiAgICAgICAgbXVsdGlwbGUgTy1EVXMuIEFuIE8tQ1UtVVAgaXMgYSBjb25jcmV0ZSBjbGFzcyB0aGF0IGV4dGVuZHMgdGhlCiAgICAgICAgTkctUkFOIG5vZGUgb2JqZWN0LiBJbiBUb3BvbG9neSwgeW91IGNhbiBjcmVhdGUsIHJlYWQsIHVwZGF0ZSwgYW5kCiAgICAgICAgZGVsZXRlIHRoZSBPLUNVLVVQIG9iamVjdC4iOwoKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6VG9wX0dycF9UeXBlOwogICAgICAgIGtleSBpZDsKCiAgICAgICAgY29udGFpbmVyIGF0dHJpYnV0ZXMgewogICAgICAgICAgICBsZWFmIGdOQklkIHsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJJZGVudGl0eSBvZiBnTm9kZUIgd2l0aGluIGEgUExNTiI7CiAgICAgICAgICAgICAgICB0eXBlIGludDY0OwogICAgICAgICAgICB9CgogICAgICAgICAgICBsZWFmIGdOQklkTGVuZ3RoIHsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJMZW5ndGggb2YgZ05CSWQgYml0IHN0cmluZyByZXByZXNlbnRhdGlvbiI7CiAgICAgICAgICAgICAgICB0eXBlIGludDMyOwogICAgICAgICAgICB9CgogICAgICAgICAgICBsaXN0IHBMTU5JZExpc3QgewogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIkxpc3Qgb2YgUExNTiBpZGVudGlmaWVyIHRvIGJlIHVzZWQgYXMgcGFydCBvZiBnbG9iYWwgUkFOIG5vZGUgaWRlbnRpdHkiOwogICAgICAgICAgICAgICAgdXNlcyB0eXBlczNncHA6UExNTklkOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIGxpc3QgTlJDZWxsQ1UgewogICAgICAgIGRlc2NyaXB0aW9uICJSZXByZXNlbnRzIGFuIE5SIENlbGwgaW4gZ05vZGVCLUNVLgoKICAgICAgICA1RyBOUiBpcyBhIG5ldyByYWRpbyBhY2Nlc3MgdGVjaG5vbG9neSAoUkFUKSBkZXZlbG9wZWQgYnkgM0dQUCBmb3IKICAgICAgICB0aGUgNUcgKGZpZnRoIGdlbmVyYXRpb24pIG1vYmlsZSBuZXR3b3JrLiBJdCBpcyBkZXNpZ25lZCB0byBiZSB0aGUKICAgICAgICBnbG9iYWwgc3RhbmRhcmQgZm9yIHRoZSBhaXIgaW50ZXJmYWNlIG9mIDVHIG5ldHdvcmtzLgoKICAgICAgICA1RyBOUiBoYXMgc3luY2hyb25pemF0aW9uIHNpZ25hbCB0aGF0IGlzIGtub3duIGFzIFByaW1hcnkKICAgICAgICBTeW5jaHJvbml6YXRpb24gU2lnbmFsIChQU1MpIGFuZCBTZWNvbmRhcnkgU3luY2hyb25pemF0aW9uCiAgICAgICAgU2lnbmFsIChTU1MpLiBUaGVzZSBzaWduYWxzIGFyZSBzcGVjaWZpYyB0byBOUiBwaHlzaWNhbCBsYXllciBhbmQKICAgICAgICBwcm92aWRlIHRoZSBmb2xsb3dpbmcgaW5mb3JtYXRpb24gcmVxdWlyZWQgYnkgVUUgZm9yIGRvd25saW5rCiAgICAgICAgc3luY2hyb25pemF0aW9uOiBQU1MgcHJvdmlkZXMgUmFkaW8gRnJhbWUgQm91bmRhcnkgKFBvc2l0aW9uIG9mIDFzdAogICAgICAgIFN5bWJvbCBpbiBhIFJhZGlvIGZyYW1lKSBTU1MgcHJvdmlkZXMgU3ViZnJhbWUgQm91bmRhcnkgKFBvc2l0aW9uIG9mCiAgICAgICAgMXN0IFN5bWJvbCBpbiBhIFN1YmZyYW1lKSBQaHlzaWNhbCBMYXllciBDZWxsIElEIChQQ0kpIGluZm9ybWF0aW9uCiAgICAgICAgdXNpbmcgYm90aCBQU1MgYW5kIFNTUy4iOwoKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6VG9wX0dycF9UeXBlOwogICAgICAgIGtleSBpZDsKCiAgICAgICAgY29udGFpbmVyIGF0dHJpYnV0ZXMgewogICAgICAgICAgICBsZWFmIGNlbGxMb2NhbElkIHsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJVc2VkIHRvZ2V0aGVyIHdpdGggZ05vZGVCIGlkZW50aWZpZXIgdG8gaWRlbnRpZnkgTlIKICAgICAgICAgICAgICAgIGNlbGwgaW4gUExNTi4gVXNlZCB0b2dldGhlciB3aXRoIGdOQklkIHRvIGZvcm0gTkNJLiI7CiAgICAgICAgICAgICAgICB0eXBlIGludDMyOwogICAgICAgICAgICB9CgogICAgICAgICAgICBjb250YWluZXIgcGxtbklkIHsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJQTE1OIElEIGZvciBOUiBDR0kuIElmIGVtcHR5LAogICAgICAgICAgICAgICAgR05CQ1VDUEZ1bmN0aW9uOjpwTE1OSWQgaXMgdXNlZCBmb3IgUExNTiBJRCBpbiBOUiBDR0kiOwogICAgICAgICAgICAgICAgdXNlcyB0eXBlczNncHA6UExNTklkOwogICAgICAgICAgICB9CgogICAgICAgICAgICBsZWFmIG5DSSB7CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiTlIgQ2VsbCBJZGVudGl0eSI7CiAgICAgICAgICAgICAgICB0eXBlIGludDY0OwogICAgICAgICAgICB9CgogICAgICAgICAgICBsZWFmIG5SVEFDIHsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJOUiBUcmFja2luZyBBcmVhIENvZGUgKFRBQykiOwogICAgICAgICAgICAgICAgdHlwZSBpbnQzMjsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBsaXN0IE5SQ2VsbERVIHsKICAgICAgICBkZXNjcmlwdGlvbiAiUmVwcmVzZW50cyBhbiBOUiBDZWxsIGluIGdOb2RlQi1EVS4KCiAgICAgICAgNUcgTlIgaXMgYSBuZXcgcmFkaW8gYWNjZXNzIHRlY2hub2xvZ3kgKFJBVCkgZGV2ZWxvcGVkIGJ5IDNHUFAgZm9yCiAgICAgICAgdGhlIDVHIChmaWZ0aCBnZW5lcmF0aW9uKSBtb2JpbGUgbmV0d29yay4gSXQgaXMgZGVzaWduZWQgdG8gYmUgdGhlCiAgICAgICAgZ2xvYmFsIHN0YW5kYXJkIGZvciB0aGUgYWlyIGludGVyZmFjZSBvZiA1RyBuZXR3b3Jrcy4KCiAgICAgICAgNUcgTlIgaGFzIHN5bmNocm9uaXphdGlvbiBzaWduYWwgdGhhdCBpcyBrbm93biBhcyBQcmltYXJ5CiAgICAgICAgU3luY2hyb25pemF0aW9uIHNpZ25hbCAoUFNTKSBhbmQgU2Vjb25kYXJ5IFN5bmNocm9uaXphdGlvbiBzaWduYWwKICAgICAgICAoU1NTKS4gVGhlc2Ugc2lnbmFscyBhcmUgc3BlY2lmaWMgdG8gTlIgcGh5c2ljYWwgbGF5ZXIgYW5kIHByb3ZpZGUKICAgICAgICB0aGUgZm9sbG93aW5nIGluZm9ybWF0aW9uIHJlcXVpcmVkIGJ5IFVFIGZvciBkb3dubGluawogICAgICAgIHN5bmNocm9uaXphdGlvbjogUFNTIHByb3ZpZGVzIFJhZGlvIEZyYW1lIEJvdW5kYXJ5IChQb3NpdGlvbiBvZiAxc3QKICAgICAgICBTeW1ib2wgaW4gYSBSYWRpbyBmcmFtZSkgU1NTIHByb3ZpZGVzIFN1YmZyYW1lIEJvdW5kYXJ5IChQb3NpdGlvbiBvZgogICAgICAgIDFzdCBTeW1ib2wgaW4gYSBTdWJmcmFtZSkgUGh5c2ljYWwgTGF5ZXIgQ2VsbCBJRCAoUENJKSBpbmZvcm1hdGlvbgogICAgICAgIHVzaW5nIGJvdGggUFNTIGFuZCBTU1MuIjsKCiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOlRvcF9HcnBfVHlwZTsKICAgICAgICBrZXkgaWQ7CgogICAgICAgIGNvbnRhaW5lciBhdHRyaWJ1dGVzIHsKICAgICAgICAgICAgbGVhZiBjZWxsTG9jYWxJZCB7CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiVXNlZCB0b2dldGhlciB3aXRoIGdOb2RlQiBpZGVudGlmaWVyIHRvIGlkZW50aWZ5IE5SCiAgICAgICAgICAgICAgICBjZWxsIGluIFBMTU4uIFVzZWQgdG9nZXRoZXIgd2l0aCBnTkJJZCB0byBmb3JtIE5DSS4iOwogICAgICAgICAgICAgICAgdHlwZSBpbnQzMjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbGVhZiBuQ0kgewogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIk5SIENlbGwgSWRlbnRpdHkuIjsKICAgICAgICAgICAgICAgIHR5cGUgaW50NjQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGxlYWYgblJQQ0kgewogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIlRoZSBQaHlzaWNhbCBDZWxsIElkZW50aXR5IChQQ0kpIG9mIHRoZSBOUiBjZWxsLiI7CiAgICAgICAgICAgICAgICB0eXBlIGludDMyOwogICAgICAgICAgICB9CgogICAgICAgICAgICBsZWFmIG5SVEFDIHsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJOUiBUcmFja2luZyBBcmVhIENvZGUgKFRBQykuIjsKICAgICAgICAgICAgICAgIHR5cGUgaW50MzI7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgbGlzdCBOUlNlY3RvckNhcnJpZXIgewogICAgICAgIGRlc2NyaXB0aW9uICJUaGUgTlIgU2VjdG9yIENhcnJpZXIgb2JqZWN0IHByb3ZpZGVzIHRoZSBhdHRyaWJ1dGVzIGZvcgogICAgICAgIGRlZmluaW5nIHRoZSBsb2dpY2FsIGNoYXJhY3RlcmlzdGljcyBvZiBhIGNhcnJpZXIgKGNlbGwpIGluIGEKICAgICAgICBzZWN0b3IuIEEgc2VjdG9yIGlzIGEgY292ZXJhZ2UgYXJlYSBhc3NvY2lhdGVkIHdpdGggYSBiYXNlIHN0YXRpb24KICAgICAgICBoYXZpbmcgaXRzIG93biBhbnRlbm5hcywgcmFkaW8gcG9ydHMsIGFuZCBjb250cm9sIGNoYW5uZWxzLiBUaGUKICAgICAgICBjb25jZXB0IG9mIHNlY3RvcnMgd2FzIGRldmVsb3BlZCB0byBpbXByb3ZlIGNvLWNoYW5uZWwgaW50ZXJmZXJlbmNlCiAgICAgICAgaW4gY2VsbHVsYXIgc3lzdGVtcywgYW5kIG1vc3Qgd2lyZWxlc3Mgc3lzdGVtcyB1c2UgdGhyZWUgc2VjdG9yCiAgICAgICAgY2VsbHMuIjsKCiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOlRvcF9HcnBfVHlwZTsKICAgICAgICBrZXkgaWQ7CgogICAgICAgIGNvbnRhaW5lciBhdHRyaWJ1dGVzIHsKICAgICAgICAgICAgbGVhZiBhcmZjbkRMIHsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJOUiBBYnNvbHV0ZSBSYWRpbyBGcmVxdWVuY3kgQ2hhbm5lbCBOdW1iZXIKICAgICAgICAgICAgICAgIChOUi1BUkZDTikgZm9yIGRvd25saW5rIjsKICAgICAgICAgICAgICAgIHR5cGUgaW50MzI7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGxlYWYgYXJmY25VTCB7CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiTlIgQWJzb2x1dGUgUmFkaW8gZnJlcXVlbmN5IENoYW5uZWwgTnVtYmVyCiAgICAgICAgICAgICAgICAoTlItQVJGQ04pIGZvciB1cGxpbmsuIjsKICAgICAgICAgICAgICAgIHR5cGUgaW50MzI7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGxlYWYgZnJlcXVlbmN5REwgewogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIlJGIFJlZmVyZW5jZSBGcmVxdWVuY3kgb2YgZG93bmxpbmsgY2hhbm5lbCI7CiAgICAgICAgICAgICAgICB0eXBlIGludDMyOwogICAgICAgICAgICB9CgogICAgICAgICAgICBsZWFmIGZyZXF1ZW5jeVVMIHsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJSRiBSZWZlcmVuY2UgRnJlcXVlbmN5IG9mIHVwbGluayBjaGFubmVsIjsKICAgICAgICAgICAgICAgIHR5cGUgaW50MzI7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGxlYWYgYlNDaGFubmVsQndETCB7CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiQlMgQ2hhbm5lbCBiYW5kd2lkdGggaW4gTUh6IGZvciBkb3dubGluay4iOwogICAgICAgICAgICAgICAgdHlwZSBpbnQzMjsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBsaXN0IEFudGVubmFDYXBhYmlsaXR5IHsKICAgICAgICBkZXNjcmlwdGlvbiAiVGhpcyBNTyBzZXJ2ZXMgYXMgYSBtYXBwaW5nIGJldHdlZW4gdGhlIGNlbGwgYW5kIHRoZSBSQlMKICAgICAgICBlcXVpcG1lbnQgdXNlZCB0byBwcm92aWRlIGNvdmVyYWdlIGluIGEgY2VydGFpbiBnZW9ncmFwaGljYWwgYXJlYS4KICAgICAgICBUaGUgTU8gYWxzbyBjb250cm9scyB0aGUgbWF4aW11bSBvdXRwdXQgcG93ZXIgb2YgdGhlIHNlY3Rvci4iOwoKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6VG9wX0dycF9UeXBlOwogICAgICAgIGtleSBpZDsKCiAgICAgICAgY29udGFpbmVyIGF0dHJpYnV0ZXMgewogICAgICAgICAgICBsZWFmLWxpc3QgZVV0cmFuRnFCYW5kcyB7CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiTGlzdCBvZiBMVEUgZnJlcXVlbmN5IGJhbmRzIHRoYXQgYXNzb2NpYXRlZAogICAgICAgICAgICAgICAgaGFyZHdhcmUgc3VwcG9ydHMiOwogICAgICAgICAgICAgICAgdHlwZSBzdHJpbmc7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGxlYWYtbGlzdCBnZXJhbkZxQmFuZHMgewogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIkxpc3Qgb2YgR0VSQU4gZnJlcXVlbmN5IGJhbmRzIHRoYXQgYXNzb2NpYXRlZAogICAgICAgICAgICAgICAgaGFyZHdhcmUgc3VwcG9ydHMiOwogICAgICAgICAgICAgICAgdHlwZSBzdHJpbmc7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGxlYWYtbGlzdCBuUkZxQmFuZHMgewogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIkxpc3Qgb2YgTlIgZnJlcXVlbmN5IGJhbmRzIGFzc29jaWF0ZWQgaGFyZHdhcmUKICAgICAgICAgICAgICAgIHN1cHBvcnRzIjsKICAgICAgICAgICAgICAgIHR5cGUgc3RyaW5nOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIGxpc3QgU2VjdG9yIHsKICAgICAgICBkZXNjcmlwdGlvbiAiQSBncm91cCBvZiBjby1sb2NhdGVkIENlbGxzIHRoYXQgaGF2ZSBhIHNoYXJlZAogICAgICAgIGNvdmVyYWdlIGFyZWEuIjsKCiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOlRvcF9HcnBfVHlwZTsKICAgICAgICBrZXkgaWQ7CgogICAgICAgIGNvbnRhaW5lciBhdHRyaWJ1dGVzIHsKICAgICAgICAgICAgbGVhZiBzZWN0b3JJZCB7CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiVW5pdmVyc2FsbHkgdW5pcXVlIElEIGdlbmVyYXRlZCBieSB0aGUgc2VjdG9yJ3MKICAgICAgICAgICAgICAgIGRpc2NvdmVyeSBtZWNoYW5pc20uIjsKICAgICAgICAgICAgICAgIHR5cGUgdWludDY0OwogICAgICAgICAgICB9CgogICAgICAgICAgICB1c2VzIGdlbzpnZW8tbG9jYXRpb247CgogICAgICAgICAgICBsZWFmIGF6aW11dGggewogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIkF2ZXJhZ2UgdmFsdWUgb2YgdGhlIGF6aW11dGhzIG9mIHRoZSBjZWxscwogICAgICAgICAgICAgICAgY29tcHJpc2luZyB0aGUgc2VjdG9yLCBkZXRlcm1pbmVkIGR1cmluZyBzZWN0b3IgZGlzY292ZXJ5LiI7CiAgICAgICAgICAgICAgICB0eXBlIGRlY2ltYWw2NHsKICAgICAgICAgICAgICAgICAgICBmcmFjdGlvbi1kaWdpdHMgNjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHVuaXRzICJkZWdyZWVzIjsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCgogICAgb3ItdGVpdi15ZXh0OmJpRGlyZWN0aW9uYWxUb3BvbG9neVJlbGF0aW9uc2hpcCBPRFVGVU5DVElPTl9QUk9WSURFU19OUkNFTExEVSB7IC8vIDEgdG8gMC4ubgoKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6VG9wX0dycF9UeXBlOwogICAgICAgIGtleSBpZDsKCiAgICAgICAgbGVhZi1saXN0IHByb3ZpZGVkLW5yQ2VsbER1IHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIk8tRFUgRnVuY3Rpb24gcHJvdmlkZXMgTlIgQ2VsbC1EVS4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YVNpZGUgT0RVRnVuY3Rpb247CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICB9CgogICAgICAgIGxlYWYgcHJvdmlkZWQtYnktb2R1RnVuY3Rpb24gewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiTlIgQ2VsbC1EVSBwcm92aWRlZCBieSBPLURVIEZ1bmN0aW9uLiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDpiU2lkZSBOUkNlbGxEVTsKICAgICAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgICAgICBtYW5kYXRvcnkgdHJ1ZTsKICAgICAgICB9CiAgICB9CgogICAgb3ItdGVpdi15ZXh0OmJpRGlyZWN0aW9uYWxUb3BvbG9neVJlbGF0aW9uc2hpcCBPRFVGVU5DVElPTl9QUk9WSURFU19OUlNFQ1RPUkNBUlJJRVIgeyAvLyAxIHRvIDAuLm4KCiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOlRvcF9HcnBfVHlwZTsKICAgICAgICBrZXkgaWQ7CgogICAgICAgIGxlYWYtbGlzdCBwcm92aWRlZC1uclNlY3RvckNhcnJpZXIgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiTy1EVSBGdW5jdGlvbiBwcm92aWRlcyBOUiBTZWN0b3IgQ2Fycmllci4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YVNpZGUgT0RVRnVuY3Rpb247CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICB9CgogICAgICAgIGxlYWYgcHJvdmlkZWQtYnktb2R1RnVuY3Rpb24gewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiTlIgU2VjdG9yIENhcnJpZXIgcHJvdmlkZWQgYnkgTy1EVSBGdW5jdGlvbi4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YlNpZGUgTlJTZWN0b3JDYXJyaWVyOwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgICAgIG1hbmRhdG9yeSB0cnVlOwogICAgICAgIH0KICAgIH0KCiAgICBvci10ZWl2LXlleHQ6YmlEaXJlY3Rpb25hbFRvcG9sb2d5UmVsYXRpb25zaGlwIE9DVUNQRlVOQ1RJT05fUFJPVklERVNfTlJDRUxMQ1UgeyAvLyAxIHRvIDAuLm4KCiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOlRvcF9HcnBfVHlwZTsKICAgICAgICBrZXkgaWQ7CgogICAgICAgIGxlYWYtbGlzdCBwcm92aWRlZC1uckNlbGxDdSB7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJPLUNVLUNQIEZ1bmN0aW9uIHByb3ZpZGVzIE5SIENlbGwtQ1UuIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmFTaWRlIE9DVUNQRnVuY3Rpb247CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICB9CgogICAgICAgIGxlYWYgcHJvdmlkZWQtYnktb2N1Y3BGdW5jdGlvbiB7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJOUiBDZWxsLUNVIHByb3ZpZGVkIGJ5IE8tQ1UtQ1AgRnVuY3Rpb24uIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmJTaWRlIE5SQ2VsbENVOwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgICAgIG1hbmRhdG9yeSB0cnVlOwogICAgICAgIH0KICAgIH0KCiAgICBvci10ZWl2LXlleHQ6YmlEaXJlY3Rpb25hbFRvcG9sb2d5UmVsYXRpb25zaGlwIE5SQ0VMTERVX1VTRVNfTlJTRUNUT1JDQVJSSUVSIHsgLy8gMC4uMSB0byAwLi5uCgogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICAgICAga2V5IGlkOwoKICAgICAgICBsZWFmLWxpc3QgdXNlZC1uclNlY3RvckNhcnJpZXIgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiTlIgQ2VsbC1EVSB1c2VzIE5SIFNlY3RvciBDYXJyaWVyLiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDphU2lkZSBOUkNlbGxEVTsKICAgICAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgIH0KCiAgICAgICAgbGVhZiB1c2VkLWJ5LW5yQ2VsbER1IHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIk5SIFNlY3RvciBDYXJyaWVyIHVzZWQgYnkgTlIgQ2VsbC1EVS4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YlNpZGUgTlJTZWN0b3JDYXJyaWVyOwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgfQogICAgfQoKICAgIG9yLXRlaXYteWV4dDpiaURpcmVjdGlvbmFsVG9wb2xvZ3lSZWxhdGlvbnNoaXAgTlJTRUNUT1JDQVJSSUVSX1VTRVNfQU5URU5OQUNBUEFCSUxJVFkgeyAvLyAwLi5uIHRvIDAuLjEKCiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOlRvcF9HcnBfVHlwZTsKICAgICAgICBrZXkgaWQ7CgogICAgICAgIGxlYWYgdXNlZC1hbnRlbm5hQ2FwYWJpbGl0eSB7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJOUiBTZWN0b3IgQ2FycmllciB1c2VzIEFudGVubmEgQ2FwYWJpbGl0eS4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YVNpZGUgTlJTZWN0b3JDYXJyaWVyOwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgfQoKICAgICAgICBsZWFmLWxpc3QgdXNlZC1ieS1uclNlY3RvckNhcnJpZXIgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiQW50ZW5uYSBDYXBhYmlsaXR5IHVzZWQgYnkgTlIgU2VjdG9yIENhcnJpZXIuIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmJTaWRlIEFudGVubmFDYXBhYmlsaXR5OwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgfQogICAgfQoKICAgIG9yLXRlaXYteWV4dDpiaURpcmVjdGlvbmFsVG9wb2xvZ3lSZWxhdGlvbnNoaXAgU0VDVE9SX0dST1VQU19OUkNFTExEVSB7IC8vIDAuLjEgdG8gMC4ubgoKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6VG9wX0dycF9UeXBlOwogICAgICAgIGtleSBpZDsKCiAgICAgICAgbGVhZi1saXN0IGdyb3VwZWQtbnJDZWxsRHUgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiU2VjdG9yIGdyb3VwcyBOUiBDZWxsLURVLiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDphU2lkZSBTZWN0b3I7CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICB9CgogICAgICAgIGxlYWYgZ3JvdXBlZC1ieS1zZWN0b3IgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiTlIgQ2VsbC1EVSBncm91cGVkIGJ5IFNlY3Rvci4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YlNpZGUgTlJDZWxsRFU7CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICB9CiAgICB9Cn0=
-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-07-15 bW9kdWxlIG8tcmFuLXNtby10ZWl2LXJlbC1jbG91ZC1yYW4gewogICAgeWFuZy12ZXJzaW9uIDEuMTsKICAgIG5hbWVzcGFjZSAidXJuOm8tcmFuOnNtby10ZWl2LXJlbC1jbG91ZC1yYW4iOwogICAgcHJlZml4IG9yLXRlaXYtY2xvdWR0b3JhbjsKCiAgICBpbXBvcnQgby1yYW4tc21vLXRlaXYtY29tbW9uLXlhbmctdHlwZXMge3ByZWZpeCBvci10ZWl2LXR5cGVzOyB9CgogICAgaW1wb3J0IG8tcmFuLXNtby10ZWl2LWNvbW1vbi15YW5nLWV4dGVuc2lvbnMge3ByZWZpeCBvci10ZWl2LXlleHQ7IH0KCiAgICBpbXBvcnQgby1yYW4tc21vLXRlaXYtY2xvdWQge3ByZWZpeCBvci10ZWl2LWNsb3VkOyB9CgogICAgaW1wb3J0IG8tcmFuLXNtby10ZWl2LXJhbiB7cHJlZml4IG9yLXRlaXYtcmFuOyB9CgogICAgb3JnYW5pemF0aW9uICJPUkFOIjsKICAgIGNvbnRhY3QgIlRoZSBBdXRob3JzIjsKICAgIGRlc2NyaXB0aW9uCiAgICAgICAgIlJBTiBDbG91ZCB0byBSQU4gTG9naWNhbCB0b3BvbG9neSBtb2RlbC4KCiAgICAgICAgVGhpcyBtb2RlbCBjb250YWlucyB0aGUgUkFOIENsb3VkIHRvIFJBTiBMb2dpY2FsIHRvcG9sb2d5IHJlbGF0aW9ucy4KCiAgICAgICAgQ29weXJpZ2h0IChDKSAyMDI0IEVyaWNzc29uCiAgICAgICAgTW9kaWZpY2F0aW9ucyBDb3B5cmlnaHQgKEMpIDIwMjQgT3BlbkluZnJhIEZvdW5kYXRpb24gRXVyb3BlCgogICAgICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7CiAgICAgICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogICAgICAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAoKICAgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKCiAgICAgICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogICAgICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUywKICAgICAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KICAgICAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCiAgICAgICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCgogICAgICAgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIjsKCiAgICByZXZpc2lvbiAiMjAyNC0wNS0wMiIgewogICAgICAgIGRlc2NyaXB0aW9uICJJbml0aWFsIHJldmlzaW9uLiI7CiAgICAgICAgb3ItdGVpdi15ZXh0OmxhYmVsIDAuMy4wOwogICAgfQoKICAgIHJldmlzaW9uICIyMDI0LTA3LTE1IiB7CiAgICAgICAgZGVzY3JpcHRpb24gIlRoaXMgcmV2aXNpb24gYWxpZ25zIE8tUkFOIFdvcmsgR3JvdXAgMTAgU3RhZ2UgMiBTcGVjaWZpY2F0aW9uIChPLVJBTi5XRzEwLlRFJklWLUNJTUkuMC1SMDA0LnYwMi4wMCkiOwogICAgICAgIG9yLXRlaXYteWV4dDpsYWJlbCAwLjQuMDsKICAgIH0KCiAgICBvci10ZWl2LXlleHQ6ZG9tYWluIFJFTF9DTE9VRF9SQU47CgogICAgb3ItdGVpdi15ZXh0OmJpRGlyZWN0aW9uYWxUb3BvbG9neVJlbGF0aW9uc2hpcCBORkRFUExPWU1FTlRfU0VSVkVTX09EVUZVTkNUSU9OIHsgLy8gMC4ubiB0byAwLi5tCgogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICAgICAga2V5IGlkOwoKICAgICAgICBsZWFmLWxpc3Qgc2VydmljZWQtb2R1RnVuY3Rpb24gewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiTy1EVSBGdW5jdGlvbiBzZXJ2aWNlZCBieSB0aGlzIE5GIERlcGxveW1lbnQuIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmFTaWRlIG9yLXRlaXYtY2xvdWQ6TkZEZXBsb3ltZW50OwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgfQoKICAgICAgICBsZWFmLWxpc3Qgc2VydmluZy1uRkRlcGxveW1lbnQgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiTkYgRGVwbG95bWVudCB0aGF0IHNlcnZlcyB0aGlzIE8tRFUgRnVuY3Rpb24uIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmJTaWRlIG9yLXRlaXYtcmFuOk9EVUZ1bmN0aW9uOwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgfQogICAgfQoKICAgIG9yLXRlaXYteWV4dDpiaURpcmVjdGlvbmFsVG9wb2xvZ3lSZWxhdGlvbnNoaXAgTkZERVBMT1lNRU5UX1NFUlZFU19PQ1VDUEZVTkNUSU9OIHsgLy8gMC4ubiB0byAwLi5tCgogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICAgICAga2V5IGlkOwoKICAgICAgICBsZWFmLWxpc3Qgc2VydmljZWQtb2N1Y3BGdW5jdGlvbiB7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJPLUNVLUNQIEZ1bmN0aW9uIHNlcnZpY2VkIGJ5IHRoaXMgTkYgRGVwbG95bWVudC4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YVNpZGUgb3ItdGVpdi1jbG91ZDpORkRlcGxveW1lbnQ7CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICB9CgogICAgICAgIGxlYWYtbGlzdCBzZXJ2aW5nLW5GRGVwbG95bWVudCB7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJORiBEZXBsb3ltZW50IHRoYXQgc2VydmVzIHRoaXMgTy1DVS1DUCBGdW5jdGlvbi4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YlNpZGUgb3ItdGVpdi1yYW46T0NVQ1BGdW5jdGlvbjsKICAgICAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgIH0KICAgIH0KCiAgICBvci10ZWl2LXlleHQ6YmlEaXJlY3Rpb25hbFRvcG9sb2d5UmVsYXRpb25zaGlwIE5GREVQTE9ZTUVOVF9TRVJWRVNfT0NVVVBGVU5DVElPTiB7IC8vIDAuLm4gdG8gMC4ubQoKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6VG9wX0dycF9UeXBlOwogICAgICAgIGtleSBpZDsKCiAgICAgICAgbGVhZi1saXN0IHNlcnZpY2VkLWduYmN1dXBGdW5jdGlvbiB7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJPLUNVLVVQIEZ1bmN0aW9uIHNlcnZpY2VkIGJ5IHRoaXMgTkYgRGVwbG95bWVudC4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YVNpZGUgb3ItdGVpdi1jbG91ZDpORkRlcGxveW1lbnQ7CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICB9CgogICAgICAgIGxlYWYtbGlzdCBzZXJ2aW5nLW5GRGVwbG95bWVudCB7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJORiBEZXBsb3ltZW50IHRoYXQgc2VydmVzIHRoaXMgTy1DVS1VUCBGdW5jdGlvbi4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YlNpZGUgb3ItdGVpdi1yYW46T0NVVVBGdW5jdGlvbjsKICAgICAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgIH0KICAgIH0KCiAgICBvci10ZWl2LXlleHQ6YmlEaXJlY3Rpb25hbFRvcG9sb2d5UmVsYXRpb25zaGlwIE5GREVQTE9ZTUVOVF9TRVJWRVNfTkVBUlJUUklDRlVOQ1RJT04geyAvLyAwLi5uIHRvIDAuLm0KCiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOlRvcF9HcnBfVHlwZTsKICAgICAgICBrZXkgaWQ7CgogICAgICAgIGxlYWYtbGlzdCBzZXJ2aWNlZC1uZWFyUlRSSUNGdW5jdGlvbiB7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJOZWFyUlRSSUNGdW5jdGlvbiBzZXJ2aWNlZCBieSB0aGlzIE5GIERlcGxveW1lbnQuIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmFTaWRlIG9yLXRlaXYtY2xvdWQ6TkZEZXBsb3ltZW50OwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgfQoKICAgICAgICBsZWFmLWxpc3Qgc2VydmluZy1uRkRlcGxveW1lbnQgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiTkYgRGVwbG95bWVudCB0aGF0IHNlcnZlcyB0aGlzIE5lYXJSVFJJQ0Z1bmN0aW9uLiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDpiU2lkZSBvci10ZWl2LXJhbjpOZWFyUlRSSUNGdW5jdGlvbjsKICAgICAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgIH0KICAgIH0KfQ==
-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 bW9kdWxlIG8tcmFuLXNtby10ZWl2LXJlbC1lcXVpcG1lbnQtcmFuIHsKICAgIHlhbmctdmVyc2lvbiAxLjE7CiAgICBuYW1lc3BhY2UgInVybjpvLXJhbjpzbW8tdGVpdi1yZWwtZXF1aXBtZW50LXJhbiI7CiAgICBwcmVmaXggb3ItdGVpdi1yZWwtZXF1aXByYW47CgogICAgaW1wb3J0IG8tcmFuLXNtby10ZWl2LWNvbW1vbi15YW5nLXR5cGVzIHsgcHJlZml4IG9yLXRlaXYtdHlwZXM7IH0KCiAgICBpbXBvcnQgby1yYW4tc21vLXRlaXYtY29tbW9uLXlhbmctZXh0ZW5zaW9ucyB7IHByZWZpeCBvci10ZWl2LXlleHQ7IH0KCiAgICBpbXBvcnQgby1yYW4tc21vLXRlaXYtZXF1aXBtZW50IHsgcHJlZml4IG9yLXRlaXYtZXF1aXA7IH0KCiAgICBpbXBvcnQgby1yYW4tc21vLXRlaXYtcmFuIHsgcHJlZml4IG9yLXRlaXYtcmFuOyB9CgoKICAgIG9yZ2FuaXphdGlvbiAiT1JBTiI7CiAgICBjb250YWN0ICJUaGUgQXV0aG9ycyI7CiAgICBkZXNjcmlwdGlvbiAKICAgICJSQU4gRXF1aXBtZW50IHRvIExvZ2ljYWwgdG9wb2xvZ3kgbW9kZWwuCgogICAgVGhpcyBtb2RlbCBjb250YWlucyB0aGUgUkFOIEVxdWlwbWVudCB0byBMb2dpY2FsIHRvcG9sb2d5CiAgICBlbnRpdGllcyBhbmQgcmVsYXRpb25zLgoKICAgIENvcHlyaWdodCAoQykgMjAyNCBFcmljc3NvbgogICAgTW9kaWZpY2F0aW9ucyBDb3B5cmlnaHQgKEMpIDIwMjQgT3BlbkluZnJhIEZvdW5kYXRpb24gRXVyb3BlCgogICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTsKICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KICAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAoKICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAoKICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUywKICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgogICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAogICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCgogICAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAiOwoKICAgIHJldmlzaW9uICIyMDI0LTA1LTI0IiB7CiAgICAgICAgZGVzY3JpcHRpb24gIkluaXRpYWwgcmV2aXNpb24uIjsKICAgICAgICBvci10ZWl2LXlleHQ6bGFiZWwgMC4zLjA7CiAgICB9CgogICAgb3ItdGVpdi15ZXh0OmRvbWFpbiBSRUxfRVFVSVBNRU5UX1JBTjsKCiAgICBvci10ZWl2LXlleHQ6YmlEaXJlY3Rpb25hbFRvcG9sb2d5UmVsYXRpb25zaGlwIEFOVEVOTkFNT0RVTEVfU0VSVkVTX0FOVEVOTkFDQVBBQklMSVRZIHsgLy8gMC4ubiB0byAwLi5tCgogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICAgICAga2V5IGlkOwoKICAgICAgICBsZWFmLWxpc3Qgc2VydmljZWQtYW50ZW5uYUNhcGFiaWxpdHkgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiQW50ZW5uYSBDYXBhYmlsaXR5IHNlcnZpY2VkIGJ5IHRoaXMgQW50ZW5uYSBNb2R1bGUuIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmFTaWRlIG9yLXRlaXYtZXF1aXA6QW50ZW5uYU1vZHVsZTsKICAgICAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgIH0KCiAgICAgICAgbGVhZi1saXN0IHNlcnZpbmctYW50ZW5uYU1vZHVsZSB7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJBbnRlbm5hIE1vZHVsZSBzZXJ2ZXMgdGhpcyBBbnRlbm5hIENhcGFiaWxpdHkuIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmJTaWRlIG9yLXRlaXYtcmFuOkFudGVubmFDYXBhYmlsaXR5OwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgfQogICAgfQoKICAgIG9yLXRlaXYteWV4dDpiaURpcmVjdGlvbmFsVG9wb2xvZ3lSZWxhdGlvbnNoaXAgU0VDVE9SX0dST1VQU19BTlRFTk5BTU9EVUxFIHsgLy8gMC4uMSB0byAwLi5uCgogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICAgICAga2V5IGlkOwoKICAgICAgICBsZWFmLWxpc3QgZ3JvdXBlZC1hbnRlbm5hTW9kdWxlIHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIlNlY3RvciBncm91cHMgQW50ZW5uYSBNb2R1bGUuIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmFTaWRlIG9yLXRlaXYtcmFuOlNlY3RvcjsKICAgICAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgIH0KCiAgICAgICAgbGVhZiBncm91cGVkLWJ5LXNlY3RvciB7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJBbnRlbm5hIE1vZHVsZSBncm91cGVkIGJ5IFNlY3Rvci4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YlNpZGUgb3ItdGVpdi1lcXVpcDpBbnRlbm5hTW9kdWxlOwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgfQogICAgfQp9
-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-07-15 bW9kdWxlIG8tcmFuLXNtby10ZWl2LXJlbC1vYW0tY2xvdWQgewogICAgeWFuZy12ZXJzaW9uIDEuMTsKICAgIG5hbWVzcGFjZSAidXJuOm8tcmFuOnNtby10ZWl2LXJlbC1vYW0tY2xvdWQiOwogICAgcHJlZml4IG9yLXRlaXYtb2FtdG9jbG91ZDsKCiAgICBpbXBvcnQgby1yYW4tc21vLXRlaXYtY29tbW9uLXlhbmctdHlwZXMge3ByZWZpeCBvci10ZWl2LXR5cGVzOyB9CgogICAgaW1wb3J0IG8tcmFuLXNtby10ZWl2LWNvbW1vbi15YW5nLWV4dGVuc2lvbnMge3ByZWZpeCBvci10ZWl2LXlleHQ7IH0KCiAgICBpbXBvcnQgby1yYW4tc21vLXRlaXYtb2FtIHtwcmVmaXggb3ItdGVpdi1vYW07IH0KCiAgICBpbXBvcnQgby1yYW4tc21vLXRlaXYtY2xvdWQge3ByZWZpeCBvci10ZWl2LWNsb3VkOyB9CgogICAgb3JnYW5pemF0aW9uICJPUkFOIjsKICAgIGNvbnRhY3QgIlRoZSBBdXRob3JzIjsKICAgIGRlc2NyaXB0aW9uCiAgICAgICAgIlJBTiBPJk0gdG8gQ2xvdWQgdG9wb2xvZ3kgbW9kZWwuCgogICAgICAgIFRoaXMgbW9kZWwgY29udGFpbnMgdGhlIFJBTiBPJk0gdG8gQ2xvdWQgdG9wb2xvZ3kgcmVsYXRpb25zCgogICAgICAgIENvcHlyaWdodCAoQykgMjAyNCBFcmljc3NvbgogICAgICAgIE1vZGlmaWNhdGlvbnMgQ29weXJpZ2h0IChDKSAyMDI0IE9wZW5JbmZyYSBGb3VuZGF0aW9uIEV1cm9wZQoKICAgICAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpOwogICAgICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KICAgICAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKCiAgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCgogICAgICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKICAgICAgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsCiAgICAgICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCiAgICAgICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAogICAgICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgoKICAgICAgICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCI7CgogICAgcmV2aXNpb24gIjIwMjQtMDUtMDIiIHsKICAgICAgICBkZXNjcmlwdGlvbiAiSW5pdGlhbCByZXZpc2lvbi4iOwogICAgICAgIG9yLXRlaXYteWV4dDpsYWJlbCAwLjMuMDsKICAgIH0KCiAgICByZXZpc2lvbiAiMjAyNC0wNy0xNSIgewogICAgICAgIGRlc2NyaXB0aW9uICJUaGlzIHJldmlzaW9uIGFsaWducyBPLVJBTiBXb3JrIEdyb3VwIDEwIFN0YWdlIDIgU3BlY2lmaWNhdGlvbiAoTy1SQU4uV0cxMC5URSZJVi1DSU1JLjAtUjAwNC52MDIuMDApIjsKICAgICAgICBvci10ZWl2LXlleHQ6bGFiZWwgMC40LjA7CiAgICB9CgogICAgb3ItdGVpdi15ZXh0OmRvbWFpbiBSRUxfT0FNX0NMT1VEOwoKICAgIG9yLXRlaXYteWV4dDpiaURpcmVjdGlvbmFsVG9wb2xvZ3lSZWxhdGlvbnNoaXAgTUFOQUdFREVMRU1FTlRfREVQTE9ZRURfQVNfQ0xPVURJRklFRE5GIHsgIC8vIDAuLjEgdG8gMQoKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6VG9wX0dycF9UeXBlOwogICAgICAgIGtleSBpZDsKCiAgICAgICAgbGVhZiBkZXBsb3llZC1hcy1jbG91ZGlmaWVkTkYgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiTWFuYWdlZCBFbGVtZW50IGRlcGxveWVkIGFzIENsb3VkaWZpZWQgTkYuIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmFTaWRlIG9yLXRlaXYtb2FtOk1hbmFnZWRFbGVtZW50OwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgfQoKICAgICAgICBsZWFmIGRlcGxveWVkLW1hbmFnZWRFbGVtZW50IHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIkNsb3VkaWZpZWQgTkYgZGVwbG95cyBNYW5hZ2VkIEVsZW1lbnQuIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmJTaWRlIG9yLXRlaXYtY2xvdWQ6Q2xvdWRpZmllZE5GOwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgICAgIG1hbmRhdG9yeSB0cnVlOwogICAgICAgIH0KICAgIH0KCiAgICBvci10ZWl2LXlleHQ6YmlEaXJlY3Rpb25hbFRvcG9sb2d5UmVsYXRpb25zaGlwIE5GREVQTE9ZTUVOVF9TRVJWRVNfTUFOQUdFREVMRU1FTlQgeyAvLyAxLi5uIHRvIDEKCiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOlRvcF9HcnBfVHlwZTsKICAgICAgICBrZXkgaWQ7CgogICAgICAgIGxlYWYgc2VydmljZWQtbWFuYWdlZEVsZW1lbnQgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiTWFuYWdlZCBFbGVtZW50IHNlcnZpY2VkIGJ5IHRoaXMgTkYgRGVwbG95bWVudC4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YVNpZGUgb3ItdGVpdi1jbG91ZDpORkRlcGxveW1lbnQ7CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICAgICAgbWFuZGF0b3J5IHRydWU7CiAgICAgICAgfQoKICAgICAgICBsZWFmLWxpc3Qgc2VydmluZy1uRkRlcGxveW1lbnQgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiTkYgRGVwbG95bWVudCB0aGF0IHNlcnZlcyB0aGlzIE1hbmFnZWQgRWxlbWVudC4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YlNpZGUgb3ItdGVpdi1vYW06TWFuYWdlZEVsZW1lbnQ7CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICAgICAgbWluLWVsZW1lbnRzIDE7CiAgICAgICAgfQogICAgfQp9
-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-07-15 bW9kdWxlIG8tcmFuLXNtby10ZWl2LXJlbC1vYW0tcmFuIHsKICAgIHlhbmctdmVyc2lvbiAxLjE7CiAgICBuYW1lc3BhY2UgInVybjpvLXJhbjpzbW8tdGVpdi1yZWwtb2FtLXJhbiI7CiAgICBwcmVmaXggb3ItdGVpdi1yZWwtb2FtcmFuOwoKICAgIGltcG9ydCBvLXJhbi1zbW8tdGVpdi1jb21tb24teWFuZy10eXBlcyB7IHByZWZpeCBvci10ZWl2LXR5cGVzOyB9CgogICAgaW1wb3J0IG8tcmFuLXNtby10ZWl2LWNvbW1vbi15YW5nLWV4dGVuc2lvbnMgeyBwcmVmaXggb3ItdGVpdi15ZXh0OyB9CgogICAgaW1wb3J0IG8tcmFuLXNtby10ZWl2LW9hbSB7IHByZWZpeCBvci10ZWl2LW9hbTsgfQoKICAgIGltcG9ydCBvLXJhbi1zbW8tdGVpdi1yYW4geyBwcmVmaXggb3ItdGVpdi1yYW47IH0KCiAgICBvcmdhbml6YXRpb24gIk9SQU4iOwogICAgY29udGFjdCAiVGhlIEF1dGhvcnMiOwogICAgZGVzY3JpcHRpb24KICAgICAgICAiUkFOIE8mTSB0byBMb2dpY2FsIHRvcG9sb2d5IG1vZGVsLgoKICAgICAgICBUaGlzIG1vZGVsIGNvbnRhaW5zIHRoZSBSQU4gTyZNIHRvIExvZ2ljYWwgdG9wb2xvZ3kgcmVsYXRpb25zCgogICAgICAgIENvcHlyaWdodCAoQykgMjAyNCBFcmljc3NvbgogICAgICAgIE1vZGlmaWNhdGlvbnMgQ29weXJpZ2h0IChDKSAyMDI0IE9wZW5JbmZyYSBGb3VuZGF0aW9uIEV1cm9wZQoKICAgICAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpOwogICAgICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KICAgICAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKCiAgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCgogICAgICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKICAgICAgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsCiAgICAgICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCiAgICAgICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAogICAgICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgoKICAgICAgICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCI7CgogICAgcmV2aXNpb24gIjIwMjQtMDUtMjQiIHsKICAgICAgICBkZXNjcmlwdGlvbiAiSW5pdGlhbCByZXZpc2lvbi4iOwogICAgICAgIG9yLXRlaXYteWV4dDpsYWJlbCAwLjMuMDsKICAgIH0KCiAgICByZXZpc2lvbiAiMjAyNC0wNy0xNSIgewogICAgICAgIGRlc2NyaXB0aW9uICJUaGlzIHJldmlzaW9uIGFsaWducyBPLVJBTiBXb3JrIEdyb3VwIDEwIFN0YWdlIDIgU3BlY2lmaWNhdGlvbiAoTy1SQU4uV0cxMC5URSZJVi1DSU1JLjAtUjAwNC52MDIuMDApIjsKICAgICAgICBvci10ZWl2LXlleHQ6bGFiZWwgMC40LjA7CiAgICB9CgogICAgb3ItdGVpdi15ZXh0OmRvbWFpbiBSRUxfT0FNX1JBTjsKCiAgICBvci10ZWl2LXlleHQ6YmlEaXJlY3Rpb25hbFRvcG9sb2d5UmVsYXRpb25zaGlwIE1BTkFHRURFTEVNRU5UX01BTkFHRVNfT0RVRlVOQ1RJT04geyAgICAvLyAxIHRvIDAuLm4KCiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOlRvcF9HcnBfVHlwZTsKICAgICAgICBrZXkgaWQ7CgogICAgICAgIGxlYWYtbGlzdCBtYW5hZ2VkLW9kdUZ1bmN0aW9uIHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIk1hbmFnZWQgRWxlbWVudCBtYW5hZ2VzIE8tRFUgRnVuY3Rpb24uIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmFTaWRlIG9yLXRlaXYtb2FtOk1hbmFnZWRFbGVtZW50OwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgfQoKICAgICAgICBsZWFmIG1hbmFnZWQtYnktbWFuYWdlZEVsZW1lbnQgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiTy1EVSBGdW5jdGlvbiBtYW5hZ2VkIGJ5IE1hbmFnZWQgRWxlbWVudC4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YlNpZGUgb3ItdGVpdi1yYW46T0RVRnVuY3Rpb247CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICAgICAgbWFuZGF0b3J5IHRydWU7CiAgICAgICAgfQogICAgfQoKICAgIG9yLXRlaXYteWV4dDpiaURpcmVjdGlvbmFsVG9wb2xvZ3lSZWxhdGlvbnNoaXAgTUFOQUdFREVMRU1FTlRfTUFOQUdFU19PQ1VDUEZVTkNUSU9OIHsgICAgLy8gMSB0byAwLi5uCgogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICAgICAga2V5IGlkOwoKICAgICAgICBsZWFmLWxpc3QgbWFuYWdlZC1vY3VjcEZ1bmN0aW9uIHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIk1hbmFnZWQgRWxlbWVudCBtYW5hZ2VzIE8tQ1UtQ1AgRnVuY3Rpb24uIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmFTaWRlIG9yLXRlaXYtb2FtOk1hbmFnZWRFbGVtZW50OwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgfQoKICAgICAgICBsZWFmIG1hbmFnZWQtYnktbWFuYWdlZEVsZW1lbnQgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiTy1DVS1DUCBGdW5jdGlvbiBtYW5hZ2VkIGJ5IE1hbmFnZWQgRWxlbWVudC4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YlNpZGUgb3ItdGVpdi1yYW46T0NVQ1BGdW5jdGlvbjsKICAgICAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgICAgICBtYW5kYXRvcnkgdHJ1ZTsKICAgICAgICB9CiAgICB9CgogICAgb3ItdGVpdi15ZXh0OmJpRGlyZWN0aW9uYWxUb3BvbG9neVJlbGF0aW9uc2hpcCBNQU5BR0VERUxFTUVOVF9NQU5BR0VTX09DVVVQRlVOQ1RJT04geyAgICAvLyAxIHRvIDAuLm4KCiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOlRvcF9HcnBfVHlwZTsKICAgICAgICBrZXkgaWQ7CgogICAgICAgIGxlYWYtbGlzdCBtYW5hZ2VkLW9jdXVwRnVuY3Rpb24gewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiTWFuYWdlZCBFbGVtZW50IG1hbmFnZXMgTy1DVS1VUCBGdW5jdGlvbi4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YVNpZGUgb3ItdGVpdi1vYW06TWFuYWdlZEVsZW1lbnQ7CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICB9CgogICAgICAgIGxlYWYgbWFuYWdlZC1ieS1tYW5hZ2VkRWxlbWVudCB7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJPLUNVLVVQIEZ1bmN0aW9uIG1hbmFnZWQgYnkgTWFuYWdlZCBFbGVtZW50LiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDpiU2lkZSBvci10ZWl2LXJhbjpPQ1VVUEZ1bmN0aW9uOwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgICAgIG1hbmRhdG9yeSB0cnVlOwogICAgICAgIH0KICAgIH0KCiAgICBvci10ZWl2LXlleHQ6YmlEaXJlY3Rpb25hbFRvcG9sb2d5UmVsYXRpb25zaGlwIE1BTkFHRURFTEVNRU5UX01BTkFHRVNfT1JVRlVOQ1RJT04geyAgICAvLyAxIHRvIDAuLm4KCiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOlRvcF9HcnBfVHlwZTsKICAgICAgICBrZXkgaWQ7CgogICAgICAgIGxlYWYtbGlzdCBtYW5hZ2VkLW9ydUZ1bmN0aW9uIHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIk1hbmFnZWQgRWxlbWVudCBtYW5hZ2VzIE8tUlUgRnVuY3Rpb24uIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmFTaWRlIG9yLXRlaXYtb2FtOk1hbmFnZWRFbGVtZW50OwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgfQoKICAgICAgICBsZWFmIG1hbmFnZWQtYnktbWFuYWdlZEVsZW1lbnQgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiTy1SVSBGdW5jdGlvbiBtYW5hZ2VkIGJ5IE1hbmFnZWQgRWxlbWVudC4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YlNpZGUgb3ItdGVpdi1yYW46T1JVRnVuY3Rpb247CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICAgICAgbWFuZGF0b3J5IHRydWU7CiAgICAgICAgfQogICAgfQoKICAgIG9yLXRlaXYteWV4dDpiaURpcmVjdGlvbmFsVG9wb2xvZ3lSZWxhdGlvbnNoaXAgTUFOQUdFREVMRU1FTlRfTUFOQUdFU19ORUFSUlRSSUNGVU5DVElPTiB7ICAgIC8vIDEgdG8gMC4ubgoKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6VG9wX0dycF9UeXBlOwogICAgICAgIGtleSBpZDsKCiAgICAgICAgbGVhZi1saXN0IG1hbmFnZWQtbmVhclJUUklDRnVuY3Rpb24gewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiTWFuYWdlZCBFbGVtZW50IG1hbmFnZXMgTmVhciBSVCBSSUMgRnVuY3Rpb24uIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmFTaWRlIG9yLXRlaXYtb2FtOk1hbmFnZWRFbGVtZW50OwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgfQoKICAgICAgICBsZWFmIG1hbmFnZWQtYnktbWFuYWdlZEVsZW1lbnQgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiTmVhciBSVCBSSUMgRnVuY3Rpb24gbWFuYWdlZCBieSBNYW5hZ2VkIEVsZW1lbnQuIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmJTaWRlIG9yLXRlaXYtcmFuOk5lYXJSVFJJQ0Z1bmN0aW9uOwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgICAgIG1hbmRhdG9yeSB0cnVlOwogICAgICAgIH0KICAgIH0KfQ==
+o-ran-smo-teiv-common-yang-types urn:o-ran:smo-teiv-common-yang-types \N [] 2024-10-04 bW9kdWxlIG8tcmFuLXNtby10ZWl2LWNvbW1vbi15YW5nLXR5cGVzIHsKICAgIHlhbmctdmVyc2lvbiAxLjE7CiAgICBuYW1lc3BhY2UgInVybjpvLXJhbjpzbW8tdGVpdi1jb21tb24teWFuZy10eXBlcyI7CiAgICBwcmVmaXggb3ItdGVpdi10eXBlczsKCiAgICBpbXBvcnQgby1yYW4tc21vLXRlaXYtY29tbW9uLXlhbmctZXh0ZW5zaW9ucyB7IHByZWZpeCBvci10ZWl2LXlleHQ7IH0KCiAgICBpbXBvcnQgXzNncHAtY29tbW9uLXlhbmctdHlwZXMgeyBwcmVmaXggdHlwZXMzZ3BwOyB9CgogICAgb3JnYW5pemF0aW9uICJPUkFOIjsKICAgIGNvbnRhY3QgIlRoZSBBdXRob3JzIjsKICAgIGRlc2NyaXB0aW9uCiAgICAiVG9wb2xvZ3kgYW5kIEludmVudG9yeSBjb21tb24gdHlwZXMgbW9kZWwKCiAgICBUaGlzIG1vZGVsIGNvbnRhaW5zIHJlLXVzYWJsZSBkYXRhIHR5cGVzIHRoYXQgdG9wb2xvZ3kgYW5kIGludmVudG9yeSBtb2RlbHMKICAgIHdpbGwgZnJlcXVlbnRseSB1c2UgYXMgcGFydCBvZiB0eXBlcyBhbmQgcmVsYXRpb25zaGlwcy4KCiAgICBDb3B5cmlnaHQgKEMpIDIwMjQgRXJpY3Nzb24KICAgIE1vZGlmaWNhdGlvbnMgQ29weXJpZ2h0IChDKSAyMDI0IE9wZW5JbmZyYSBGb3VuZGF0aW9uIEV1cm9wZQoKICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7CiAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKCiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKCiAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsCiAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgoKICAgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIjsKCiAgICByZXZpc2lvbiAiMjAyNC0xMC0wNCIgewogICAgICAgIGRlc2NyaXB0aW9uICJBZGRlZCBPcmlnaW5fRW50aXR5X01hcHBpbmdfR3JwIGFuZCBPcmlnaW5fUmVsYXRpb25zaGlwX01hcHBpbmdfR3JwCiAgICAgICAgZm9yIHNvdXJjZUlkcyBhbmQgcmVsaWFiaWxpdHlJbmRpY2F0b3IgdG8gbWV0YWRhdGEuIjsKICAgICAgICBvci10ZWl2LXlleHQ6bGFiZWwgMC40LjA7CiAgICB9CgogICAgcmV2aXNpb24gIjIwMjQtMDUtMjQiIHsKICAgICAgICBkZXNjcmlwdGlvbiAiSW5pdGlhbCByZXZpc2lvbi4iOwogICAgICAgIG9yLXRlaXYteWV4dDpsYWJlbCAwLjMuMDsKICAgIH0KCiAgICBncm91cGluZyBUb3BfR3JwX1R5cGUgewogICAgICAgIGRlc2NyaXB0aW9uICJHcm91cGluZyBjb250YWluaW5nIHRoZSBrZXkgYXR0cmlidXRlIGNvbW1vbiB0byBhbGwgdHlwZXMuCiAgICAgICAgICAgIEFsbCB0eXBlcyBNVVNUIHVzZSB0aGlzIGdyb3VwaW5nLiI7CgogICAgICAgIGxlYWYgaWQgewogICAgICAgICAgICB0eXBlIHN0cmluZzsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIlVuaXF1ZSBpZGVudGlmaWVyIG9mIHRvcG9sb2d5IGVudGl0aWVzLiBSZXByZXNlbnRzIHRoZQogICAgICAgICAgICAgICAgRW50aXR5IEluc3RhbmNlIElkZW50aWZpZXIuIjsKICAgICAgICB9CiAgICB9CgogICAgY29udGFpbmVyIGRlY29yYXRvcnMgewogICAgICAgIGRlc2NyaXB0aW9uCiAgICAgICAgICAgICJUaGlzIGNvbnRhaW5lciBzZXJ2ZXMgYXMgZXh0ZW5zaW9uIHBvaW50IGZvciBhcHBsaWNhdGlvbnMgd2lzaGluZwogICAgICAgICAgICB0byBkZWZpbmUgdGhlaXIgb3duIGRlY29yYXRvcnMuIFRoaXMgaXMgZG9uZSB2aWEgYXVnbWVudGF0aW9ucy4gVGhleQogICAgICAgICAgICBjYW4gb25seSBiZSBkZWZpbmVkIGluIG5hbWUgdmFsdWUgcGFpci4KCiAgICAgICAgICAgIFRoaXMgaXMgYSBjb25zdW1lciBkYXRhIGFuZCBjYW4gYmUgYXR0YWNoZWQgdG8gVG9wb2xvZ3kgRW50aXR5IG9yCiAgICAgICAgICAgIFRvcG9sb2d5IFJlbGF0aW9uIGluc3RhbmNlLCBvdXRzaWRlIG9mIHRoZSBkZWNsYXJlZCBUb3BvbG9neSBFbnRpdHkKICAgICAgICAgICAgb3IgVG9wb2xvZ3kgUmVsYXRpb25zaGlwJ3MgYXR0cmlidXRlcy4gVGhpcyBjYW5ub3QgYmUgaW5zdGFudGlhdGVkLAogICAgICAgICAgICBhbmQgaXQgTVVTVCBOT1QgYmUgYXVnbWVudGVkIG9yIGRldmlhdGVkIGluIGFueSB3YXksIHVubGVzcyBzdGF0ZWQKICAgICAgICAgICAgb3RoZXJ3aXNlLiI7CiAgICB9CgogICAgbGVhZi1saXN0IGNsYXNzaWZpZXJzIHsKICAgICAgICBkZXNjcmlwdGlvbgogICAgICAgICAgICAiQ29uc3VtZXIgZGVmaW5lZCB0YWdzIHRvIHRvcG9sb2d5IGVudGl0aWVzIGFuZCByZWxhdGlvbnNoaXBzLgoKICAgICAgICAgICAgVGhpcyBpcyBhIGNvbnN1bWVyIGRhdGEgYW5kIGNhbiBiZSBhdHRhY2hlZCB0byBUb3BvbG9neSBFbnRpdHkgb3IKICAgICAgICAgICAgVG9wb2xvZ3kgUmVsYXRpb24gaW5zdGFuY2UsIG91dHNpZGUgb2YgdGhlIGRlY2xhcmVkIFRvcG9sb2d5IEVudGl0eQogICAgICAgICAgICBvciBUb3BvbG9neSBSZWxhdGlvbnNoaXAncyBhdHRyaWJ1dGVzLiBUaGlzIGNhbm5vdCBiZSBpbnN0YW50aWF0ZWQsCiAgICAgICAgICAgIGFuZCBpdCBNVVNUIE5PVCBiZSBhdWdtZW50ZWQgb3IgZGV2aWF0ZWQgaW4gYW55IHdheSwgdW5sZXNzIHN0YXRlZAogICAgICAgICAgICBvdGhlcndpc2UuIjsKCiAgICAgICAgdHlwZSBpZGVudGl0eXJlZiB7IGJhc2UgY2xhc3NpZmllcjsgfQogICAgfQoKICAgIGdyb3VwaW5nIE9yaWdpbl9FbnRpdHlfTWFwcGluZ19HcnAgewogICAgICAgIGRlc2NyaXB0aW9uICJHcm91cGluZyB0byBpZGVudGlmeSBzb3VyY2VJZHMgb24gYSB0b3BvbG9neSBlbnRpdHkuIjsKCiAgICAgICAgbGVhZi1saXN0IHNvdXJjZUlkcyB7CgogICAgICAgICAgICBkZXNjcmlwdGlvbgogICAgICAgICAgICAgICAgIkFuIG9yZGVyZWQgbGlzdCBvZiBpZGVudGl0aWVzIHRoYXQgcmVwcmVzZW50IHRoZSBzZXQgb2YgbmF0aXZlCiAgICAgICAgICAgICAgICBzb3VyY2UgaWRlbnRpZmllcnMgZm9yIHBhcnRpY2lwYXRpbmcgZW50aXRpZXMuCgogICAgICAgICAgICAgICAgVGhpcyBtdXN0IGJlIGF0dGFjaGVkIHRvIHRoZSBUb3BvbG9neSBFbnRpdHkgaW5zdGFuY2UsIG91dHNpZGUgb2YgdGhlCiAgICAgICAgICAgICAgICBkZWNsYXJlZCBUb3BvbG9neSBFbnRpdHkncyBhdHRyaWJ1dGVzLiBUaGlzIGlzIGV4cG9zZWQgdG8gdGhlCiAgICAgICAgICAgICAgICBjb25zdW1lcnMgYW5kIGNhbiBvbmx5IGJlIHNldCBieSB0aGUgcmVzcG9uc2libGUgYWRhcHRlci4gVGhpcwogICAgICAgICAgICAgICAgY2Fubm90IGJlIGluc3RhbnRpYXRlZCwgYW5kIGl0IE1VU1QgTk9UIGJlIGF1Z21lbnRlZCBvciBkZXZpYXRlZAogICAgICAgICAgICAgICAgaW4gYW55IHdheSwgdW5sZXNzIHN0YXRlZCBvdGhlcndpc2UuIjsKCiAgICAgICAgICAgIHR5cGUgc291cmNlSWQ7CiAgICAgICAgICAgIG9yZGVyZWQtYnkgdXNlcjsKICAgICAgICAgICAgbWluLWVsZW1lbnRzIDE7CiAgICAgICAgfQogICAgfQoKICAgIGdyb3VwaW5nIE9yaWdpbl9SZWxhdGlvbnNoaXBfTWFwcGluZ19HcnAgewogICAgICAgIGRlc2NyaXB0aW9uICJHcm91cGluZyB0byBpZGVudGlmeSBzb3VyY2VJZHMgb24gYSB0b3BvbG9neSByZWxhdGlvbnNoaXAuIjsKCiAgICAgICAgbGVhZi1saXN0IHNvdXJjZUlkcyB7CgogICAgICAgICAgICBkZXNjcmlwdGlvbgogICAgICAgICAgICAgICAgIkFuIG9yZGVyZWQgbGlzdCBvZiBpZGVudGl0aWVzIHRoYXQgcmVwcmVzZW50IHRoZSBzZXQgb2YgbmF0aXZlCiAgICAgICAgICAgICAgICBzb3VyY2UgaWRlbnRpZmllcnMgZm9yIHBhcnRpY2lwYXRpbmcgZW50aXRpZXMgaW4gdGhlIHJlbGF0aW9uc2hpcC4KCiAgICAgICAgICAgICAgICBUaGlzIG11c3QgYmUgYXR0YWNoZWQgdG8gdGhlIFRvcG9sb2d5IFJlbGF0aW9uIGluc3RhbmNlLCBvdXRzaWRlIG9mIHRoZQogICAgICAgICAgICAgICAgZGVjbGFyZWQgVG9wb2xvZ3kgUmVsYXRpb25zaGlwJ3MgYXR0cmlidXRlcy4gVGhpcyBpcyBleHBvc2VkIHRvIHRoZQogICAgICAgICAgICAgICAgY29uc3VtZXJzIGFuZCBjYW4gb25seSBiZSBzZXQgYnkgdGhlIHJlc3BvbnNpYmxlIGFkYXB0ZXIuIFRoaXMKICAgICAgICAgICAgICAgIGNhbm5vdCBiZSBpbnN0YW50aWF0ZWQsIGFuZCBpdCBNVVNUIE5PVCBiZSBhdWdtZW50ZWQgb3IgZGV2aWF0ZWQgaW4KICAgICAgICAgICAgICAgIGFueSB3YXksIHVubGVzcyBzdGF0ZWQgb3RoZXJ3aXNlLiI7CgogICAgICAgICAgICB0eXBlIHNvdXJjZUlkOwogICAgICAgICAgICBvcmRlcmVkLWJ5IHVzZXI7CiAgICAgICAgICAgIG1pbi1lbGVtZW50cyAyOwogICAgICAgIH0KICAgIH0KCiAgICBjb250YWluZXIgbWV0YWRhdGEgewogICAgICAgIGRlc2NyaXB0aW9uCiAgICAgICAgICAgICJUaGlzIGNvbnRhaW5lciBzZXJ2ZXMgYXMgYW4gZXh0ZW5zaW9uIHBvaW50IHRvIGRlZmluZSBtZXRhZGF0YS4gVGhleQogICAgICAgICAgICBjYW4gb25seSBiZSBkZWZpbmVkIGluIG5hbWUgdmFsdWUgcGFpcnMuCgogICAgICAgICAgICBUaGlzIG11c3QgYmUgYXR0YWNoZWQgdG8gdGhlIFRvcG9sb2d5IEVudGl0eSBvciBUb3BvbG9neSBSZWxhdGlvbiBpbnN0YW5jZSwKICAgICAgICAgICAgb3V0c2lkZSBvZiB0aGUgZGVjbGFyZWQgVG9wb2xvZ3kgRW50aXR5IG9yIFRvcG9sb2d5IFJlbGF0aW9uc2hpcCdzCiAgICAgICAgICAgIGF0dHJpYnV0ZXMuIFRoaXMgaXMgZXhwb3NlZCB0byB0aGUgY29uc3VtZXJzIGFuZCBjYW4gb25seSBiZSBzZXQgYnkKICAgICAgICAgICAgdGhlIHJlc3BvbnNpYmxlIGFkYXB0ZXIuIFRoaXMgY2Fubm90IGJlIGluc3RhbnRpYXRlZCwgYW5kIGl0IE1VU1QgTk9UIGJlCiAgICAgICAgICAgIGF1Z21lbnRlZCBvciBkZXZpYXRlZCBpbiBhbnkgd2F5LCB1bmxlc3Mgc3RhdGVkIG90aGVyd2lzZS4iOwoKICAgICAgICBsZWFmIHJlbGlhYmlsaXR5SW5kaWNhdG9yIHsKICAgICAgICAgICAgdHlwZSBlbnVtZXJhdGlvbiB7CiAgICAgICAgICAgICAgICBlbnVtIE9LIHsKICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiVGhlIGRhdGEgaXMgaW4gYWxpZ25tZW50IHdpdGggdGhlIHNvdXJjZSBvZiB0cnV0aCwKICAgICAgICAgICAgICAgICAgICBhcyBmYXIgYXMgVG9wb2xvZ3kgRXhwb3N1cmUgSGFuZGxpbmcgaXMgYXdhcmUuIjsKICAgICAgICAgICAgICAgICAgICB2YWx1ZSAwOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZW51bSBSRVNUT1JFRCB7CiAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIlRoZSBkYXRhIHdhcyByZXN0b3JlZCBmcm9tIGJhY2t1cCBhbmQgdGhlIHJlc3BvbnNpYmxlCiAgICAgICAgICAgICAgICAgICAgYWRhcHRlcnMgYXJlIGNoZWNraW5nIHRvIGVuc3VyZSB0aGUgZGF0YSBpcyBjdXJyZW50LiI7CiAgICAgICAgICAgICAgICAgICAgdmFsdWUgMTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVudW0gQURWSVNFRCB7CiAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIkVudGl0eSBpbXBsaWNpdGx5IGNyZWF0ZWQgYnkgVG9wb2xvZ3kgRXhwb3N1cmUgSGFuZGxpbmcgYW5kCiAgICAgICAgICAgICAgICAgICAgcG90ZW50aWFsbHkgbm90IGFsaWduZWQgd2l0aCB0aGUgc291cmNlIG9mIHRydXRoLiI7CiAgICAgICAgICAgICAgICAgICAgdmFsdWUgMjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBpZGVudGl0eSBjbGFzc2lmaWVyIHsKICAgICAgICBkZXNjcmlwdGlvbiAiVGhlIGNsYXNzaWZpZXIgaXMgdXNlZCBhcyBhIGJhc2UgdG8gcHJvdmlkZSBhbGwgY2xhc3NpZmllcnMKICAgICAgICB3aXRoIGlkZW50aXR5LiAiOwogICAgfQoKICAgIHR5cGVkZWYgc291cmNlSWQgewogICAgICAgIGRlc2NyaXB0aW9uICJBbiBpZGVudGl0eSB0aGF0IHJlcHJlc2VudHMgYSBuYXRpdmUgaWRlbnRpZmllciBvZiBhIHRvcG9sb2d5IGVudGl0eS4iOwogICAgICAgIHR5cGUgc3RyaW5nOwogICAgfQp9
+o-ran-smo-teiv-equipment urn:o-ran:smo-teiv-equipment EQUIPMENT [] 2024-10-21 bW9kdWxlIG8tcmFuLXNtby10ZWl2LWVxdWlwbWVudCB7CiAgICB5YW5nLXZlcnNpb24gMS4xOwogICAgbmFtZXNwYWNlICJ1cm46by1yYW46c21vLXRlaXYtZXF1aXBtZW50IjsKICAgIHByZWZpeCBvci10ZWl2LWVxdWlwOwoKICAgIGltcG9ydCBvLXJhbi1zbW8tdGVpdi1jb21tb24teWFuZy10eXBlcyB7cHJlZml4IG9yLXRlaXYtdHlwZXM7IH0KCiAgICBpbXBvcnQgby1yYW4tc21vLXRlaXYtY29tbW9uLXlhbmctZXh0ZW5zaW9ucyB7cHJlZml4IG9yLXRlaXYteWV4dDsgfQoKICAgIGltcG9ydCBpZXRmLWdlby1sb2NhdGlvbiB7CiAgICAgICAgcHJlZml4IGdlbzsKICAgICAgICByZWZlcmVuY2UgIlJGQyA5MTc5OiBBIFlBTkcgR3JvdXBpbmcgZm9yIEdlb2dyYXBoaWMgTG9jYXRpb25zIjsKICAgIH0KCiAgICBvcmdhbml6YXRpb24gIk9SQU4iOwogICAgY29udGFjdCAiVGhlIEF1dGhvcnMiOwogICAgZGVzY3JpcHRpb24KICAgICJSQU4gRXF1aXBtZW50IHRvcG9sb2d5IG1vZGVsLgoKICAgIFRoaXMgbW9kZWwgY29udGFpbnMgdGhlIHRvcG9sb2d5IGVudGl0aWVzIGFuZCByZWxhdGlvbnMgaW4gdGhlCiAgICBSQU4gRXF1aXBtZW50IGRvbWFpbiwgd2hpY2ggaXMgbW9kZWxsZWQgdG8gdW5kZXJzdGFuZCB0aGUgcGh5c2ljYWwKICAgIGxvY2F0aW9uIG9mIGVxdWlwbWVudCBzdWNoIGFzIGFudGVubmFzIGFzc29jaWF0ZWQgd2l0aCBhIGNlbGwvY2FycmllcgogICAgYW5kIHRoZWlyIHJlbGV2YW50IHByb3BlcnRpZXMgZS5nLiB0aWx0LCBtYXggcG93ZXIgZXRjLgoKICAgIENvcHlyaWdodCAoQykgMjAyNCBFcmljc3NvbgogICAgTW9kaWZpY2F0aW9ucyBDb3B5cmlnaHQgKEMpIDIwMjQgT3BlbkluZnJhIEZvdW5kYXRpb24gRXVyb3BlCgogICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTsKICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KICAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAoKICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAoKICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUywKICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgogICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCI7CgogICAgcmV2aXNpb24gIjIwMjQtMTAtMjEiIHsKICAgICAgICBkZXNjcmlwdGlvbiAiRGVwcmVjYXRlIEFudGVubmFNb2R1bGUgYXR0cmlidXRlIGFudGVubmFCZWFtV2lkdGguCiAgICAgICAgVG8gYmUgcmVwbGFjZWQgYnkgaG9yaXpvbnRhbEJlYW1XaWR0aCBhbmQgdmVydGljYWxCZWFtV2lkdGguIjsKICAgICAgICBvci10ZWl2LXlleHQ6bGFiZWwgMC42LjA7CiAgICB9CgogICAgcmV2aXNpb24gIjIwMjQtMTAtMDgiIHsKICAgICAgICBkZXNjcmlwdGlvbiAiQWRkZWQgYXppbXV0aCBhdHRyaWJ1dGUgZm9yIEFudGVubmFNb2R1bGUuIjsKICAgICAgICBvci10ZWl2LXlleHQ6bGFiZWwgMC41LjA7CiAgICB9CgogICAgcmV2aXNpb24gIjIwMjQtMTAtMDQiIHsKICAgICAgICBkZXNjcmlwdGlvbiAiQWRkZWQgZ3JvdXBpbmdzLCBPcmlnaW5fRW50aXR5X01hcHBpbmdfR3JwIG9yIE9yaWdpbl9SZWxhdGlvbnNoaXBfTWFwcGluZ19HcnAKICAgICAgICB0byB0aGUgY29ycmVzcG9uZGluZyB0b3BvbG9neSBvYmplY3RzLiI7CiAgICAgICAgb3ItdGVpdi15ZXh0OmxhYmVsIDAuNC4wOwogICAgfQoKICAgIHJldmlzaW9uICIyMDI0LTA1LTI0IiB7CiAgICAgICAgZGVzY3JpcHRpb24gIkluaXRpYWwgcmV2aXNpb24uIjsKICAgICAgICBvci10ZWl2LXlleHQ6bGFiZWwgMC4zLjA7CiAgICB9CgogICAgb3ItdGVpdi15ZXh0OmRvbWFpbiBFUVVJUE1FTlQ7CgogICAgbGlzdCBBbnRlbm5hTW9kdWxlIHsKICAgICAgICBkZXNjcmlwdGlvbiAiQW4gQW50ZW5uYSBNb2R1bGUgcmVwcmVzZW50cyB0aGUgcGh5c2ljYWwgYXNwZWN0IG9mIGFuCiAgICAgICAgYW50ZW5uYS4iOwoKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6VG9wX0dycF9UeXBlOwogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpPcmlnaW5fRW50aXR5X01hcHBpbmdfR3JwOwogICAgICAgIGtleSBpZDsKCiAgICAgICAgY29udGFpbmVyIGF0dHJpYnV0ZXMgewogICAgICAgICAgICBsZWFmIGFudGVubmFNb2RlbE51bWJlciB7CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiVmVuZG9yLXNwZWNpZmljIGFudGVubmEgbW9kZWwgaWRlbnRpZmllci4gVGhpcwogICAgICAgICAgICAgICAgYXR0cmlidXRlIGlzIHBhcnQgb2YgQUlTRyB2MyBBREIgU3RhbmRhcmQgYW5kIGhhcyBubwogICAgICAgICAgICAgICAgb3BlcmF0aW9uYWwgaW1wYWN0LiI7CiAgICAgICAgICAgICAgICB0eXBlIHN0cmluZzsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbGVhZiBtZWNoYW5pY2FsQW50ZW5uYUJlYXJpbmcgewogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIkFudGVubmEgYmVhcmluZyBvbiBhbnRlbm5hIHN1YnVuaXQgd2hlcmUgYW50ZW5uYQogICAgICAgICAgICAgICAgdW5pdCBpcyBpbnN0YWxsZWQuIjsKICAgICAgICAgICAgICAgIHR5cGUgaW50MzI7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGxlYWYgbWVjaGFuaWNhbEFudGVubmFUaWx0IHsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJUaGUgZml4ZWQgYW50ZW5uYSB0aWx0IG9mIHRoZSBpbnN0YWxsYXRpb24sIGRlZmluZWQKICAgICAgICAgICAgICAgIGFzIHRoZSBpbmNsaW5hdGlvbiBvZiB0aGUgYW50ZW5uYSBlbGVtZW50IHJlc3BlY3QgdG8gdGhlCiAgICAgICAgICAgICAgICB2ZXJ0aWNhbCBwbGFuZS4gSXQgaXMgYSBzaWduZWQgdmFsdWUuIFBvc2l0aXZlIGluZGljYXRlcwogICAgICAgICAgICAgICAgZG93bnRpbHQsIGFuZCBuZWdhdGl2ZSBpbmRpY2F0ZXMgdXB0aWx0LiI7CiAgICAgICAgICAgICAgICB0eXBlIGludDMyOwogICAgICAgICAgICB9CgogICAgICAgICAgICBsZWFmIHBvc2l0aW9uV2l0aGluU2VjdG9yIHsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJBbnRlbm5hIHVuaXQgcG9zaXRpb24gd2l0aGluIHNlY3Rvci4gVGhpcyBhdHRyaWJ1dGUKICAgICAgICAgICAgICAgIGlzIHBhcnQgb2YgQUlTRyB2MyBBREIgU3RhbmRhcmQgYW5kIGhhcyBubyBvcGVyYXRpb25hbAogICAgICAgICAgICAgICAgaW1wYWN0LiI7CiAgICAgICAgICAgICAgICB0eXBlIHN0cmluZzsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbGVhZiB0b3RhbFRpbHQgewogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIlRvdGFsIGFudGVubmEgZWxldmF0aW9uIGluY2x1ZGluZyB0aGUgaW5zdGFsbGVkCiAgICAgICAgICAgICAgICB0aWx0IGFuZCB0aGUgdGlsdCBhcHBsaWVkIGJ5IHRoZSBSZW1vdGUgRWxlY3RyaWNhbAogICAgICAgICAgICAgICAgVGlsdCAoUkVUKS4iOwogICAgICAgICAgICAgICAgdHlwZSBpbnQzMjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbGVhZiBlbGVjdHJpY2FsQW50ZW5uYVRpbHQgewogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIkVsZWN0cmljYWxseS1jb250cm9sbGVkIHRpbHQgb2YgbWFpbiBiZWFtIG1heGltdW0KICAgICAgICAgICAgICAgIHdpdGggcmVzcGVjdCB0byBkaXJlY3Rpb24gb3J0aG9nb25hbCB0byBhbnRlbm5hIGVsZW1lbnQKICAgICAgICAgICAgICAgIGF4aXMgKHNlZSAzR1BQIFRTIDI1LjQ2NikuIFZhbHVlIGlzIHNpZ25lZDsgdGlsdCBkb3duIGlzCiAgICAgICAgICAgICAgICBwb3NpdGl2ZSwgdGlsdCB1cCBpcyBuZWdhdGl2ZS4iOwogICAgICAgICAgICAgICAgdHlwZSBpbnQzMjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbGVhZi1saXN0IGFudGVubmFCZWFtV2lkdGggewogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIlRoZSBhbmd1bGFyIHNwYW4gb2YgdGhlIG1haW4gbG9iZSBvZiB0aGUgYW50ZW5uYQogICAgICAgICAgICAgICAgcmFkaWF0aW9uIHBhdHRlcm4gaW4gdGhlIGhvcml6b250YWwgcGxhbmUuIE1lYXN1cmVkIGluCiAgICAgICAgICAgICAgICBkZWdyZWVzLgoKICAgICAgICAgICAgICAgIERlcHJlY2F0ZWQ6IFNpbmNlIDI0LlE0LiBSZXBsYWNlZCBieSBBbnRlbm5hTW9kdWxlOjpob3Jpem9udGFsQmVhbVdpZHRoCiAgICAgICAgICAgICAgICBhbmQgQW50ZW5uYU1vZHVsZTo6dmVydGljYWxCZWFtV2lkdGguIFBsYW5uZWQgdG8gYmUgcmVtb3ZlZC4iOwogICAgICAgICAgICAgICAgdHlwZSB1aW50MzI7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGxlYWYgaG9yaXpvbnRhbEJlYW1XaWR0aCAgewogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIlRoZSBhbmd1bGFyIHNwYW4gb2YgdGhlIG1haW4gbG9iZSBvZiB0aGUgYW50ZW5uYQogICAgICAgICAgICAgICAgcmFkaWF0aW9uIHBhdHRlcm4gaW4gdGhlIGhvcml6b250YWwgcGxhbmUuIjsKICAgICAgICAgICAgICAgIHR5cGUgZGVjaW1hbDY0IHsKICAgICAgICAgICAgICAgICAgICBmcmFjdGlvbi1kaWdpdHMgMTsKICAgICAgICAgICAgICAgICAgICByYW5nZSAiMC4uMzYwIjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHVuaXRzICJkZWNpbWFsIGRlZ3JlZXMiOwogICAgICAgICAgICB9CgogICAgICAgICAgICBsZWFmIHZlcnRpY2FsQmVhbVdpZHRoICAgewogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIlRoZSBhbmd1bGFyIHNwYW4gb2YgdGhlIG1haW4gbG9iZSBvZiB0aGUgYW50ZW5uYQogICAgICAgICAgICAgICAgcmFkaWF0aW9uIHBhdHRlcm4gaW4gdGhlIHZlcnRpY2FsIHBsYW5lLiI7CiAgICAgICAgICAgICAgICB0eXBlIGRlY2ltYWw2NCB7CiAgICAgICAgICAgICAgICAgICAgZnJhY3Rpb24tZGlnaXRzIDE7CiAgICAgICAgICAgICAgICAgICAgcmFuZ2UgIjAuLjM2MCI7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB1bml0cyAiZGVjaW1hbCBkZWdyZWVzIjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbGVhZiBhemltdXRoIHsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJUaGUgdmFsdWUgb2YgdGhlIGF6aW11dGggb2YgdGhlIEFudGVubmEgTW9kdWxlLiI7CiAgICAgICAgICAgICAgICB0eXBlIGRlY2ltYWw2NCB7CiAgICAgICAgICAgICAgICAgICAgZnJhY3Rpb24tZGlnaXRzIDE7CiAgICAgICAgICAgICAgICAgICAgcmFuZ2UgIjAuLjM2MCI7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB1bml0cyAiZGVjaW1hbCBkZWdyZWVzIjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgdXNlcyBnZW86Z2VvLWxvY2F0aW9uOwogICAgICAgIH0KICAgIH0KCiAgICBsaXN0IFNpdGUgewogICAgICAgIGRlc2NyaXB0aW9uICJBIHNpdGUgaXMgYSBwaHlzaWNhbCBsb2NhdGlvbiB3aGVyZSBhbiBlcXVpcG1lbnQgY2FuIGJlCiAgICAgICAgaW5zdGFsbGVkLiI7CgogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOk9yaWdpbl9FbnRpdHlfTWFwcGluZ19HcnA7CiAgICAgICAga2V5IGlkOwoKICAgICAgICBjb250YWluZXIgYXR0cmlidXRlcyB7CiAgICAgICAgICAgIGxlYWYgbmFtZSB7CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiTmFtZSBvZiBTaXRlIjsKICAgICAgICAgICAgICAgIHR5cGUgc3RyaW5nOwogICAgICAgICAgICB9CgogICAgICAgICAgICB1c2VzIGdlbzpnZW8tbG9jYXRpb247CiAgICAgICAgfQogICAgfQoKICAgIG9yLXRlaXYteWV4dDpiaURpcmVjdGlvbmFsVG9wb2xvZ3lSZWxhdGlvbnNoaXAgQU5URU5OQU1PRFVMRV9JTlNUQUxMRURfQVRfU0lURSB7IC8vIDAuLm4gdG8gMC4uMQoKICAgICAgICBkZXNjcmlwdGlvbgogICAgICAgICAgICAiVGhlIGFTaWRlIG9mIHRoaXMgcmVsYXRpb25zaGlwIGlzIGFuIGluc3RhbmNlIG9mIHRoZSBBbnRlbm5hTW9kdWxlIHR5cGUuCiAgICAgICAgICAgIFRoZSBiU2lkZSBvZiB0aGlzIHJlbGF0aW9uc2hpcCBpcyBhbiBpbnN0YW5jZSBvZiB0aGUgU2l0ZSB0eXBlLgogICAgICAgICAgICBUaGUgU2l0ZSByZXByZXNlbnRzIHRoZSBwaHlzaWNhbCBsb2NhdGlvbiB3aGVyZSB0aGUgQW50ZW5uYU1vZHVsZSBpcyBpbnN0YWxsZWQuCiAgICAgICAgICAgIEFuIEFudGVubmFNb2R1bGUgaW5zdGFuY2UgY2FuIG9ubHkgYmUgaW5zdGFsbGVkIGF0IG9uZSBTaXRlLgogICAgICAgICAgICBBIFNpdGUgaW5zdGFuY2UgY2FuIGhhdmUgbWFueSBpbnN0YWxsZWQgQW50ZW5uYU1vZHVsZXMuCiAgICAgICAgICAgICI7CgogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOk9yaWdpbl9SZWxhdGlvbnNoaXBfTWFwcGluZ19HcnA7CiAgICAgICAga2V5IGlkOwoKICAgICAgICBsZWFmIGluc3RhbGxlZC1hdC1zaXRlIHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIkFudGVubmEgTW9kdWxlIGluc3RhbGxlZCBhdCBTaXRlLiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDphU2lkZSBBbnRlbm5hTW9kdWxlOwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgfQoKICAgICAgICBsZWFmLWxpc3QgaW5zdGFsbGVkLWFudGVubmFNb2R1bGUgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiU2l0ZSB3aGVyZSBBbnRlbm5hIE1vZHVsZSBpcyBpbnN0YWxsZWQuIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmJTaWRlIFNpdGU7CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICB9CiAgICB9Cn0=
+o-ran-smo-teiv-oam urn:o-ran:smo-teiv-oam OAM [] 2024-10-04 bW9kdWxlIG8tcmFuLXNtby10ZWl2LW9hbSB7CiAgICB5YW5nLXZlcnNpb24gMS4xOwogICAgbmFtZXNwYWNlICJ1cm46by1yYW46c21vLXRlaXYtb2FtIjsKICAgIHByZWZpeCBvci10ZWl2LW9hbTsKCiAgICBpbXBvcnQgby1yYW4tc21vLXRlaXYtY29tbW9uLXlhbmctdHlwZXMgeyBwcmVmaXggb3ItdGVpdi10eXBlczsgfQoKICAgIGltcG9ydCBvLXJhbi1zbW8tdGVpdi1jb21tb24teWFuZy1leHRlbnNpb25zIHsgcHJlZml4IG9yLXRlaXYteWV4dDsgfQoKICAgIG9yZ2FuaXphdGlvbiAiT1JBTiI7CiAgICBjb250YWN0ICJUaGUgQXV0aG9ycyI7CiAgICBkZXNjcmlwdGlvbiAKICAgICJSQU4gTyZNIHRvcG9sb2d5IG1vZGVsLgoKICAgIFRoaXMgbW9kZWwgY29udGFpbnMgdGhlIHRvcG9sb2d5IGVudGl0aWVzIGFuZCByZWxhdGlvbnMgaW4gdGhlCiAgICBSQU4gTyZNIGRvbWFpbiwgd2hpY2ggYXJlIGludGVuZGVkIHRvIHJlcHJlc2VudCBtYW5hZ2VtZW50IHN5c3RlbXMKICAgIGFuZCBtYW5hZ2VtZW50IGludGVyZmFjZXMuCgogICAgQ29weXJpZ2h0IChDKSAyMDI0IEVyaWNzc29uCiAgICBNb2RpZmljYXRpb25zIENvcHlyaWdodCAoQykgMjAyNCBPcGVuSW5mcmEgRm91bmRhdGlvbiBFdXJvcGUKCiAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpOwogICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CgogICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCgogICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLAogICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCiAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCiAgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KCiAgICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCI7CgogICAgcmV2aXNpb24gIjIwMjQtMTAtMDQiIHsKICAgICAgICBkZXNjcmlwdGlvbiAiQWRkZWQgZ3JvdXBpbmcsIE9yaWdpbl9FbnRpdHlfTWFwcGluZ19HcnAgdG8gdGhlIHRvcG9sb2d5IG9iamVjdC4iOwogICAgICAgIG9yLXRlaXYteWV4dDpsYWJlbCAwLjQuMDsKICAgIH0KCiAgICByZXZpc2lvbiAiMjAyNC0wNS0yNCIgewogICAgICAgIGRlc2NyaXB0aW9uICJJbml0aWFsIHJldmlzaW9uLiI7CiAgICAgICAgb3ItdGVpdi15ZXh0OmxhYmVsIDAuMy4wOwogICAgfQoKICAgIG9yLXRlaXYteWV4dDpkb21haW4gT0FNOwoKICAgIGxpc3QgTWFuYWdlZEVsZW1lbnQgewogICAgICAgIGRlc2NyaXB0aW9uICJBIE1hbmFnZWQgRWxlbWVudCAoTUUpIGlzIGEgbm9kZSBpbnRvIGEgdGVsZWNvbW11bmljYXRpb24KICAgICAgICBuZXR3b3JrIHByb3ZpZGluZyBzdXBwb3J0IGFuZC9vciBzZXJ2aWNlIHRvIHN1YnNjcmliZXJzLiBBbiBNRQogICAgICAgIGNvbW11bmljYXRlcyB3aXRoIGEgbWFuYWdlciBhcHBsaWNhdGlvbiAoZGlyZWN0bHkgb3IgaW5kaXJlY3RseSkKICAgICAgICBvdmVyIG9uZSBvciBtb3JlIGludGVyZmFjZXMgZm9yIHRoZSBwdXJwb3NlIG9mIGJlaW5nIG1vbml0b3JlZAogICAgICAgIGFuZC9vciBjb250cm9sbGVkLiI7CgogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOk9yaWdpbl9FbnRpdHlfTWFwcGluZ19HcnA7CiAgICAgICAga2V5IGlkOwogICAgfQp9
+o-ran-smo-teiv-ran urn:o-ran:smo-teiv-ran RAN [] 2024-10-08 bW9kdWxlIG8tcmFuLXNtby10ZWl2LXJhbiB7CiAgICB5YW5nLXZlcnNpb24gMS4xOwogICAgbmFtZXNwYWNlICJ1cm46by1yYW46c21vLXRlaXYtcmFuIjsKICAgIHByZWZpeCBvci10ZWl2LXJhbjsKCiAgICBpbXBvcnQgby1yYW4tc21vLXRlaXYtY29tbW9uLXlhbmctdHlwZXMge3ByZWZpeCBvci10ZWl2LXR5cGVzOyB9CgogICAgaW1wb3J0IG8tcmFuLXNtby10ZWl2LWNvbW1vbi15YW5nLWV4dGVuc2lvbnMge3ByZWZpeCBvci10ZWl2LXlleHQ7IH0KCiAgICBpbXBvcnQgXzNncHAtY29tbW9uLXlhbmctdHlwZXMgeyBwcmVmaXggdHlwZXMzZ3BwOyB9CgogICAgaW1wb3J0IGlldGYtZ2VvLWxvY2F0aW9uIHsKICAgICAgICBwcmVmaXggZ2VvOwogICAgICAgIHJlZmVyZW5jZSAiUkZDIDkxNzk6IEEgWUFORyBHcm91cGluZyBmb3IgR2VvZ3JhcGhpYyBMb2NhdGlvbnMiOwogICAgfQoKICAgIG9yZ2FuaXphdGlvbiAiT1JBTiI7CiAgICBjb250YWN0ICJUaGUgQXV0aG9ycyI7CiAgICBkZXNjcmlwdGlvbgogICAgICAgICJSQU4gTG9naWNhbCB0b3BvbG9neSBtb2RlbC4KCiAgICAgICAgVGhpcyBtb2RlbCBjb250YWlucyB0aGUgdG9wb2xvZ3kgZW50aXRpZXMgYW5kIHJlbGF0aW9ucyBpbiB0aGUKICAgICAgICBSQU4gTG9naWNhbCBkb21haW4sIHdoaWNoIHJlcHJlc2VudHMgdGhlIGZ1bmN0aW9uYWwgY2FwYWJpbGl0eQogICAgICAgIG9mIHRoZSBkZXBsb3llZCBSQU4gdGhhdCBhcmUgcmVsZXZhbnQgdG8gckFwcHMgdXNlIGNhc2VzLgoKICAgICAgICBDb3B5cmlnaHQgKEMpIDIwMjQgRXJpY3Nzb24KICAgICAgICBNb2RpZmljYXRpb25zIENvcHlyaWdodCAoQykgMjAyNCBPcGVuSW5mcmEgRm91bmRhdGlvbiBFdXJvcGUKCiAgICAgICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTsKICAgICAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAgICAgICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CgogICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAoKICAgICAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAgICAgICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLAogICAgICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgogICAgICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKICAgICAgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KCiAgICAgICAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAiOwoKICAgIHJldmlzaW9uICIyMDI0LTEwLTA4IiB7CiAgICAgICAgZGVzY3JpcHRpb24gIkFkZGVkIHJhbmdlIGZvciBhemltdXRoIGF0dHJpYnV0ZSBvZiBTZWN0b3IuIjsKICAgICAgICBvci10ZWl2LXlleHQ6bGFiZWwgMC42LjA7CiAgICB9CgogICAgcmV2aXNpb24gIjIwMjQtMTAtMDQiIHsKICAgICAgICBkZXNjcmlwdGlvbiAiQWRkZWQgZ3JvdXBpbmdzLCBPcmlnaW5fRW50aXR5X01hcHBpbmdfR3JwIG9yIE9yaWdpbl9SZWxhdGlvbnNoaXBfTWFwcGluZ19HcnAKICAgICAgICB0byB0aGUgY29ycmVzcG9uZGluZyB0b3BvbG9neSBvYmplY3QuIjsKICAgICAgICBvci10ZWl2LXlleHQ6bGFiZWwgMC41LjA7CiAgICB9CgogICAgcmV2aXNpb24gIjIwMjQtMDctMTUiIHsKICAgICAgICBkZXNjcmlwdGlvbiAiVGhpcyByZXZpc2lvbiBhbGlnbnMgTy1SQU4gV29yayBHcm91cCAxMCBTdGFnZSAyIFNwZWNpZmljYXRpb24gKE8tUkFOLldHMTAuVEUmSVYtQ0lNSS4wLVIwMDQudjAyLjAwKSI7CiAgICAgICAgb3ItdGVpdi15ZXh0OmxhYmVsIDAuNC4wOwogICAgfQoKICAgIHJldmlzaW9uICIyMDI0LTA1LTI0IiB7CiAgICAgICAgZGVzY3JpcHRpb24gIkluaXRpYWwgcmV2aXNpb24uIjsKICAgICAgICBvci10ZWl2LXlleHQ6bGFiZWwgMC4zLjA7CiAgICB9CgogICAgb3ItdGVpdi15ZXh0OmRvbWFpbiBSQU47CgogICAgbGlzdCBPUlVGdW5jdGlvbiB7CiAgICAgICAgZGVzY3JpcHRpb24gIk8tUkFOIFJhZGlvIFVuaXQgKE8tUlUpLgoKICAgICAgICBBIGxvZ2ljYWwgbm9kZSBob3N0aW5nIExvdy1QSFkgbGF5ZXIgYW5kIFJGIHByb2Nlc3NpbmcgYmFzZWQgb24gYQogICAgICAgIGxvd2VyIGxheWVyIGZ1bmN0aW9uYWwgc3BsaXQuICBUaGlzIGlzIHNpbWlsYXIgdG8gM0dQUOKAmXMg4oCcVFJQ4oCdIG9yCiAgICAgICAg4oCcUlJI4oCdIGJ1dCBtb3JlIHNwZWNpZmljIGluIGluY2x1ZGluZyB0aGUgTG93LVBIWSBsYXllciAoRkZUL2lGRlQsCiAgICAgICAgUFJBQ0ggZXh0cmFjdGlvbikuIFRoZSBPLVJVIHRlcm1pbmF0ZXMgdGhlIE9wZW4gRnJvbnRoYXVsIGludGVyZmFjZQogICAgICAgIChhbHNvIGtub3duIGFzIExMUyBpbnRlcmZhY2UpIGFzIHdlbGwgYXMgTG93LVBIWSBmdW5jdGlvbnMgb2YgdGhlCiAgICAgICAgcmFkaW8gaW50ZXJmYWNlIHRvd2FyZHMgdGhlIFVFLiBUaGlzIGlzIGRlcGxveWVkIGFzIGEgUE5GLiBUaGUgTy1SVQogICAgICAgIHRlcm1pbmF0ZXMgdGhlIE9wZW4gRnJvbnRoYXVsIE0tUGxhbmUgaW50ZXJmYWNlIHRvd2FyZHMgdGhlIE8tRFUKICAgICAgICBhbmQgU01PLgoKICAgICAgICBOb3RlOiBJbiBUb3BvbG9neSwgeW91IGNhbiBjcmVhdGUsIHJlYWQsIHVwZGF0ZSwgYW5kIGRlbGV0ZQogICAgICAgIHRoZSBPLVJVIG9iamVjdC4iOwoKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6VG9wX0dycF9UeXBlOwogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpPcmlnaW5fRW50aXR5X01hcHBpbmdfR3JwOwogICAgICAgIGtleSBpZDsKCiAgICAgICAgY29udGFpbmVyIGF0dHJpYnV0ZXMgewogICAgICAgICAgICBsZWFmIG9ydUlkIHsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJVbmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIE8tUlUgd2l0aGluIGEgT1JVRnVuY3Rpb24iOwogICAgICAgICAgICAgICAgdHlwZSBpbnQ2NDsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBsaXN0IE5lYXJSVFJJQ0Z1bmN0aW9uIHsKICAgICAgICBkZXNjcmlwdGlvbiAiTmVhci1SZWFsLVRpbWUgUkFOIEludGVsbGlnZW50IENvbnRyb2xsZXIgKE5lYXItUlQgUklDKS4KCiAgICAgICAgQW4gTy1SQU4gTmV0d29yayBGdW5jdGlvbiAoTkYpIHRoYXQgZW5hYmxlcyBuZWFyLXJlYWwtdGltZSBjb250cm9sCiAgICAgICAgYW5kIG9wdGltaXphdGlvbiBvZiBSQU4gZWxlbWVudHMgYW5kIHJlc291cmNlcyB2aWEgZmluZS1ncmFpbmVkCiAgICAgICAgZGF0YSBjb2xsZWN0aW9uIGFuZCBhY3Rpb25zIG92ZXIgRTIgaW50ZXJmYWNlLiBJdCBtYXkgaW5jbHVkZQogICAgICAgIEFJL01MIChBcnRpZmljaWFsIEludGVsbGlnZW5jZSAvIE1hY2hpbmUgTGVhcm5pbmcpIHdvcmtmbG93CiAgICAgICAgaW5jbHVkaW5nIG1vZGVsIHRyYWluaW5nLCBpbmZlcmVuY2UsIGFuZCB1cGRhdGVzLgoKICAgICAgICBOb3RlOiBJbiBUb3BvbG9neSwgeW91IGNhbiBjcmVhdGUsIHJlYWQsIHVwZGF0ZSwgYW5kIGRlbGV0ZQogICAgICAgIHRoZSBOZWFyLVJUIFJJQyBvYmplY3QuIjsKCiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOlRvcF9HcnBfVHlwZTsKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6T3JpZ2luX0VudGl0eV9NYXBwaW5nX0dycDsKICAgICAgICBrZXkgaWQ7CgogICAgICAgIGNvbnRhaW5lciBhdHRyaWJ1dGVzIHsKICAgICAgICAgICAgbGVhZiBuZWFyUnRSaWNJZCB7CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiVW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBOZWFyLVJUIFJJQyB3aXRoaW4gYSBOZWFyUlRSSUNGdW5jdGlvbiI7CiAgICAgICAgICAgICAgICB0eXBlIGludDY0OwogICAgICAgICAgICB9CgogICAgICAgICAgICBjb250YWluZXIgcExNTklkIHsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJQTE1OIGlkZW50aWZpZXIgdG8gYmUgdXNlZCBhcyBwYXJ0IG9mIGdsb2JhbCBSQU4KICAgICAgICAgICAgICAgIG5vZGUgaWRlbnRpdHkiOwogICAgICAgICAgICAgICAgdXNlcyB0eXBlczNncHA6UExNTklkOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIGxpc3QgT0RVRnVuY3Rpb24gewogICAgICAgIGRlc2NyaXB0aW9uICJPLVJBTiBEaXN0cmlidXRlZCBVbml0IChPLURVKS4KCiAgICAgICAgVGhlIE8tRFUgaXMgYW4gTy1SQU4gTkYgaW4gdGhlIE8tUkFOIEFyY2hpdGVjdHVyZS4gQW4gTy1EVSwgY29tYmluZWQKICAgICAgICB3aXRoIG9uZSBvciBtb3JlIE8tUlUocykgY29ubmVjdGVkIHRvIGl0LCBzdXBwb3J0cyBhbmQgaXMgZnVsbHkKICAgICAgICBjb21wYXRpYmxlIHdpdGggdGhlIGZ1bmN0aW9ucyBvZiBhIGdOQi1EVSBhcyBkZWZpbmVkIGJ5IDNHUFAgVFMgMzguNDAxLgoKICAgICAgICBUaGUgZm9sbG93aW5nIGlzIHRydWUgZm9yIGEgTy1EVToKICAgICAgICBJcyBjb25uZWN0ZWQgdG8gdGhlIE8tQ1UtQ1AgdGhyb3VnaCB0aGUgRjEtQyBpbnRlcmZhY2UuIElzCiAgICAgICAgY29ubmVjdGVkIHRvIHRoZSBPLUNVLVVQIHRocm91Z2ggdGhlIEYxLVUgaW50ZXJmYWNlLiBPbmUgTy1EVSBpcwogICAgICAgIGNvbm5lY3RlZCB0byBvbmx5IG9uZSBPLUNVLUNQLiBPbmUgTy1EVSBjYW4gYmUgY29ubmVjdGVkIHRvCiAgICAgICAgbXVsdGlwbGUgTy1DVS1VUHMgdW5kZXIgdGhlIGNvbnRyb2wgb2YgdGhlIHNhbWUgTy1DVS1DUC4KCiAgICAgICAgTm90ZTogQSBnTkIgbWF5IGNvbnNpc3Qgb2YgYSBPLUNVLUNQLCBtdWx0aXBsZSBPLUNVLVVQcyBhbmQKICAgICAgICBtdWx0aXBsZSBPLURVcy4gTy1EVSBpcyBhIGNvbmNyZXRlIGNsYXNzIHRoYXQgZXh0ZW5kcyB0aGUgTkctUkFOCiAgICAgICAgbm9kZSBvYmplY3QuIEluIFRvcG9sb2d5LCB5b3UgY2FuIGNyZWF0ZSwgcmVhZCwgdXBkYXRlLCBhbmQgZGVsZXRlCiAgICAgICAgdGhlIGdOQi1EVSBvYmplY3QuIjsKCiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOlRvcF9HcnBfVHlwZTsKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6T3JpZ2luX0VudGl0eV9NYXBwaW5nX0dycDsKICAgICAgICBrZXkgaWQ7CgogICAgICAgIGNvbnRhaW5lciBhdHRyaWJ1dGVzIHsKICAgICAgICAgICAgY29udGFpbmVyIGRVcExNTklkIHsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJQTE1OIGlkZW50aWZpZXIgdXNlZCBhcyBwYXJ0IG9mIFBNIEV2ZW50cyBkYXRhIjsKICAgICAgICAgICAgICAgIHVzZXMgdHlwZXMzZ3BwOlBMTU5JZDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbGVhZiBnTkJEVUlkIHsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJVbmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIERVIHdpdGhpbiBhIGdOb2RlQiI7CiAgICAgICAgICAgICAgICB0eXBlIGludDY0OwogICAgICAgICAgICB9CgogICAgICAgICAgICBsZWFmIGdOQklkIHsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJJZGVudGl0eSBvZiBnTm9kZUIgd2l0aGluIGEgUExNTiI7CiAgICAgICAgICAgICAgICB0eXBlIGludDY0OwogICAgICAgICAgICB9CgogICAgICAgICAgICBsZWFmIGdOQklkTGVuZ3RoIHsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJMZW5ndGggb2YgZ05CSWQgYml0IHN0cmluZyByZXByZXNlbnRhdGlvbiI7CiAgICAgICAgICAgICAgICB0eXBlIGludDMyOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIGxpc3QgT0NVQ1BGdW5jdGlvbiB7CiAgICAgICAgZGVzY3JpcHRpb24gIk8tUkFOIENlbnRyYWxpemVkIFVuaXQgQ29udHJvbCBQbGFuZSAoTy1DVS1DUCkKCiAgICAgICAgVGhpcyBpcyBhIGxvZ2ljYWwgbm9kZSBob3N0aW5nIHRoZSBSYWRpbyBSZXNvdXJjZSBDb250cm9sIChSUkMpIGFuZAogICAgICAgIHRoZSBjb250cm9sIHBsYW5lIHBhcnQgb2YgdGhlIFBhY2tldCBEYXRhIENvbnZlcmdlbmNlIFByb3RvY29sCiAgICAgICAgKFBEQ1ApLiBUaGUgTy1DVS1DUCB0ZXJtaW5hdGVzIHRoZSBFMSBpbnRlcmZhY2UgY29ubmVjdGVkIHdpdGgKICAgICAgICB0aGUgTy1DVS1VUCBhbmQgdGhlIEYxLUMgaW50ZXJmYWNlIGNvbm5lY3RlZCB3aXRoIHRoZSBPLVJBTgogICAgICAgIERpc3RyaWJ1dGVkIFVuaXQgKE8tRFUpLgoKICAgICAgICBUaGUgZm9sbG93aW5nIGlzIHRydWUgZm9yIGEgTy1DVS1DUDoKICAgICAgICBJcyBjb25uZWN0ZWQgdG8gdGhlIE8tRFUgdGhyb3VnaCB0aGUgRjEtQyBpbnRlcmZhY2UuIElzIGNvbm5lY3RlZAogICAgICAgIHRvIHRoZSBPLUNVLVVQIHRocm91Z2ggdGhlIEUxIGludGVyZmFjZS4gT25seSBvbmUgTy1DVS1DUCBpcwogICAgICAgIGNvbm5lY3RlZCB0byBvbmUgTy1EVS4gT25seSBvbmUgTy1DVS1DUCBpcyBjb25uZWN0ZWQgdG8gb25lCiAgICAgICAgTy1DVS1VUC4gT25lIE8tRFUgY2FuIGJlIGNvbm5lY3RlZCB0byBtdWx0aXBsZSBPLUNVLVVQcyB1bmRlcgogICAgICAgIHRoZSBjb250cm9sIG9mIHRoZSBzYW1lIE8tQ1UtQ1AuIE9uZSBPLUNVLVVQIGNhbiBiZSBjb25uZWN0ZWQgdG8KICAgICAgICBtdWx0aXBsZSBEVXMgdW5kZXIgdGhlIGNvbnRyb2wgb2YgdGhlIHNhbWUgTy1DVS1DUC4KCiAgICAgICAgTm90ZTogQSBnTkIgbWF5IGNvbnNpc3Qgb2YgYSBPLUNVLUNQLCBtdWx0aXBsZSBPLUNVLVVQcyBhbmQKICAgICAgICBtdWx0aXBsZSBPLURVcy4gQW4gTy1DVS1DUCBpcyBhIGNvbmNyZXRlIGNsYXNzIHRoYXQgZXh0ZW5kcyB0aGUKICAgICAgICBORy1SQU4gbm9kZSBvYmplY3QuIEluIFRvcG9sb2d5LCB5b3UgY2FuIGNyZWF0ZSwgcmVhZCwgdXBkYXRlLCBhbmQKICAgICAgICBkZWxldGUgdGhlIE8tQ1UtQ1Agb2JqZWN0LiI7CgogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOk9yaWdpbl9FbnRpdHlfTWFwcGluZ19HcnA7CiAgICAgICAga2V5IGlkOwoKICAgICAgICBjb250YWluZXIgYXR0cmlidXRlcyB7CiAgICAgICAgICAgIGxlYWYgZ05CQ1VOYW1lIHsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJOYW1lIG9mIGdOb2RlQi1DVSI7CiAgICAgICAgICAgICAgICB0eXBlIHN0cmluZzsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbGVhZiBnTkJJZCB7CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiSWRlbnRpdHkgb2YgZ05vZGVCIHdpdGhpbiBhIFBMTU4iOwogICAgICAgICAgICAgICAgdHlwZSBpbnQ2NDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbGVhZiBnTkJJZExlbmd0aCB7CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiTGVuZ3RoIG9mIGdOQklkIGJpdCBzdHJpbmcgcmVwcmVzZW50YXRpb24iOwogICAgICAgICAgICAgICAgdHlwZSBpbnQzMjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgY29udGFpbmVyIHBMTU5JZCB7CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiUExNTiBpZGVudGlmaWVyIHRvIGJlIHVzZWQgYXMgcGFydCBvZiBnbG9iYWwgUkFOCiAgICAgICAgICAgICAgICBub2RlIGlkZW50aXR5IjsKICAgICAgICAgICAgICAgIHVzZXMgdHlwZXMzZ3BwOlBMTU5JZDsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBsaXN0IE9DVVVQRnVuY3Rpb24gewogICAgICAgIGRlc2NyaXB0aW9uICJPLVJBTiBDZW50cmFsaXplZCBVbml0IFVzZXIgUGxhbmUgKE8tQ1UtVVApCgogICAgICAgIEFuIE8tQ1UtVVAgaXMgYSBsb2dpY2FsIG5vZGUgaG9zdGluZyB0aGUgVXNlciBQbGFuZSBwYXJ0IG9mIHRoZQogICAgICAgIFBhY2tldCBEYXRhIENvbnZlcmdlbmNlIFByb3RvY29sIChQRENQKSBhbmQgdGhlIFNlcnZpY2UgRGF0YQogICAgICAgIEFkYXB0YXRpb24gUHJvdG9jb2wgKFNEQVApLiBUaGUgTy1DVS1VUCB0ZXJtaW5hdGVzIHRoZSBFMSBpbnRlcmZhY2UKICAgICAgICBjb25uZWN0ZWQgd2l0aCB0aGUgTy1DVS1DUCBhbmQgdGhlIEYxLVUgaW50ZXJmYWNlIGNvbm5lY3RlZCB3aXRoCiAgICAgICAgdGhlIE8tUkFOIERpc3RyaWJ1dGVkIFVuaXQgKE8tRFUpLgoKICAgICAgICBUaGUgZm9sbG93aW5nIGlzIHRydWUgZm9yIGEgTy1DVS1VUDoKICAgICAgICBJcyBjb25uZWN0ZWQgdG8gdGhlIE8tRFUgdGhyb3VnaCB0aGUgRjEtVSBpbnRlcmZhY2UuIElzIGNvbm5lY3RlZAogICAgICAgIHRvIHRoZSBPLUNVLUNQIHRocm91Z2ggdGhlIEUxIGludGVyZmFjZS4gT25lIE8tQ1UtVVAgaXMKICAgICAgICBjb25uZWN0ZWQgdG8gb25seSBvbmUgTy1DVS1DUC4gT25lIE8tRFUgY2FuIGJlIGNvbm5lY3RlZCB0bwogICAgICAgIG11bHRpcGxlIE8tQ1UtVVBzIHVuZGVyIHRoZSBjb250cm9sIG9mIHRoZSBzYW1lIE8tQ1UtQ1AuIE9uZQogICAgICAgIE8tQ1UtVVAgY2FuIGJlIGNvbm5lY3RlZCB0byBtdWx0aXBsZSBEVXMgdW5kZXIgdGhlIGNvbnRyb2wgb2YgdGhlCiAgICAgICAgc2FtZSBPLUNVLUNQLgoKICAgICAgICBOb3RlOiBBIGdOQiBtYXkgY29uc2lzdCBvZiBhbiBPLUNVLUNQLCBtdWx0aXBsZSBPLUNVLVVQcyBhbmQKICAgICAgICBtdWx0aXBsZSBPLURVcy4gQW4gTy1DVS1VUCBpcyBhIGNvbmNyZXRlIGNsYXNzIHRoYXQgZXh0ZW5kcyB0aGUKICAgICAgICBORy1SQU4gbm9kZSBvYmplY3QuIEluIFRvcG9sb2d5LCB5b3UgY2FuIGNyZWF0ZSwgcmVhZCwgdXBkYXRlLCBhbmQKICAgICAgICBkZWxldGUgdGhlIE8tQ1UtVVAgb2JqZWN0LiI7CgogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOk9yaWdpbl9FbnRpdHlfTWFwcGluZ19HcnA7CiAgICAgICAga2V5IGlkOwoKICAgICAgICBjb250YWluZXIgYXR0cmlidXRlcyB7CiAgICAgICAgICAgIGxlYWYgZ05CSWQgewogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIklkZW50aXR5IG9mIGdOb2RlQiB3aXRoaW4gYSBQTE1OIjsKICAgICAgICAgICAgICAgIHR5cGUgaW50NjQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGxlYWYgZ05CSWRMZW5ndGggewogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIkxlbmd0aCBvZiBnTkJJZCBiaXQgc3RyaW5nIHJlcHJlc2VudGF0aW9uIjsKICAgICAgICAgICAgICAgIHR5cGUgaW50MzI7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGxpc3QgcExNTklkTGlzdCB7CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiTGlzdCBvZiBQTE1OIGlkZW50aWZpZXIgdG8gYmUgdXNlZCBhcyBwYXJ0IG9mIGdsb2JhbCBSQU4gbm9kZSBpZGVudGl0eSI7CiAgICAgICAgICAgICAgICB1c2VzIHR5cGVzM2dwcDpQTE1OSWQ7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgbGlzdCBOUkNlbGxDVSB7CiAgICAgICAgZGVzY3JpcHRpb24gIlJlcHJlc2VudHMgYW4gTlIgQ2VsbCBpbiBnTm9kZUItQ1UuCgogICAgICAgIDVHIE5SIGlzIGEgbmV3IHJhZGlvIGFjY2VzcyB0ZWNobm9sb2d5IChSQVQpIGRldmVsb3BlZCBieSAzR1BQIGZvcgogICAgICAgIHRoZSA1RyAoZmlmdGggZ2VuZXJhdGlvbikgbW9iaWxlIG5ldHdvcmsuIEl0IGlzIGRlc2lnbmVkIHRvIGJlIHRoZQogICAgICAgIGdsb2JhbCBzdGFuZGFyZCBmb3IgdGhlIGFpciBpbnRlcmZhY2Ugb2YgNUcgbmV0d29ya3MuCgogICAgICAgIDVHIE5SIGhhcyBzeW5jaHJvbml6YXRpb24gc2lnbmFsIHRoYXQgaXMga25vd24gYXMgUHJpbWFyeQogICAgICAgIFN5bmNocm9uaXphdGlvbiBTaWduYWwgKFBTUykgYW5kIFNlY29uZGFyeSBTeW5jaHJvbml6YXRpb24KICAgICAgICBTaWduYWwgKFNTUykuIFRoZXNlIHNpZ25hbHMgYXJlIHNwZWNpZmljIHRvIE5SIHBoeXNpY2FsIGxheWVyIGFuZAogICAgICAgIHByb3ZpZGUgdGhlIGZvbGxvd2luZyBpbmZvcm1hdGlvbiByZXF1aXJlZCBieSBVRSBmb3IgZG93bmxpbmsKICAgICAgICBzeW5jaHJvbml6YXRpb246IFBTUyBwcm92aWRlcyBSYWRpbyBGcmFtZSBCb3VuZGFyeSAoUG9zaXRpb24gb2YgMXN0CiAgICAgICAgU3ltYm9sIGluIGEgUmFkaW8gZnJhbWUpIFNTUyBwcm92aWRlcyBTdWJmcmFtZSBCb3VuZGFyeSAoUG9zaXRpb24gb2YKICAgICAgICAxc3QgU3ltYm9sIGluIGEgU3ViZnJhbWUpIFBoeXNpY2FsIExheWVyIENlbGwgSUQgKFBDSSkgaW5mb3JtYXRpb24KICAgICAgICB1c2luZyBib3RoIFBTUyBhbmQgU1NTLiI7CgogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOk9yaWdpbl9FbnRpdHlfTWFwcGluZ19HcnA7CiAgICAgICAga2V5IGlkOwoKICAgICAgICBjb250YWluZXIgYXR0cmlidXRlcyB7CiAgICAgICAgICAgIGxlYWYgY2VsbExvY2FsSWQgewogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIlVzZWQgdG9nZXRoZXIgd2l0aCBnTm9kZUIgaWRlbnRpZmllciB0byBpZGVudGlmeSBOUgogICAgICAgICAgICAgICAgY2VsbCBpbiBQTE1OLiBVc2VkIHRvZ2V0aGVyIHdpdGggZ05CSWQgdG8gZm9ybSBOQ0kuIjsKICAgICAgICAgICAgICAgIHR5cGUgaW50MzI7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGNvbnRhaW5lciBwbG1uSWQgewogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIlBMTU4gSUQgZm9yIE5SIENHSS4gSWYgZW1wdHksCiAgICAgICAgICAgICAgICBHTkJDVUNQRnVuY3Rpb246OnBMTU5JZCBpcyB1c2VkIGZvciBQTE1OIElEIGluIE5SIENHSSI7CiAgICAgICAgICAgICAgICB1c2VzIHR5cGVzM2dwcDpQTE1OSWQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGxlYWYgbkNJIHsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJOUiBDZWxsIElkZW50aXR5IjsKICAgICAgICAgICAgICAgIHR5cGUgaW50NjQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGxlYWYgblJUQUMgewogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIk5SIFRyYWNraW5nIEFyZWEgQ29kZSAoVEFDKSI7CiAgICAgICAgICAgICAgICB0eXBlIGludDMyOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIGxpc3QgTlJDZWxsRFUgewogICAgICAgIGRlc2NyaXB0aW9uICJSZXByZXNlbnRzIGFuIE5SIENlbGwgaW4gZ05vZGVCLURVLgoKICAgICAgICA1RyBOUiBpcyBhIG5ldyByYWRpbyBhY2Nlc3MgdGVjaG5vbG9neSAoUkFUKSBkZXZlbG9wZWQgYnkgM0dQUCBmb3IKICAgICAgICB0aGUgNUcgKGZpZnRoIGdlbmVyYXRpb24pIG1vYmlsZSBuZXR3b3JrLiBJdCBpcyBkZXNpZ25lZCB0byBiZSB0aGUKICAgICAgICBnbG9iYWwgc3RhbmRhcmQgZm9yIHRoZSBhaXIgaW50ZXJmYWNlIG9mIDVHIG5ldHdvcmtzLgoKICAgICAgICA1RyBOUiBoYXMgc3luY2hyb25pemF0aW9uIHNpZ25hbCB0aGF0IGlzIGtub3duIGFzIFByaW1hcnkKICAgICAgICBTeW5jaHJvbml6YXRpb24gc2lnbmFsIChQU1MpIGFuZCBTZWNvbmRhcnkgU3luY2hyb25pemF0aW9uIHNpZ25hbAogICAgICAgIChTU1MpLiBUaGVzZSBzaWduYWxzIGFyZSBzcGVjaWZpYyB0byBOUiBwaHlzaWNhbCBsYXllciBhbmQgcHJvdmlkZQogICAgICAgIHRoZSBmb2xsb3dpbmcgaW5mb3JtYXRpb24gcmVxdWlyZWQgYnkgVUUgZm9yIGRvd25saW5rCiAgICAgICAgc3luY2hyb25pemF0aW9uOiBQU1MgcHJvdmlkZXMgUmFkaW8gRnJhbWUgQm91bmRhcnkgKFBvc2l0aW9uIG9mIDFzdAogICAgICAgIFN5bWJvbCBpbiBhIFJhZGlvIGZyYW1lKSBTU1MgcHJvdmlkZXMgU3ViZnJhbWUgQm91bmRhcnkgKFBvc2l0aW9uIG9mCiAgICAgICAgMXN0IFN5bWJvbCBpbiBhIFN1YmZyYW1lKSBQaHlzaWNhbCBMYXllciBDZWxsIElEIChQQ0kpIGluZm9ybWF0aW9uCiAgICAgICAgdXNpbmcgYm90aCBQU1MgYW5kIFNTUy4iOwoKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6VG9wX0dycF9UeXBlOwogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpPcmlnaW5fRW50aXR5X01hcHBpbmdfR3JwOwogICAgICAgIGtleSBpZDsKCiAgICAgICAgY29udGFpbmVyIGF0dHJpYnV0ZXMgewogICAgICAgICAgICBsZWFmIGNlbGxMb2NhbElkIHsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJVc2VkIHRvZ2V0aGVyIHdpdGggZ05vZGVCIGlkZW50aWZpZXIgdG8gaWRlbnRpZnkgTlIKICAgICAgICAgICAgICAgIGNlbGwgaW4gUExNTi4gVXNlZCB0b2dldGhlciB3aXRoIGdOQklkIHRvIGZvcm0gTkNJLiI7CiAgICAgICAgICAgICAgICB0eXBlIGludDMyOwogICAgICAgICAgICB9CgogICAgICAgICAgICBsZWFmIG5DSSB7CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiTlIgQ2VsbCBJZGVudGl0eS4iOwogICAgICAgICAgICAgICAgdHlwZSBpbnQ2NDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbGVhZiBuUlBDSSB7CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiVGhlIFBoeXNpY2FsIENlbGwgSWRlbnRpdHkgKFBDSSkgb2YgdGhlIE5SIGNlbGwuIjsKICAgICAgICAgICAgICAgIHR5cGUgaW50MzI7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGxlYWYgblJUQUMgewogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIk5SIFRyYWNraW5nIEFyZWEgQ29kZSAoVEFDKS4iOwogICAgICAgICAgICAgICAgdHlwZSBpbnQzMjsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBsaXN0IE5SU2VjdG9yQ2FycmllciB7CiAgICAgICAgZGVzY3JpcHRpb24gIlRoZSBOUiBTZWN0b3IgQ2FycmllciBvYmplY3QgcHJvdmlkZXMgdGhlIGF0dHJpYnV0ZXMgZm9yCiAgICAgICAgZGVmaW5pbmcgdGhlIGxvZ2ljYWwgY2hhcmFjdGVyaXN0aWNzIG9mIGEgY2FycmllciAoY2VsbCkgaW4gYQogICAgICAgIHNlY3Rvci4gQSBzZWN0b3IgaXMgYSBjb3ZlcmFnZSBhcmVhIGFzc29jaWF0ZWQgd2l0aCBhIGJhc2Ugc3RhdGlvbgogICAgICAgIGhhdmluZyBpdHMgb3duIGFudGVubmFzLCByYWRpbyBwb3J0cywgYW5kIGNvbnRyb2wgY2hhbm5lbHMuIFRoZQogICAgICAgIGNvbmNlcHQgb2Ygc2VjdG9ycyB3YXMgZGV2ZWxvcGVkIHRvIGltcHJvdmUgY28tY2hhbm5lbCBpbnRlcmZlcmVuY2UKICAgICAgICBpbiBjZWxsdWxhciBzeXN0ZW1zLCBhbmQgbW9zdCB3aXJlbGVzcyBzeXN0ZW1zIHVzZSB0aHJlZSBzZWN0b3IKICAgICAgICBjZWxscy4iOwoKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6VG9wX0dycF9UeXBlOwogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpPcmlnaW5fRW50aXR5X01hcHBpbmdfR3JwOwogICAgICAgIGtleSBpZDsKCiAgICAgICAgY29udGFpbmVyIGF0dHJpYnV0ZXMgewogICAgICAgICAgICBsZWFmIGFyZmNuREwgewogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIk5SIEFic29sdXRlIFJhZGlvIEZyZXF1ZW5jeSBDaGFubmVsIE51bWJlcgogICAgICAgICAgICAgICAgKE5SLUFSRkNOKSBmb3IgZG93bmxpbmsiOwogICAgICAgICAgICAgICAgdHlwZSBpbnQzMjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbGVhZiBhcmZjblVMIHsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJOUiBBYnNvbHV0ZSBSYWRpbyBmcmVxdWVuY3kgQ2hhbm5lbCBOdW1iZXIKICAgICAgICAgICAgICAgIChOUi1BUkZDTikgZm9yIHVwbGluay4iOwogICAgICAgICAgICAgICAgdHlwZSBpbnQzMjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbGVhZiBmcmVxdWVuY3lETCB7CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiUkYgUmVmZXJlbmNlIEZyZXF1ZW5jeSBvZiBkb3dubGluayBjaGFubmVsIjsKICAgICAgICAgICAgICAgIHR5cGUgaW50MzI7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGxlYWYgZnJlcXVlbmN5VUwgewogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIlJGIFJlZmVyZW5jZSBGcmVxdWVuY3kgb2YgdXBsaW5rIGNoYW5uZWwiOwogICAgICAgICAgICAgICAgdHlwZSBpbnQzMjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbGVhZiBiU0NoYW5uZWxCd0RMIHsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJCUyBDaGFubmVsIGJhbmR3aWR0aCBpbiBNSHogZm9yIGRvd25saW5rLiI7CiAgICAgICAgICAgICAgICB0eXBlIGludDMyOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIGxpc3QgQW50ZW5uYUNhcGFiaWxpdHkgewogICAgICAgIGRlc2NyaXB0aW9uICJUaGlzIE1PIHNlcnZlcyBhcyBhIG1hcHBpbmcgYmV0d2VlbiB0aGUgY2VsbCBhbmQgdGhlIFJCUwogICAgICAgIGVxdWlwbWVudCB1c2VkIHRvIHByb3ZpZGUgY292ZXJhZ2UgaW4gYSBjZXJ0YWluIGdlb2dyYXBoaWNhbCBhcmVhLgogICAgICAgIFRoZSBNTyBhbHNvIGNvbnRyb2xzIHRoZSBtYXhpbXVtIG91dHB1dCBwb3dlciBvZiB0aGUgc2VjdG9yLiI7CgogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOk9yaWdpbl9FbnRpdHlfTWFwcGluZ19HcnA7CiAgICAgICAga2V5IGlkOwoKICAgICAgICBjb250YWluZXIgYXR0cmlidXRlcyB7CiAgICAgICAgICAgIGxlYWYtbGlzdCBlVXRyYW5GcUJhbmRzIHsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJMaXN0IG9mIExURSBmcmVxdWVuY3kgYmFuZHMgdGhhdCBhc3NvY2lhdGVkCiAgICAgICAgICAgICAgICBoYXJkd2FyZSBzdXBwb3J0cyI7CiAgICAgICAgICAgICAgICB0eXBlIHN0cmluZzsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbGVhZi1saXN0IGdlcmFuRnFCYW5kcyB7CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiTGlzdCBvZiBHRVJBTiBmcmVxdWVuY3kgYmFuZHMgdGhhdCBhc3NvY2lhdGVkCiAgICAgICAgICAgICAgICBoYXJkd2FyZSBzdXBwb3J0cyI7CiAgICAgICAgICAgICAgICB0eXBlIHN0cmluZzsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbGVhZi1saXN0IG5SRnFCYW5kcyB7CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiTGlzdCBvZiBOUiBmcmVxdWVuY3kgYmFuZHMgYXNzb2NpYXRlZCBoYXJkd2FyZQogICAgICAgICAgICAgICAgc3VwcG9ydHMiOwogICAgICAgICAgICAgICAgdHlwZSBzdHJpbmc7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgbGlzdCBTZWN0b3IgewogICAgICAgIGRlc2NyaXB0aW9uICJBIGdyb3VwIG9mIGNvLWxvY2F0ZWQgQ2VsbHMgdGhhdCBoYXZlIGEgc2hhcmVkCiAgICAgICAgY292ZXJhZ2UgYXJlYS4iOwoKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6VG9wX0dycF9UeXBlOwogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpPcmlnaW5fRW50aXR5X01hcHBpbmdfR3JwOwogICAgICAgIGtleSBpZDsKCiAgICAgICAgY29udGFpbmVyIGF0dHJpYnV0ZXMgewogICAgICAgICAgICBsZWFmIHNlY3RvcklkIHsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJVbml2ZXJzYWxseSB1bmlxdWUgSUQgZ2VuZXJhdGVkIGJ5IHRoZSBzZWN0b3IncwogICAgICAgICAgICAgICAgZGlzY292ZXJ5IG1lY2hhbmlzbS4iOwogICAgICAgICAgICAgICAgdHlwZSB1aW50NjQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHVzZXMgZ2VvOmdlby1sb2NhdGlvbjsKCiAgICAgICAgICAgIGxlYWYgYXppbXV0aCB7CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiQXZlcmFnZSB2YWx1ZSBvZiB0aGUgYXppbXV0aHMgb2YgdGhlIGNlbGxzCiAgICAgICAgICAgICAgICBjb21wcmlzaW5nIHRoZSBzZWN0b3IsIGRldGVybWluZWQgZHVyaW5nIHNlY3RvciBkaXNjb3ZlcnkuIjsKICAgICAgICAgICAgICAgIHR5cGUgZGVjaW1hbDY0ewogICAgICAgICAgICAgICAgICAgIGZyYWN0aW9uLWRpZ2l0cyAxOwogICAgICAgICAgICAgICAgICAgIHJhbmdlICIwLi4zNjAiOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgdW5pdHMgImRlY2ltYWwgZGVncmVlcyI7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgoKICAgIG9yLXRlaXYteWV4dDpiaURpcmVjdGlvbmFsVG9wb2xvZ3lSZWxhdGlvbnNoaXAgT0RVRlVOQ1RJT05fUFJPVklERVNfTlJDRUxMRFUgeyAvLyAxIHRvIDAuLm4KCiAgICAgICAgZGVzY3JpcHRpb24KICAgICAgICAgICAgIlRoZSBhU2lkZSBvZiB0aGlzIHJlbGF0aW9uc2hpcCBpcyBhbiBpbnN0YW5jZSBvZiB0aGUgT0RVRnVuY3Rpb24gdHlwZS4KICAgICAgICAgICAgVGhlIGJTaWRlIG9mIHRoaXMgcmVsYXRpb25zaGlwIGlzIGFuIGluc3RhbmNlIG9mIHRoZSBOUkNlbGxEVSB0eXBlLgogICAgICAgICAgICBUaGUgT0RVRnVuY3Rpb24gcmVwcmVzZW50cyB0aGUgRFUgY29tcG9uZW50IG9mIGEgZ05CIHRoYXQgcHJvdmlkZXMgdGhlIE5SQ2VsbERVLgogICAgICAgICAgICBBIE9EVUZ1bmN0aW9uIGluc3RhbmNlIGNhbiBwcm92aWRlIG1hbnkgTlJDZWxsRFVzLgogICAgICAgICAgICBBbiBOUkNlbGxEVSBpbnN0YW5jZSBtdXN0IGJlIHByb3ZpZGVkIGJ5IGFuIE9EVUZ1bmN0aW9uLgogICAgICAgICAgICAiOwoKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6VG9wX0dycF9UeXBlOwogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpPcmlnaW5fRW50aXR5X01hcHBpbmdfR3JwOwogICAgICAgIGtleSBpZDsKCiAgICAgICAgbGVhZi1saXN0IHByb3ZpZGVkLW5yQ2VsbER1IHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIk8tRFUgRnVuY3Rpb24gcHJvdmlkZXMgTlIgQ2VsbC1EVS4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YVNpZGUgT0RVRnVuY3Rpb247CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICB9CgogICAgICAgIGxlYWYgcHJvdmlkZWQtYnktb2R1RnVuY3Rpb24gewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiTlIgQ2VsbC1EVSBwcm92aWRlZCBieSBPLURVIEZ1bmN0aW9uLiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDpiU2lkZSBOUkNlbGxEVTsKICAgICAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgICAgICBtYW5kYXRvcnkgdHJ1ZTsKICAgICAgICB9CiAgICB9CgogICAgb3ItdGVpdi15ZXh0OmJpRGlyZWN0aW9uYWxUb3BvbG9neVJlbGF0aW9uc2hpcCBPRFVGVU5DVElPTl9QUk9WSURFU19OUlNFQ1RPUkNBUlJJRVIgeyAvLyAxIHRvIDAuLm4KCiAgICAgICAgZGVzY3JpcHRpb24KICAgICAgICAgICAgIlRoZSBhU2lkZSBvZiB0aGlzIHJlbGF0aW9uc2hpcCBpcyBhbiBpbnN0YW5jZSBvZiB0aGUgT0RVRnVuY3Rpb24gdHlwZS4KICAgICAgICAgICAgVGhlIGJTaWRlIG9mIHRoaXMgcmVsYXRpb25zaGlwIGlzIGFuIGluc3RhbmNlIG9mIHRoZSBOUlNlY3RvckNhcnJpZXIgdHlwZS4KICAgICAgICAgICAgVGhlIE9EVUZ1bmN0aW9uIHJlcHJlc2VudHMgdGhlIERVIGNvbXBvbmVudCBvZiBhIGdOQiB0aGF0IHByb3ZpZGVzIHRoZSBOUlNlY3RvckNhcnJpZXIuCiAgICAgICAgICAgIEEgT0RVRnVuY3Rpb24gaW5zdGFuY2UgY2FuIHByb3ZpZGUgbWFueSBOUlNlY3RvckNhcnJpZXJzLgogICAgICAgICAgICBBbiBOUlNlY3RvckNhcnJpZXIgaW5zdGFuY2UgbXVzdCBiZSBwcm92aWRlZCBieSBhbiBPRFVGdW5jdGlvbi4KICAgICAgICAgICAgIjsKCiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOlRvcF9HcnBfVHlwZTsKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6T3JpZ2luX0VudGl0eV9NYXBwaW5nX0dycDsKICAgICAgICBrZXkgaWQ7CgogICAgICAgIGxlYWYtbGlzdCBwcm92aWRlZC1uclNlY3RvckNhcnJpZXIgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiTy1EVSBGdW5jdGlvbiBwcm92aWRlcyBOUiBTZWN0b3IgQ2Fycmllci4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YVNpZGUgT0RVRnVuY3Rpb247CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICB9CgogICAgICAgIGxlYWYgcHJvdmlkZWQtYnktb2R1RnVuY3Rpb24gewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiTlIgU2VjdG9yIENhcnJpZXIgcHJvdmlkZWQgYnkgTy1EVSBGdW5jdGlvbi4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YlNpZGUgTlJTZWN0b3JDYXJyaWVyOwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgICAgIG1hbmRhdG9yeSB0cnVlOwogICAgICAgIH0KICAgIH0KCiAgICBvci10ZWl2LXlleHQ6YmlEaXJlY3Rpb25hbFRvcG9sb2d5UmVsYXRpb25zaGlwIE9DVUNQRlVOQ1RJT05fUFJPVklERVNfTlJDRUxMQ1UgeyAvLyAxIHRvIDAuLm4KCiAgICAgICAgZGVzY3JpcHRpb24KICAgICAgICAgICAgIlRoZSBhU2lkZSBvZiB0aGlzIHJlbGF0aW9uc2hpcCBpcyBhbiBpbnN0YW5jZSBvZiB0aGUgT0NVQ1BGdW5jdGlvbiB0eXBlLgogICAgICAgICAgICBUaGUgYlNpZGUgb2YgdGhpcyByZWxhdGlvbnNoaXAgaXMgYW4gaW5zdGFuY2Ugb2YgdGhlIE5SQ2VsbENVIHR5cGUuCiAgICAgICAgICAgIFRoZSBPQ1VDUEZ1bmN0aW9uIHJlcHJlc2VudHMgdGhlIENVLUNQIGNvbXBvbmVudCBvZiBhIGdOQiB0aGF0IHByb3ZpZGVzIHRoZSBOUkNlbGxDVS4KICAgICAgICAgICAgQSBPQ1VDUEZ1bmN0aW9uIGluc3RhbmNlIGNhbiBwcm92aWRlIG1hbnkgTlJDZWxsQ1UuCiAgICAgICAgICAgIEFuIE5SQ2VsbENVIGluc3RhbmNlIG11c3QgYmUgcHJvdmlkZWQgYnkgYW4gT0NVQ1BGdW5jdGlvbi4KICAgICAgICAgICAgIjsKCiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOlRvcF9HcnBfVHlwZTsKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6T3JpZ2luX0VudGl0eV9NYXBwaW5nX0dycDsKICAgICAgICBrZXkgaWQ7CgogICAgICAgIGxlYWYtbGlzdCBwcm92aWRlZC1uckNlbGxDdSB7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJPLUNVLUNQIEZ1bmN0aW9uIHByb3ZpZGVzIE5SIENlbGwtQ1UuIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmFTaWRlIE9DVUNQRnVuY3Rpb247CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICB9CgogICAgICAgIGxlYWYgcHJvdmlkZWQtYnktb2N1Y3BGdW5jdGlvbiB7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJOUiBDZWxsLUNVIHByb3ZpZGVkIGJ5IE8tQ1UtQ1AgRnVuY3Rpb24uIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmJTaWRlIE5SQ2VsbENVOwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgICAgIG1hbmRhdG9yeSB0cnVlOwogICAgICAgIH0KICAgIH0KCiAgICBvci10ZWl2LXlleHQ6YmlEaXJlY3Rpb25hbFRvcG9sb2d5UmVsYXRpb25zaGlwIE5SQ0VMTERVX1VTRVNfTlJTRUNUT1JDQVJSSUVSIHsgLy8gMC4uMSB0byAwLi5uCgogICAgICAgIGRlc2NyaXB0aW9uCiAgICAgICAgICAgICJUaGUgYVNpZGUgb2YgdGhpcyByZWxhdGlvbnNoaXAgaXMgYW4gaW5zdGFuY2Ugb2YgdGhlIE5SQ2VsbERVIHR5cGUuCiAgICAgICAgICAgIFRoZSBiU2lkZSBvZiB0aGlzIHJlbGF0aW9uc2hpcCBpcyBhbiBpbnN0YW5jZSBvZiB0aGUgTlJTZWN0b3JDYXJyaWVyIHR5cGUuCiAgICAgICAgICAgIFRoZSBOUkNlbGxEVSByZXByZXNlbnRzIHRoZSBjZWxsIHRoYXQgdXNlcyB0aGUgTlJTZWN0b3JDYXJyaWVyLgogICAgICAgICAgICBBbiBOUkNlbGxEVSBpbnN0YW5jZSBjYW4gdXNlIG1hbnkgTlJTZWN0b3JDYXJyaWVycy4KICAgICAgICAgICAgQW4gTlJTZWN0b3JDYXJyaWVyIGluc3RhbmNlIGNhbiBvbmx5IGJlIHVzZWQgYnkgb25lIE5SQ2VsbERVLgogICAgICAgICAgICAiOwoKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6VG9wX0dycF9UeXBlOwogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpPcmlnaW5fRW50aXR5X01hcHBpbmdfR3JwOwogICAgICAgIGtleSBpZDsKCiAgICAgICAgbGVhZi1saXN0IHVzZWQtbnJTZWN0b3JDYXJyaWVyIHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIk5SIENlbGwtRFUgdXNlcyBOUiBTZWN0b3IgQ2Fycmllci4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YVNpZGUgTlJDZWxsRFU7CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICB9CgogICAgICAgIGxlYWYgdXNlZC1ieS1uckNlbGxEdSB7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJOUiBTZWN0b3IgQ2FycmllciB1c2VkIGJ5IE5SIENlbGwtRFUuIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmJTaWRlIE5SU2VjdG9yQ2FycmllcjsKICAgICAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgIH0KICAgIH0KCiAgICBvci10ZWl2LXlleHQ6YmlEaXJlY3Rpb25hbFRvcG9sb2d5UmVsYXRpb25zaGlwIE5SU0VDVE9SQ0FSUklFUl9VU0VTX0FOVEVOTkFDQVBBQklMSVRZIHsgLy8gMC4ubiB0byAwLi4xCgogICAgICAgIGRlc2NyaXB0aW9uCiAgICAgICAgICAgICJUaGUgYVNpZGUgb2YgdGhpcyByZWxhdGlvbnNoaXAgaXMgYW4gaW5zdGFuY2Ugb2YgdGhlIE5SU2VjdG9yQ2FycmllciB0eXBlLgogICAgICAgICAgICBUaGUgYlNpZGUgb2YgdGhpcyByZWxhdGlvbnNoaXAgaXMgYW4gaW5zdGFuY2Ugb2YgdGhlIEFudGVubmFDYXBhYmlsaXR5IHR5cGUuCiAgICAgICAgICAgIFRoZSBOUlNlY3RvckNhcnJpZXIgcmVwcmVzZW50cyB0aGUgY2FycmllciB0aGF0IHVzZXMgdGhlIEFudGVubmFDYXBhYmlsaXR5LgogICAgICAgICAgICBBbiBOUlNlY3RvckNhcnJpZXIgaW5zdGFuY2UgY2FuIHVzZSBvbmx5IG9uZSBBbnRlbm5hQ2FwYWJpbGl0eS4KICAgICAgICAgICAgQW4gQW50ZW5uYUNhcGFiaWxpdHkgaW5zdGFuY2UgY2FuIGJlIHVzZWQgYnkgbWFueSBOUlNlY3RvckNhcnJpZXJzLgogICAgICAgICAgICAiOwoKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6VG9wX0dycF9UeXBlOwogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpPcmlnaW5fRW50aXR5X01hcHBpbmdfR3JwOwogICAgICAgIGtleSBpZDsKCiAgICAgICAgbGVhZiB1c2VkLWFudGVubmFDYXBhYmlsaXR5IHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIk5SIFNlY3RvciBDYXJyaWVyIHVzZXMgQW50ZW5uYSBDYXBhYmlsaXR5LiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDphU2lkZSBOUlNlY3RvckNhcnJpZXI7CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICB9CgogICAgICAgIGxlYWYtbGlzdCB1c2VkLWJ5LW5yU2VjdG9yQ2FycmllciB7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJBbnRlbm5hIENhcGFiaWxpdHkgdXNlZCBieSBOUiBTZWN0b3IgQ2Fycmllci4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YlNpZGUgQW50ZW5uYUNhcGFiaWxpdHk7CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICB9CiAgICB9CgogICAgb3ItdGVpdi15ZXh0OmJpRGlyZWN0aW9uYWxUb3BvbG9neVJlbGF0aW9uc2hpcCBTRUNUT1JfR1JPVVBTX05SQ0VMTERVIHsgLy8gMC4uMSB0byAwLi5uCgogICAgICAgIGRlc2NyaXB0aW9uCiAgICAgICAgICAgICJUaGUgYVNpZGUgb2YgdGhpcyByZWxhdGlvbnNoaXAgaXMgYW4gaW5zdGFuY2Ugb2YgdGhlIFNlY3RvciB0eXBlLgogICAgICAgICAgICBUaGUgYlNpZGUgb2YgdGhpcyByZWxhdGlvbnNoaXAgaXMgYW4gaW5zdGFuY2Ugb2YgdGhlIE5SQ2VsbERVIHR5cGUuCiAgICAgICAgICAgIFRoZSBTZWN0b3IgcmVwcmVzZW50cyB0aGUgZ2VvZ3JhcGhpY2FsIGFyZWEgdGhhdCBncm91cHMgdGhlIE5SQ2VsbERVcy4KICAgICAgICAgICAgQSBTZWN0b3IgaW5zdGFuY2UgY2FuIGdyb3VwIG1hbnkgTlJDZWxsRFVzLgogICAgICAgICAgICBBbiBOUkNlbGxEVSBpbnN0YW5jZSBjYW4gb25seSBiZSBncm91cGVkIGJ5IG9uZSBTZWN0b3IuCiAgICAgICAgICAgICI7CgogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOk9yaWdpbl9FbnRpdHlfTWFwcGluZ19HcnA7CiAgICAgICAga2V5IGlkOwoKICAgICAgICBsZWFmLWxpc3QgZ3JvdXBlZC1uckNlbGxEdSB7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJTZWN0b3IgZ3JvdXBzIE5SIENlbGwtRFUuIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmFTaWRlIFNlY3RvcjsKICAgICAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgIH0KCiAgICAgICAgbGVhZiBncm91cGVkLWJ5LXNlY3RvciB7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJOUiBDZWxsLURVIGdyb3VwZWQgYnkgU2VjdG9yLiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDpiU2lkZSBOUkNlbGxEVTsKICAgICAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgIH0KICAgIH0KfQ==
+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-07-15 bW9kdWxlIG8tcmFuLXNtby10ZWl2LXJlbC1jbG91ZC1yYW4gewogICAgeWFuZy12ZXJzaW9uIDEuMTsKICAgIG5hbWVzcGFjZSAidXJuOm8tcmFuOnNtby10ZWl2LXJlbC1jbG91ZC1yYW4iOwogICAgcHJlZml4IG9yLXRlaXYtY2xvdWR0b3JhbjsKCiAgICBpbXBvcnQgby1yYW4tc21vLXRlaXYtY29tbW9uLXlhbmctdHlwZXMge3ByZWZpeCBvci10ZWl2LXR5cGVzOyB9CgogICAgaW1wb3J0IG8tcmFuLXNtby10ZWl2LWNvbW1vbi15YW5nLWV4dGVuc2lvbnMge3ByZWZpeCBvci10ZWl2LXlleHQ7IH0KCiAgICBpbXBvcnQgby1yYW4tc21vLXRlaXYtY2xvdWQge3ByZWZpeCBvci10ZWl2LWNsb3VkOyB9CgogICAgaW1wb3J0IG8tcmFuLXNtby10ZWl2LXJhbiB7cHJlZml4IG9yLXRlaXYtcmFuOyB9CgogICAgb3JnYW5pemF0aW9uICJPUkFOIjsKICAgIGNvbnRhY3QgIlRoZSBBdXRob3JzIjsKICAgIGRlc2NyaXB0aW9uCiAgICAgICAgIlJBTiBDbG91ZCB0byBSQU4gTG9naWNhbCB0b3BvbG9neSBtb2RlbC4KCiAgICAgICAgVGhpcyBtb2RlbCBjb250YWlucyB0aGUgUkFOIENsb3VkIHRvIFJBTiBMb2dpY2FsIHRvcG9sb2d5IHJlbGF0aW9ucy4KCiAgICAgICAgQ29weXJpZ2h0IChDKSAyMDI0IEVyaWNzc29uCiAgICAgICAgTW9kaWZpY2F0aW9ucyBDb3B5cmlnaHQgKEMpIDIwMjQgT3BlbkluZnJhIEZvdW5kYXRpb24gRXVyb3BlCgogICAgICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7CiAgICAgICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogICAgICAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAoKICAgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKCiAgICAgICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogICAgICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUywKICAgICAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KICAgICAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCiAgICAgICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCgogICAgICAgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIjsKCiAgICByZXZpc2lvbiAiMjAyNC0wNS0wMiIgewogICAgICAgIGRlc2NyaXB0aW9uICJJbml0aWFsIHJldmlzaW9uLiI7CiAgICAgICAgb3ItdGVpdi15ZXh0OmxhYmVsIDAuMy4wOwogICAgfQoKICAgIHJldmlzaW9uICIyMDI0LTA3LTE1IiB7CiAgICAgICAgZGVzY3JpcHRpb24gIlRoaXMgcmV2aXNpb24gYWxpZ25zIE8tUkFOIFdvcmsgR3JvdXAgMTAgU3RhZ2UgMiBTcGVjaWZpY2F0aW9uIChPLVJBTi5XRzEwLlRFJklWLUNJTUkuMC1SMDA0LnYwMi4wMCkiOwogICAgICAgIG9yLXRlaXYteWV4dDpsYWJlbCAwLjQuMDsKICAgIH0KCiAgICBvci10ZWl2LXlleHQ6ZG9tYWluIFJFTF9DTE9VRF9SQU47CgogICAgb3ItdGVpdi15ZXh0OmJpRGlyZWN0aW9uYWxUb3BvbG9neVJlbGF0aW9uc2hpcCBORkRFUExPWU1FTlRfU0VSVkVTX09EVUZVTkNUSU9OIHsgLy8gMC4ubiB0byAwLi5tCgogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOk9yaWdpbl9FbnRpdHlfTWFwcGluZ19HcnA7CiAgICAgICAga2V5IGlkOwoKICAgICAgICBsZWFmLWxpc3Qgc2VydmljZWQtb2R1RnVuY3Rpb24gewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiTy1EVSBGdW5jdGlvbiBzZXJ2aWNlZCBieSB0aGlzIE5GIERlcGxveW1lbnQuIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmFTaWRlIG9yLXRlaXYtY2xvdWQ6TkZEZXBsb3ltZW50OwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgfQoKICAgICAgICBsZWFmLWxpc3Qgc2VydmluZy1uRkRlcGxveW1lbnQgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiTkYgRGVwbG95bWVudCB0aGF0IHNlcnZlcyB0aGlzIE8tRFUgRnVuY3Rpb24uIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmJTaWRlIG9yLXRlaXYtcmFuOk9EVUZ1bmN0aW9uOwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgfQogICAgfQoKICAgIG9yLXRlaXYteWV4dDpiaURpcmVjdGlvbmFsVG9wb2xvZ3lSZWxhdGlvbnNoaXAgTkZERVBMT1lNRU5UX1NFUlZFU19PQ1VDUEZVTkNUSU9OIHsgLy8gMC4ubiB0byAwLi5tCgogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOk9yaWdpbl9FbnRpdHlfTWFwcGluZ19HcnA7CiAgICAgICAga2V5IGlkOwoKICAgICAgICBsZWFmLWxpc3Qgc2VydmljZWQtb2N1Y3BGdW5jdGlvbiB7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJPLUNVLUNQIEZ1bmN0aW9uIHNlcnZpY2VkIGJ5IHRoaXMgTkYgRGVwbG95bWVudC4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YVNpZGUgb3ItdGVpdi1jbG91ZDpORkRlcGxveW1lbnQ7CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICB9CgogICAgICAgIGxlYWYtbGlzdCBzZXJ2aW5nLW5GRGVwbG95bWVudCB7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJORiBEZXBsb3ltZW50IHRoYXQgc2VydmVzIHRoaXMgTy1DVS1DUCBGdW5jdGlvbi4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YlNpZGUgb3ItdGVpdi1yYW46T0NVQ1BGdW5jdGlvbjsKICAgICAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgIH0KICAgIH0KCiAgICBvci10ZWl2LXlleHQ6YmlEaXJlY3Rpb25hbFRvcG9sb2d5UmVsYXRpb25zaGlwIE5GREVQTE9ZTUVOVF9TRVJWRVNfT0NVVVBGVU5DVElPTiB7IC8vIDAuLm4gdG8gMC4ubQoKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6VG9wX0dycF9UeXBlOwogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpPcmlnaW5fRW50aXR5X01hcHBpbmdfR3JwOwogICAgICAgIGtleSBpZDsKCiAgICAgICAgbGVhZi1saXN0IHNlcnZpY2VkLW9jdXVwRnVuY3Rpb24gewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiTy1DVS1VUCBGdW5jdGlvbiBzZXJ2aWNlZCBieSB0aGlzIE5GIERlcGxveW1lbnQuIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmFTaWRlIG9yLXRlaXYtY2xvdWQ6TkZEZXBsb3ltZW50OwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgfQoKICAgICAgICBsZWFmLWxpc3Qgc2VydmluZy1uRkRlcGxveW1lbnQgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiTkYgRGVwbG95bWVudCB0aGF0IHNlcnZlcyB0aGlzIE8tQ1UtVVAgRnVuY3Rpb24uIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmJTaWRlIG9yLXRlaXYtcmFuOk9DVVVQRnVuY3Rpb247CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICB9CiAgICB9CgogICAgb3ItdGVpdi15ZXh0OmJpRGlyZWN0aW9uYWxUb3BvbG9neVJlbGF0aW9uc2hpcCBORkRFUExPWU1FTlRfU0VSVkVTX05FQVJSVFJJQ0ZVTkNUSU9OIHsgLy8gMC4ubiB0byAwLi5tCgogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOk9yaWdpbl9FbnRpdHlfTWFwcGluZ19HcnA7CiAgICAgICAga2V5IGlkOwoKICAgICAgICBsZWFmLWxpc3Qgc2VydmljZWQtbmVhclJUUklDRnVuY3Rpb24gewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiTmVhclJUUklDRnVuY3Rpb24gc2VydmljZWQgYnkgdGhpcyBORiBEZXBsb3ltZW50LiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDphU2lkZSBvci10ZWl2LWNsb3VkOk5GRGVwbG95bWVudDsKICAgICAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgIH0KCiAgICAgICAgbGVhZi1saXN0IHNlcnZpbmctbkZEZXBsb3ltZW50IHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIk5GIERlcGxveW1lbnQgdGhhdCBzZXJ2ZXMgdGhpcyBOZWFyUlRSSUNGdW5jdGlvbi4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YlNpZGUgb3ItdGVpdi1yYW46TmVhclJUUklDRnVuY3Rpb247CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICB9CiAgICB9Cn0=
+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-10-08 bW9kdWxlIG8tcmFuLXNtby10ZWl2LXJlbC1lcXVpcG1lbnQtcmFuIHsKICAgIHlhbmctdmVyc2lvbiAxLjE7CiAgICBuYW1lc3BhY2UgInVybjpvLXJhbjpzbW8tdGVpdi1yZWwtZXF1aXBtZW50LXJhbiI7CiAgICBwcmVmaXggb3ItdGVpdi1yZWwtZXF1aXByYW47CgogICAgaW1wb3J0IG8tcmFuLXNtby10ZWl2LWNvbW1vbi15YW5nLXR5cGVzIHsgcHJlZml4IG9yLXRlaXYtdHlwZXM7IH0KCiAgICBpbXBvcnQgby1yYW4tc21vLXRlaXYtY29tbW9uLXlhbmctZXh0ZW5zaW9ucyB7IHByZWZpeCBvci10ZWl2LXlleHQ7IH0KCiAgICBpbXBvcnQgby1yYW4tc21vLXRlaXYtZXF1aXBtZW50IHsgcHJlZml4IG9yLXRlaXYtZXF1aXA7IH0KCiAgICBpbXBvcnQgby1yYW4tc21vLXRlaXYtcmFuIHsgcHJlZml4IG9yLXRlaXYtcmFuOyB9CgoKICAgIG9yZ2FuaXphdGlvbiAiT1JBTiI7CiAgICBjb250YWN0ICJUaGUgQXV0aG9ycyI7CiAgICBkZXNjcmlwdGlvbiAKICAgICJSQU4gRXF1aXBtZW50IHRvIExvZ2ljYWwgdG9wb2xvZ3kgbW9kZWwuCgogICAgVGhpcyBtb2RlbCBjb250YWlucyB0aGUgUkFOIEVxdWlwbWVudCB0byBMb2dpY2FsIHRvcG9sb2d5CiAgICBlbnRpdGllcyBhbmQgcmVsYXRpb25zLgoKICAgIENvcHlyaWdodCAoQykgMjAyNCBFcmljc3NvbgogICAgTW9kaWZpY2F0aW9ucyBDb3B5cmlnaHQgKEMpIDIwMjQgT3BlbkluZnJhIEZvdW5kYXRpb24gRXVyb3BlCgogICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTsKICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KICAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAoKICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAoKICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUywKICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgogICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAogICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCgogICAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAiOwoKICAgIHJldmlzaW9uICIyMDI0LTEwLTA4IiB7CiAgICAgICAgZGVzY3JpcHRpb24KICAgICAgICAgICAgIkFkZGVkIG5ldyByZWxhdGlvbnNoaXAgQU5URU5OQU1PRFVMRV9TRVJWRVNfTlJDRUxMRFUuIjsKICAgICAgICBvci10ZWl2LXlleHQ6bGFiZWwgMC41LjA7CiAgICB9CgogICAgcmV2aXNpb24gIjIwMjQtMTAtMDQiIHsKICAgICAgICBkZXNjcmlwdGlvbiAiQWRkZWQgZ3JvdXBpbmcsIE9yaWdpbl9SZWxhdGlvbnNoaXBfTWFwcGluZ19HcnAgdG8gdGhlIHRvcG9sb2d5IG9iamVjdC4iOwogICAgICAgIG9yLXRlaXYteWV4dDpsYWJlbCAwLjQuMDsKICAgIH0KCiAgICByZXZpc2lvbiAiMjAyNC0wNS0yNCIgewogICAgICAgIGRlc2NyaXB0aW9uICJJbml0aWFsIHJldmlzaW9uLiI7CiAgICAgICAgb3ItdGVpdi15ZXh0OmxhYmVsIDAuMy4wOwogICAgfQoKICAgIG9yLXRlaXYteWV4dDpkb21haW4gUkVMX0VRVUlQTUVOVF9SQU47CgogICAgb3ItdGVpdi15ZXh0OmJpRGlyZWN0aW9uYWxUb3BvbG9neVJlbGF0aW9uc2hpcCBBTlRFTk5BTU9EVUxFX1NFUlZFU19BTlRFTk5BQ0FQQUJJTElUWSB7IC8vIDAuLm4gdG8gMC4ubQoKICAgICAgICBkZXNjcmlwdGlvbgogICAgICAgICAgICAiVGhlIGFTaWRlIG9mIHRoaXMgcmVsYXRpb25zaGlwIGlzIGFuIGluc3RhbmNlIG9mIHRoZSBBbnRlbm5hTW9kdWxlIHR5cGUuCiAgICAgICAgICAgIFRoZSBiU2lkZSBvZiB0aGlzIHJlbGF0aW9uc2hpcCBpcyBhbiBpbnN0YW5jZSBvZiB0aGUgQW50ZW5uYUNhcGFiaWxpdHkgdHlwZS4KICAgICAgICAgICAgVGhlIEFudGVubmFNb2R1bGUgcmVwcmVzZW50cyB0aGUgcGh5c2ljYWwgYW50ZW5uYSB0aGF0IHNlcnZlcyB0aGUgQW50ZW5uYUNhcGFiaWxpdHkuCiAgICAgICAgICAgIEFuIEFudGVubmFNb2R1bGUgaW5zdGFuY2UgY2FuIHNlcnZlIG1hbnkgQW50ZW5uYUNhcGFiaWxpdGllcy4KICAgICAgICAgICAgQW4gQW50ZW5uYUNhcGFiaWxpdHkgaW5zdGFuY2UgY2FuIGJlIHNlcnZlZCBieSBtYW55IEFudGVubmFNb2R1bGVzLgogICAgICAgICAgICAiOwoKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6VG9wX0dycF9UeXBlOwogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpPcmlnaW5fRW50aXR5X01hcHBpbmdfR3JwOwogICAgICAgIGtleSBpZDsKCiAgICAgICAgbGVhZi1saXN0IHNlcnZpY2VkLWFudGVubmFDYXBhYmlsaXR5IHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIkFudGVubmEgQ2FwYWJpbGl0eSBzZXJ2aWNlZCBieSB0aGlzIEFudGVubmEgTW9kdWxlLiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDphU2lkZSBvci10ZWl2LWVxdWlwOkFudGVubmFNb2R1bGU7CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICB9CgogICAgICAgIGxlYWYtbGlzdCBzZXJ2aW5nLWFudGVubmFNb2R1bGUgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiQW50ZW5uYSBNb2R1bGUgc2VydmVzIHRoaXMgQW50ZW5uYSBDYXBhYmlsaXR5LiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDpiU2lkZSBvci10ZWl2LXJhbjpBbnRlbm5hQ2FwYWJpbGl0eTsKICAgICAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgIH0KICAgIH0KCiAgICBvci10ZWl2LXlleHQ6YmlEaXJlY3Rpb25hbFRvcG9sb2d5UmVsYXRpb25zaGlwIEFOVEVOTkFNT0RVTEVfU0VSVkVTX05SQ0VMTERVIHsgLy8gMS4ubiB0byAwLi5tCgogICAgICAgIGRlc2NyaXB0aW9uCiAgICAgICAgICAgICJUaGUgYVNpZGUgb2YgdGhpcyByZWxhdGlvbnNoaXAgaXMgYW4gaW5zdGFuY2Ugb2YgdGhlIEFudGVubmFNb2R1bGUgdHlwZS4KICAgICAgICAgICAgVGhlIGJTaWRlIG9mIHRoaXMgcmVsYXRpb25zaGlwIGlzIGFuIGluc3RhbmNlIG9mIHRoZSBOUkNlbGxEVSB0eXBlLgogICAgICAgICAgICBUaGUgQW50ZW5uYU1vZHVsZSByZXByZXNlbnRzIHRoZSBwaHlzaWNhbCBhbnRlbm5hIHRoYXQgc2VydmVzIHRoZSBOUkNlbGxEVS4KICAgICAgICAgICAgQW4gQW50ZW5uYU1vZHVsZSBpbnN0YW5jZSBjYW4gc2VydmUgbWFueSBOUkNlbGxEVXMuCiAgICAgICAgICAgIEFuIE5SQ2VsbERVIGluc3RhbmNlIGNhbiBiZSBzZXJ2ZWQgYnkgbWFueSBBbnRlbm5hTW9kdWxlcy4KICAgICAgICAgICAgIjsKCiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOlRvcF9HcnBfVHlwZTsKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6T3JpZ2luX1JlbGF0aW9uc2hpcF9NYXBwaW5nX0dycDsKICAgICAgICBrZXkgaWQ7CgogICAgICAgIGxlYWYtbGlzdCBzZXJ2aWNlZC1uckNlbGxEdSB7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJOUiBDZWxsLURVIHNlcnZpY2VkIGJ5IHRoaXMgQW50ZW5uYSBNb2R1bGUuIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmFTaWRlIG9yLXRlaXYtZXF1aXA6QW50ZW5uYU1vZHVsZTsKICAgICAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgIH0KCiAgICAgICAgbGVhZi1saXN0IHNlcnZpbmctYW50ZW5uYU1vZHVsZSB7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJBbnRlbm5hIE1vZHVsZSBzZXJ2ZXMgdGhpcyBOUiBDZWxsLURVLiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDpiU2lkZSBvci10ZWl2LXJhbjpOUkNlbGxEVTsKICAgICAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgICAgICBtaW4tZWxlbWVudHMgMTsKICAgICAgICB9CiAgICB9CgogICAgb3ItdGVpdi15ZXh0OmJpRGlyZWN0aW9uYWxUb3BvbG9neVJlbGF0aW9uc2hpcCBTRUNUT1JfR1JPVVBTX0FOVEVOTkFNT0RVTEUgeyAvLyAwLi4xIHRvIDAuLm4KCiAgICAgICAgZGVzY3JpcHRpb24KICAgICAgICAgICAgIlRoZSBhU2lkZSBvZiB0aGlzIHJlbGF0aW9uc2hpcCBpcyBhbiBpbnN0YW5jZSBvZiB0aGUgU2VjdG9yIHR5cGUuCiAgICAgICAgICAgIFRoZSBiU2lkZSBvZiB0aGlzIHJlbGF0aW9uc2hpcCBpcyBhbiBpbnN0YW5jZSBvZiB0aGUgQW50ZW5uYU1vZHVsZSB0eXBlLgogICAgICAgICAgICBUaGUgU2VjdG9yIHJlcHJlc2VudHMgdGhlIGdlb2dyYXBoaWNhbCBhcmVhIHRoYXQgZ3JvdXBzIHRoZSBBbnRlbm5hTW9kdWxlcy4KICAgICAgICAgICAgQSBTZWN0b3IgaW5zdGFuY2UgY2FuIGdyb3VwIG1hbnkgQW50ZW5uYU1vZHVsZXMuCiAgICAgICAgICAgIEFuIEFudGVubmFNb2R1bGUgaW5zdGFuY2UgY2FuIG9ubHkgYmUgZ3JvdXBlZCBieSBvbmUgU2VjdG9yLgogICAgICAgICAgICAiOwoKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6VG9wX0dycF9UeXBlOwogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpPcmlnaW5fUmVsYXRpb25zaGlwX01hcHBpbmdfR3JwOwogICAgICAgIGtleSBpZDsKCiAgICAgICAgbGVhZi1saXN0IGdyb3VwZWQtYW50ZW5uYU1vZHVsZSB7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJTZWN0b3IgZ3JvdXBzIEFudGVubmEgTW9kdWxlLiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDphU2lkZSBvci10ZWl2LXJhbjpTZWN0b3I7CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICB9CgogICAgICAgIGxlYWYgZ3JvdXBlZC1ieS1zZWN0b3IgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiQW50ZW5uYSBNb2R1bGUgZ3JvdXBlZCBieSBTZWN0b3IuIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmJTaWRlIG9yLXRlaXYtZXF1aXA6QW50ZW5uYU1vZHVsZTsKICAgICAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgIH0KICAgIH0KfQ==
+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-07-15 bW9kdWxlIG8tcmFuLXNtby10ZWl2LXJlbC1vYW0tY2xvdWQgewogICAgeWFuZy12ZXJzaW9uIDEuMTsKICAgIG5hbWVzcGFjZSAidXJuOm8tcmFuOnNtby10ZWl2LXJlbC1vYW0tY2xvdWQiOwogICAgcHJlZml4IG9yLXRlaXYtb2FtdG9jbG91ZDsKCiAgICBpbXBvcnQgby1yYW4tc21vLXRlaXYtY29tbW9uLXlhbmctdHlwZXMge3ByZWZpeCBvci10ZWl2LXR5cGVzOyB9CgogICAgaW1wb3J0IG8tcmFuLXNtby10ZWl2LWNvbW1vbi15YW5nLWV4dGVuc2lvbnMge3ByZWZpeCBvci10ZWl2LXlleHQ7IH0KCiAgICBpbXBvcnQgby1yYW4tc21vLXRlaXYtb2FtIHtwcmVmaXggb3ItdGVpdi1vYW07IH0KCiAgICBpbXBvcnQgby1yYW4tc21vLXRlaXYtY2xvdWQge3ByZWZpeCBvci10ZWl2LWNsb3VkOyB9CgogICAgb3JnYW5pemF0aW9uICJPUkFOIjsKICAgIGNvbnRhY3QgIlRoZSBBdXRob3JzIjsKICAgIGRlc2NyaXB0aW9uCiAgICAgICAgIlJBTiBPJk0gdG8gQ2xvdWQgdG9wb2xvZ3kgbW9kZWwuCgogICAgICAgIFRoaXMgbW9kZWwgY29udGFpbnMgdGhlIFJBTiBPJk0gdG8gQ2xvdWQgdG9wb2xvZ3kgcmVsYXRpb25zCgogICAgICAgIENvcHlyaWdodCAoQykgMjAyNCBFcmljc3NvbgogICAgICAgIE1vZGlmaWNhdGlvbnMgQ29weXJpZ2h0IChDKSAyMDI0IE9wZW5JbmZyYSBGb3VuZGF0aW9uIEV1cm9wZQoKICAgICAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpOwogICAgICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KICAgICAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKCiAgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCgogICAgICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKICAgICAgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsCiAgICAgICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCiAgICAgICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAogICAgICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgoKICAgICAgICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCI7CgogICAgcmV2aXNpb24gIjIwMjQtMDUtMDIiIHsKICAgICAgICBkZXNjcmlwdGlvbiAiSW5pdGlhbCByZXZpc2lvbi4iOwogICAgICAgIG9yLXRlaXYteWV4dDpsYWJlbCAwLjMuMDsKICAgIH0KCiAgICByZXZpc2lvbiAiMjAyNC0wNy0xNSIgewogICAgICAgIGRlc2NyaXB0aW9uICJUaGlzIHJldmlzaW9uIGFsaWducyBPLVJBTiBXb3JrIEdyb3VwIDEwIFN0YWdlIDIgU3BlY2lmaWNhdGlvbiAoTy1SQU4uV0cxMC5URSZJVi1DSU1JLjAtUjAwNC52MDIuMDApIjsKICAgICAgICBvci10ZWl2LXlleHQ6bGFiZWwgMC40LjA7CiAgICB9CgogICAgb3ItdGVpdi15ZXh0OmRvbWFpbiBSRUxfT0FNX0NMT1VEOwoKICAgIG9yLXRlaXYteWV4dDpiaURpcmVjdGlvbmFsVG9wb2xvZ3lSZWxhdGlvbnNoaXAgTUFOQUdFREVMRU1FTlRfREVQTE9ZRURfQVNfQ0xPVURJRklFRE5GIHsgIC8vIDAuLjEgdG8gMQoKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6VG9wX0dycF9UeXBlOwogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpPcmlnaW5fRW50aXR5X01hcHBpbmdfR3JwOwogICAgICAgIGtleSBpZDsKCiAgICAgICAgbGVhZiBkZXBsb3llZC1hcy1jbG91ZGlmaWVkTkYgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiTWFuYWdlZCBFbGVtZW50IGRlcGxveWVkIGFzIENsb3VkaWZpZWQgTkYuIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmFTaWRlIG9yLXRlaXYtb2FtOk1hbmFnZWRFbGVtZW50OwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgfQoKICAgICAgICBsZWFmIGRlcGxveWVkLW1hbmFnZWRFbGVtZW50IHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIkNsb3VkaWZpZWQgTkYgZGVwbG95cyBNYW5hZ2VkIEVsZW1lbnQuIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmJTaWRlIG9yLXRlaXYtY2xvdWQ6Q2xvdWRpZmllZE5GOwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgICAgIG1hbmRhdG9yeSB0cnVlOwogICAgICAgIH0KICAgIH0KCiAgICBvci10ZWl2LXlleHQ6YmlEaXJlY3Rpb25hbFRvcG9sb2d5UmVsYXRpb25zaGlwIE5GREVQTE9ZTUVOVF9TRVJWRVNfTUFOQUdFREVMRU1FTlQgeyAvLyAxLi5uIHRvIDEKCiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOlRvcF9HcnBfVHlwZTsKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6T3JpZ2luX0VudGl0eV9NYXBwaW5nX0dycDsKICAgICAgICBrZXkgaWQ7CgogICAgICAgIGxlYWYgc2VydmljZWQtbWFuYWdlZEVsZW1lbnQgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiTWFuYWdlZCBFbGVtZW50IHNlcnZpY2VkIGJ5IHRoaXMgTkYgRGVwbG95bWVudC4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YVNpZGUgb3ItdGVpdi1jbG91ZDpORkRlcGxveW1lbnQ7CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICAgICAgbWFuZGF0b3J5IHRydWU7CiAgICAgICAgfQoKICAgICAgICBsZWFmLWxpc3Qgc2VydmluZy1uRkRlcGxveW1lbnQgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiTkYgRGVwbG95bWVudCB0aGF0IHNlcnZlcyB0aGlzIE1hbmFnZWQgRWxlbWVudC4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YlNpZGUgb3ItdGVpdi1vYW06TWFuYWdlZEVsZW1lbnQ7CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICAgICAgbWluLWVsZW1lbnRzIDE7CiAgICAgICAgfQogICAgfQp9
+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-10-04 bW9kdWxlIG8tcmFuLXNtby10ZWl2LXJlbC1vYW0tcmFuIHsKICAgIHlhbmctdmVyc2lvbiAxLjE7CiAgICBuYW1lc3BhY2UgInVybjpvLXJhbjpzbW8tdGVpdi1yZWwtb2FtLXJhbiI7CiAgICBwcmVmaXggb3ItdGVpdi1yZWwtb2FtcmFuOwoKICAgIGltcG9ydCBvLXJhbi1zbW8tdGVpdi1jb21tb24teWFuZy10eXBlcyB7IHByZWZpeCBvci10ZWl2LXR5cGVzOyB9CgogICAgaW1wb3J0IG8tcmFuLXNtby10ZWl2LWNvbW1vbi15YW5nLWV4dGVuc2lvbnMgeyBwcmVmaXggb3ItdGVpdi15ZXh0OyB9CgogICAgaW1wb3J0IG8tcmFuLXNtby10ZWl2LW9hbSB7IHByZWZpeCBvci10ZWl2LW9hbTsgfQoKICAgIGltcG9ydCBvLXJhbi1zbW8tdGVpdi1yYW4geyBwcmVmaXggb3ItdGVpdi1yYW47IH0KCiAgICBvcmdhbml6YXRpb24gIk9SQU4iOwogICAgY29udGFjdCAiVGhlIEF1dGhvcnMiOwogICAgZGVzY3JpcHRpb24KICAgICAgICAiUkFOIE8mTSB0byBMb2dpY2FsIHRvcG9sb2d5IG1vZGVsLgoKICAgICAgICBUaGlzIG1vZGVsIGNvbnRhaW5zIHRoZSBSQU4gTyZNIHRvIExvZ2ljYWwgdG9wb2xvZ3kgcmVsYXRpb25zCgogICAgICAgIENvcHlyaWdodCAoQykgMjAyNCBFcmljc3NvbgogICAgICAgIE1vZGlmaWNhdGlvbnMgQ29weXJpZ2h0IChDKSAyMDI0IE9wZW5JbmZyYSBGb3VuZGF0aW9uIEV1cm9wZQoKICAgICAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpOwogICAgICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KICAgICAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKCiAgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCgogICAgICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKICAgICAgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsCiAgICAgICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCiAgICAgICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAogICAgICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgoKICAgICAgICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCI7CgogICAgcmV2aXNpb24gIjIwMjQtMTAtMDQiIHsKICAgICAgICBkZXNjcmlwdGlvbiAiQWRkZWQgZ3JvdXBpbmcsIE9yaWdpbl9SZWxhdGlvbnNoaXBfTWFwcGluZ19HcnAgdG8gdGhlIHRvcG9sb2d5IG9iamVjdC4iOwogICAgICAgIG9yLXRlaXYteWV4dDpsYWJlbCAwLjUuMDsKICAgIH0KCiAgICByZXZpc2lvbiAiMjAyNC0wNy0xNSIgewogICAgICAgIGRlc2NyaXB0aW9uICJUaGlzIHJldmlzaW9uIGFsaWducyBPLVJBTiBXb3JrIEdyb3VwIDEwIFN0YWdlIDIgU3BlY2lmaWNhdGlvbiAoTy1SQU4uV0cxMC5URSZJVi1DSU1JLjAtUjAwNC52MDIuMDApIjsKICAgICAgICBvci10ZWl2LXlleHQ6bGFiZWwgMC40LjA7CiAgICB9CgogICAgcmV2aXNpb24gIjIwMjQtMDUtMjQiIHsKICAgICAgICBkZXNjcmlwdGlvbiAiSW5pdGlhbCByZXZpc2lvbi4iOwogICAgICAgIG9yLXRlaXYteWV4dDpsYWJlbCAwLjMuMDsKICAgIH0KCiAgICBvci10ZWl2LXlleHQ6ZG9tYWluIFJFTF9PQU1fUkFOOwoKICAgIG9yLXRlaXYteWV4dDpiaURpcmVjdGlvbmFsVG9wb2xvZ3lSZWxhdGlvbnNoaXAgTUFOQUdFREVMRU1FTlRfTUFOQUdFU19PRFVGVU5DVElPTiB7ICAgIC8vIDEgdG8gMC4ubgoKICAgICAgICBkZXNjcmlwdGlvbgogICAgICAgICAgICAiVGhlIGFTaWRlIG9mIHRoaXMgcmVsYXRpb25zaGlwIGlzIGFuIGluc3RhbmNlIG9mIHRoZSBNYW5hZ2VkRWxlbWVudCB0eXBlLgogICAgICAgICAgICBUaGUgYlNpZGUgb2YgdGhpcyByZWxhdGlvbnNoaXAgaXMgYW4gaW5zdGFuY2Ugb2YgdGhlIE9EVUZ1bmN0aW9uIHR5cGUuCiAgICAgICAgICAgIFRoZSBNYW5hZ2VkRWxlbWVudCByZXByZXNlbnRzIHRoZSBub2RlIHRoYXQgbWFuYWdlcyB0aGUgT0RVRnVuY3Rpb24uCiAgICAgICAgICAgIEEgTWFuYWdlZEVsZW1lbnQgaW5zdGFuY2UgY2FuIG1hbmFnZSBtYW55IE9EVUZ1bmN0aW9ucy4KICAgICAgICAgICAgQW4gT0RVRnVuY3Rpb24gaW5zdGFuY2UgbXVzdCBiZSBtYW5hZ2VkIGJ5IG9uZSBNYW5hZ2VkRWxlbWVudC4KICAgICAgICAgICAgIjsKCiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOlRvcF9HcnBfVHlwZTsKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6T3JpZ2luX0VudGl0eV9NYXBwaW5nX0dycDsKICAgICAgICBrZXkgaWQ7CgogICAgICAgIGxlYWYtbGlzdCBtYW5hZ2VkLW9kdUZ1bmN0aW9uIHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIk1hbmFnZWQgRWxlbWVudCBtYW5hZ2VzIE8tRFUgRnVuY3Rpb24uIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmFTaWRlIG9yLXRlaXYtb2FtOk1hbmFnZWRFbGVtZW50OwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgfQoKICAgICAgICBsZWFmIG1hbmFnZWQtYnktbWFuYWdlZEVsZW1lbnQgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiTy1EVSBGdW5jdGlvbiBtYW5hZ2VkIGJ5IE1hbmFnZWQgRWxlbWVudC4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YlNpZGUgb3ItdGVpdi1yYW46T0RVRnVuY3Rpb247CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICAgICAgbWFuZGF0b3J5IHRydWU7CiAgICAgICAgfQogICAgfQoKICAgIG9yLXRlaXYteWV4dDpiaURpcmVjdGlvbmFsVG9wb2xvZ3lSZWxhdGlvbnNoaXAgTUFOQUdFREVMRU1FTlRfTUFOQUdFU19PQ1VDUEZVTkNUSU9OIHsgICAgLy8gMSB0byAwLi5uCgogICAgICAgIGRlc2NyaXB0aW9uCiAgICAgICAgICAgICJUaGUgYVNpZGUgb2YgdGhpcyByZWxhdGlvbnNoaXAgaXMgYW4gaW5zdGFuY2Ugb2YgdGhlIE1hbmFnZWRFbGVtZW50IHR5cGUuCiAgICAgICAgICAgIFRoZSBiU2lkZSBvZiB0aGlzIHJlbGF0aW9uc2hpcCBpcyBhbiBpbnN0YW5jZSBvZiB0aGUgT0NVQ1BGdW5jdGlvbiB0eXBlLgogICAgICAgICAgICBUaGUgTWFuYWdlZEVsZW1lbnQgcmVwcmVzZW50cyB0aGUgbm9kZSB0aGF0IG1hbmFnZXMgdGhlIE9DVUNQRnVuY3Rpb24uCiAgICAgICAgICAgIEEgTWFuYWdlZEVsZW1lbnQgaW5zdGFuY2UgY2FuIG1hbmFnZSBtYW55IE9DVUNQRnVuY3Rpb25zLgogICAgICAgICAgICBBbiBPQ1VDUEZ1bmN0aW9uIGluc3RhbmNlIG11c3QgYmUgbWFuYWdlZCBieSBvbmUgTWFuYWdlZEVsZW1lbnQuCiAgICAgICAgICAgICI7CgogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOk9yaWdpbl9FbnRpdHlfTWFwcGluZ19HcnA7CiAgICAgICAga2V5IGlkOwoKICAgICAgICBsZWFmLWxpc3QgbWFuYWdlZC1vY3VjcEZ1bmN0aW9uIHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIk1hbmFnZWQgRWxlbWVudCBtYW5hZ2VzIE8tQ1UtQ1AgRnVuY3Rpb24uIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmFTaWRlIG9yLXRlaXYtb2FtOk1hbmFnZWRFbGVtZW50OwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgfQoKICAgICAgICBsZWFmIG1hbmFnZWQtYnktbWFuYWdlZEVsZW1lbnQgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiTy1DVS1DUCBGdW5jdGlvbiBtYW5hZ2VkIGJ5IE1hbmFnZWQgRWxlbWVudC4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YlNpZGUgb3ItdGVpdi1yYW46T0NVQ1BGdW5jdGlvbjsKICAgICAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgICAgICBtYW5kYXRvcnkgdHJ1ZTsKICAgICAgICB9CiAgICB9CgogICAgb3ItdGVpdi15ZXh0OmJpRGlyZWN0aW9uYWxUb3BvbG9neVJlbGF0aW9uc2hpcCBNQU5BR0VERUxFTUVOVF9NQU5BR0VTX09DVVVQRlVOQ1RJT04geyAgICAvLyAxIHRvIDAuLm4KCiAgICAgICAgZGVzY3JpcHRpb24KICAgICAgICAgICAgIlRoZSBhU2lkZSBvZiB0aGlzIHJlbGF0aW9uc2hpcCBpcyBhbiBpbnN0YW5jZSBvZiB0aGUgTWFuYWdlZEVsZW1lbnQgdHlwZS4KICAgICAgICAgICAgVGhlIGJTaWRlIG9mIHRoaXMgcmVsYXRpb25zaGlwIGlzIGFuIGluc3RhbmNlIG9mIHRoZSBPQ1VVUEZ1bmN0aW9uIHR5cGUuCiAgICAgICAgICAgIFRoZSBNYW5hZ2VkRWxlbWVudCByZXByZXNlbnRzIHRoZSBub2RlIHRoYXQgbWFuYWdlcyB0aGUgT0NVVVBGdW5jdGlvbi4KICAgICAgICAgICAgQSBNYW5hZ2VkRWxlbWVudCBpbnN0YW5jZSBjYW4gbWFuYWdlIG1hbnkgT0NVVVBGdW5jdGlvbnMuCiAgICAgICAgICAgIEFuIE9DVVVQRnVuY3Rpb24gaW5zdGFuY2UgbXVzdCBiZSBtYW5hZ2VkIGJ5IG9uZSBNYW5hZ2VkRWxlbWVudC4KICAgICAgICAgICAgIjsKCiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOlRvcF9HcnBfVHlwZTsKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6T3JpZ2luX0VudGl0eV9NYXBwaW5nX0dycDsKICAgICAgICBrZXkgaWQ7CgogICAgICAgIGxlYWYtbGlzdCBtYW5hZ2VkLW9jdXVwRnVuY3Rpb24gewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiTWFuYWdlZCBFbGVtZW50IG1hbmFnZXMgTy1DVS1VUCBGdW5jdGlvbi4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YVNpZGUgb3ItdGVpdi1vYW06TWFuYWdlZEVsZW1lbnQ7CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICB9CgogICAgICAgIGxlYWYgbWFuYWdlZC1ieS1tYW5hZ2VkRWxlbWVudCB7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJPLUNVLVVQIEZ1bmN0aW9uIG1hbmFnZWQgYnkgTWFuYWdlZCBFbGVtZW50LiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDpiU2lkZSBvci10ZWl2LXJhbjpPQ1VVUEZ1bmN0aW9uOwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgICAgIG1hbmRhdG9yeSB0cnVlOwogICAgICAgIH0KICAgIH0KCiAgICBvci10ZWl2LXlleHQ6YmlEaXJlY3Rpb25hbFRvcG9sb2d5UmVsYXRpb25zaGlwIE1BTkFHRURFTEVNRU5UX01BTkFHRVNfT1JVRlVOQ1RJT04geyAgICAvLyAxIHRvIDAuLm4KCiAgICAgICAgZGVzY3JpcHRpb24KICAgICAgICAgICAgIlRoZSBhU2lkZSBvZiB0aGlzIHJlbGF0aW9uc2hpcCBpcyBhbiBpbnN0YW5jZSBvZiB0aGUgTWFuYWdlZEVsZW1lbnQgdHlwZS4KICAgICAgICAgICAgVGhlIGJTaWRlIG9mIHRoaXMgcmVsYXRpb25zaGlwIGlzIGFuIGluc3RhbmNlIG9mIHRoZSBPUlVGdW5jdGlvbiB0eXBlLgogICAgICAgICAgICBUaGUgTWFuYWdlZEVsZW1lbnQgcmVwcmVzZW50cyB0aGUgbm9kZSB0aGF0IG1hbmFnZXMgdGhlIE9SVUZ1bmN0aW9uLgogICAgICAgICAgICBBIE1hbmFnZWRFbGVtZW50IGluc3RhbmNlIGNhbiBtYW5hZ2UgbWFueSBPUlVGdW5jdGlvbi4KICAgICAgICAgICAgQW4gT1JVRnVuY3Rpb24gaW5zdGFuY2UgbXVzdCBiZSBtYW5hZ2VkIGJ5IG9uZSBNYW5hZ2VkRWxlbWVudC4KICAgICAgICAgICAgIjsKCiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOlRvcF9HcnBfVHlwZTsKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6T3JpZ2luX0VudGl0eV9NYXBwaW5nX0dycDsKICAgICAgICBrZXkgaWQ7CgogICAgICAgIGxlYWYtbGlzdCBtYW5hZ2VkLW9ydUZ1bmN0aW9uIHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIk1hbmFnZWQgRWxlbWVudCBtYW5hZ2VzIE8tUlUgRnVuY3Rpb24uIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmFTaWRlIG9yLXRlaXYtb2FtOk1hbmFnZWRFbGVtZW50OwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgfQoKICAgICAgICBsZWFmIG1hbmFnZWQtYnktbWFuYWdlZEVsZW1lbnQgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiTy1SVSBGdW5jdGlvbiBtYW5hZ2VkIGJ5IE1hbmFnZWQgRWxlbWVudC4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YlNpZGUgb3ItdGVpdi1yYW46T1JVRnVuY3Rpb247CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICAgICAgbWFuZGF0b3J5IHRydWU7CiAgICAgICAgfQogICAgfQoKICAgIG9yLXRlaXYteWV4dDpiaURpcmVjdGlvbmFsVG9wb2xvZ3lSZWxhdGlvbnNoaXAgTUFOQUdFREVMRU1FTlRfTUFOQUdFU19ORUFSUlRSSUNGVU5DVElPTiB7ICAgIC8vIDEgdG8gMC4ubgoKICAgICAgICBkZXNjcmlwdGlvbgogICAgICAgICAgICAiVGhlIGFTaWRlIG9mIHRoaXMgcmVsYXRpb25zaGlwIGlzIGFuIGluc3RhbmNlIG9mIHRoZSBNYW5hZ2VkRWxlbWVudCB0eXBlLgogICAgICAgICAgICBUaGUgYlNpZGUgb2YgdGhpcyByZWxhdGlvbnNoaXAgaXMgYW4gaW5zdGFuY2Ugb2YgdGhlIE5lYXJSVFJJQ0Z1bmN0aW9uIHR5cGUuCiAgICAgICAgICAgIFRoZSBNYW5hZ2VkRWxlbWVudCByZXByZXNlbnRzIHRoZSBub2RlIHRoYXQgbWFuYWdlcyB0aGUgTmVhclJUUklDRnVuY3Rpb24uCiAgICAgICAgICAgIEEgTWFuYWdlZEVsZW1lbnQgaW5zdGFuY2UgY2FuIG1hbmFnZSBtYW55IE5lYXJSVFJJQ0Z1bmN0aW9uLgogICAgICAgICAgICBBbiBOZWFyUlRSSUNGdW5jdGlvbiBpbnN0YW5jZSBtdXN0IGJlIG1hbmFnZWQgYnkgb25lIE1hbmFnZWRFbGVtZW50LgogICAgICAgICAgICAiOwoKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6VG9wX0dycF9UeXBlOwogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpPcmlnaW5fRW50aXR5X01hcHBpbmdfR3JwOwogICAgICAgIGtleSBpZDsKCiAgICAgICAgbGVhZi1saXN0IG1hbmFnZWQtbmVhclJUUklDRnVuY3Rpb24gewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiTWFuYWdlZCBFbGVtZW50IG1hbmFnZXMgTmVhciBSVCBSSUMgRnVuY3Rpb24uIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmFTaWRlIG9yLXRlaXYtb2FtOk1hbmFnZWRFbGVtZW50OwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgfQoKICAgICAgICBsZWFmIG1hbmFnZWQtYnktbWFuYWdlZEVsZW1lbnQgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiTmVhciBSVCBSSUMgRnVuY3Rpb24gbWFuYWdlZCBieSBNYW5hZ2VkIEVsZW1lbnQuIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmJTaWRlIG9yLXRlaXYtcmFuOk5lYXJSVFJJQ0Z1bmN0aW9uOwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgICAgIG1hbmRhdG9yeSB0cnVlOwogICAgICAgIH0KICAgIH0KfQ==
\.
-COPY ties_model.entity_info("storedAt", "name", "moduleReferenceName") FROM stdin;
-o-ran-smo-teiv-cloud_CloudifiedNF CloudifiedNF o-ran-smo-teiv-cloud
-o-ran-smo-teiv-cloud_NFDeployment NFDeployment o-ran-smo-teiv-cloud
-o-ran-smo-teiv-cloud_NodeCluster NodeCluster o-ran-smo-teiv-cloud
-o-ran-smo-teiv-cloud_OCloudNamespace OCloudNamespace o-ran-smo-teiv-cloud
-o-ran-smo-teiv-cloud_OCloudSite OCloudSite o-ran-smo-teiv-cloud
-o-ran-smo-teiv-equipment_AntennaModule AntennaModule o-ran-smo-teiv-equipment
-o-ran-smo-teiv-equipment_Site Site o-ran-smo-teiv-equipment
-o-ran-smo-teiv-oam_ManagedElement ManagedElement o-ran-smo-teiv-oam
-o-ran-smo-teiv-ran_AntennaCapability AntennaCapability o-ran-smo-teiv-ran
-o-ran-smo-teiv-ran_NRCellCU NRCellCU o-ran-smo-teiv-ran
-o-ran-smo-teiv-ran_NRCellDU NRCellDU o-ran-smo-teiv-ran
-o-ran-smo-teiv-ran_NRSectorCarrier NRSectorCarrier o-ran-smo-teiv-ran
-o-ran-smo-teiv-ran_NearRTRICFunction NearRTRICFunction o-ran-smo-teiv-ran
-o-ran-smo-teiv-ran_OCUCPFunction OCUCPFunction o-ran-smo-teiv-ran
-o-ran-smo-teiv-ran_OCUUPFunction OCUUPFunction o-ran-smo-teiv-ran
-o-ran-smo-teiv-ran_ODUFunction ODUFunction o-ran-smo-teiv-ran
-o-ran-smo-teiv-ran_ORUFunction ORUFunction o-ran-smo-teiv-ran
-o-ran-smo-teiv-ran_Sector Sector o-ran-smo-teiv-ran
+COPY ties_model.entity_info("storedAt", "name", "moduleReferenceName", "attributeNames") FROM stdin;
+o-ran-smo-teiv-cloud_CloudifiedNF CloudifiedNF o-ran-smo-teiv-cloud ["name"]
+o-ran-smo-teiv-cloud_NFDeployment NFDeployment o-ran-smo-teiv-cloud ["name"]
+o-ran-smo-teiv-cloud_NodeCluster NodeCluster o-ran-smo-teiv-cloud ["name"]
+o-ran-smo-teiv-cloud_OCloudNamespace OCloudNamespace o-ran-smo-teiv-cloud ["name"]
+o-ran-smo-teiv-cloud_OCloudSite OCloudSite o-ran-smo-teiv-cloud ["geo-location", "name"]
+o-ran-smo-teiv-equipment_AntennaModule AntennaModule o-ran-smo-teiv-equipment ["antennaBeamWidth", "antennaModelNumber", "azimuth", "electricalAntennaTilt", "geo-location", "horizontalBeamWidth", "mechanicalAntennaBearing", "mechanicalAntennaTilt", "positionWithinSector", "totalTilt", "verticalBeamWidth"]
+o-ran-smo-teiv-equipment_Site Site o-ran-smo-teiv-equipment ["geo-location", "name"]
+o-ran-smo-teiv-oam_ManagedElement ManagedElement o-ran-smo-teiv-oam []
+o-ran-smo-teiv-ran_AntennaCapability AntennaCapability o-ran-smo-teiv-ran ["eUtranFqBands", "geranFqBands", "nRFqBands"]
+o-ran-smo-teiv-ran_NRCellCU NRCellCU o-ran-smo-teiv-ran ["cellLocalId", "nCI", "nRTAC", "plmnId"]
+o-ran-smo-teiv-ran_NRCellDU NRCellDU o-ran-smo-teiv-ran ["cellLocalId", "nCI", "nRPCI", "nRTAC"]
+o-ran-smo-teiv-ran_NRSectorCarrier NRSectorCarrier o-ran-smo-teiv-ran ["arfcnDL", "arfcnUL", "bSChannelBwDL", "frequencyDL", "frequencyUL"]
+o-ran-smo-teiv-ran_NearRTRICFunction NearRTRICFunction o-ran-smo-teiv-ran ["nearRtRicId", "pLMNId"]
+o-ran-smo-teiv-ran_OCUCPFunction OCUCPFunction o-ran-smo-teiv-ran ["gNBCUName", "gNBId", "gNBIdLength", "pLMNId"]
+o-ran-smo-teiv-ran_OCUUPFunction OCUUPFunction o-ran-smo-teiv-ran ["gNBId", "gNBIdLength", "pLMNIdList"]
+o-ran-smo-teiv-ran_ODUFunction ODUFunction o-ran-smo-teiv-ran ["dUpLMNId", "gNBDUId", "gNBId", "gNBIdLength"]
+o-ran-smo-teiv-ran_ORUFunction ORUFunction o-ran-smo-teiv-ran ["oruId"]
+o-ran-smo-teiv-ran_Sector Sector o-ran-smo-teiv-ran ["azimuth", "geo-location", "sectorId"]
\.
COPY ties_model.relationship_info("name", "aSideAssociationName", "aSideMOType", "aSideModule", "aSideMinCardinality", "aSideMaxCardinality", "bSideAssociationName", "bSideMOType", "bSideModule", "bSideMinCardinality", "bSideMaxCardinality", "associationKind", "connectSameEntity", "relationshipDataLocation", "storedAt", "moduleReferenceName") FROM stdin;
ANTENNAMODULE_INSTALLED_AT_SITE installed-at-site AntennaModule o-ran-smo-teiv-equipment 0 9223372036854775807 installed-antennaModule Site o-ran-smo-teiv-equipment 0 1 BI_DIRECTIONAL false A_SIDE o-ran-smo-teiv-equipment_AntennaModule o-ran-smo-teiv-equipment
ANTENNAMODULE_SERVES_ANTENNACAPABILITY serviced-antennaCapability AntennaModule o-ran-smo-teiv-equipment 0 9223372036854775807 serving-antennaModule AntennaCapability o-ran-smo-teiv-ran 0 9223372036854775807 BI_DIRECTIONAL false RELATION o-ran-smo-teiv-rel-equipment-ran_ANTENNAMODULE_SERVES_ANTENNACAPABILITY o-ran-smo-teiv-rel-equipment-ran
+ANTENNAMODULE_SERVES_NRCELLDU serviced-nrCellDu AntennaModule o-ran-smo-teiv-equipment 1 9223372036854775807 serving-antennaModule NRCellDU o-ran-smo-teiv-ran 0 9223372036854775807 BI_DIRECTIONAL false RELATION o-ran-smo-teiv-rel-equipment-ran_ANTENNAMODULE_SERVES_NRCELLDU o-ran-smo-teiv-rel-equipment-ran
CLOUDIFIEDNF_COMPRISES_NFDEPLOYMENT comprised-nFDeployment CloudifiedNF o-ran-smo-teiv-cloud 1 1 comprised-by-cloudifiedNF NFDeployment o-ran-smo-teiv-cloud 1 9223372036854775807 BI_DIRECTIONAL false B_SIDE o-ran-smo-teiv-cloud_NFDeployment o-ran-smo-teiv-cloud
MANAGEDELEMENT_DEPLOYED_AS_CLOUDIFIEDNF deployed-as-cloudifiedNF ManagedElement o-ran-smo-teiv-oam 1 1 deployed-managedElement CloudifiedNF o-ran-smo-teiv-cloud 0 1 BI_DIRECTIONAL false A_SIDE o-ran-smo-teiv-oam_ManagedElement o-ran-smo-teiv-rel-oam-cloud
MANAGEDELEMENT_MANAGES_NEARRTRICFUNCTION managed-nearRTRICFunction ManagedElement o-ran-smo-teiv-oam 1 1 managed-by-managedElement NearRTRICFunction o-ran-smo-teiv-ran 0 9223372036854775807 BI_DIRECTIONAL false B_SIDE o-ran-smo-teiv-ran_NearRTRICFunction o-ran-smo-teiv-rel-oam-ran
@@ -495,7 +519,7 @@ NFDEPLOYMENT_DEPLOYED_ON_OCLOUDNAMESPACE deployed-on-ocloudNamespace NFDeploymen
NFDEPLOYMENT_SERVES_MANAGEDELEMENT serviced-managedElement NFDeployment o-ran-smo-teiv-cloud 1 9223372036854775807 serving-nFDeployment ManagedElement o-ran-smo-teiv-oam 1 1 BI_DIRECTIONAL false A_SIDE o-ran-smo-teiv-cloud_NFDeployment o-ran-smo-teiv-rel-oam-cloud
NFDEPLOYMENT_SERVES_NEARRTRICFUNCTION serviced-nearRTRICFunction NFDeployment o-ran-smo-teiv-cloud 0 9223372036854775807 serving-nFDeployment NearRTRICFunction o-ran-smo-teiv-ran 0 9223372036854775807 BI_DIRECTIONAL false RELATION o-ran-smo-teiv-rel-cloud-ran_NFDEPLOYMENT_SERVES_NEARRTRICFUNCTION o-ran-smo-teiv-rel-cloud-ran
NFDEPLOYMENT_SERVES_OCUCPFUNCTION serviced-ocucpFunction NFDeployment o-ran-smo-teiv-cloud 0 9223372036854775807 serving-nFDeployment OCUCPFunction o-ran-smo-teiv-ran 0 9223372036854775807 BI_DIRECTIONAL false RELATION o-ran-smo-teiv-rel-cloud-ran_NFDEPLOYMENT_SERVES_OCUCPFUNCTION o-ran-smo-teiv-rel-cloud-ran
-NFDEPLOYMENT_SERVES_OCUUPFUNCTION serviced-gnbcuupFunction NFDeployment o-ran-smo-teiv-cloud 0 9223372036854775807 serving-nFDeployment OCUUPFunction o-ran-smo-teiv-ran 0 9223372036854775807 BI_DIRECTIONAL false RELATION o-ran-smo-teiv-rel-cloud-ran_NFDEPLOYMENT_SERVES_OCUUPFUNCTION o-ran-smo-teiv-rel-cloud-ran
+NFDEPLOYMENT_SERVES_OCUUPFUNCTION serviced-ocuupFunction NFDeployment o-ran-smo-teiv-cloud 0 9223372036854775807 serving-nFDeployment OCUUPFunction o-ran-smo-teiv-ran 0 9223372036854775807 BI_DIRECTIONAL false RELATION o-ran-smo-teiv-rel-cloud-ran_NFDEPLOYMENT_SERVES_OCUUPFUNCTION o-ran-smo-teiv-rel-cloud-ran
NFDEPLOYMENT_SERVES_ODUFUNCTION serviced-oduFunction NFDeployment o-ran-smo-teiv-cloud 0 9223372036854775807 serving-nFDeployment ODUFunction o-ran-smo-teiv-ran 0 9223372036854775807 BI_DIRECTIONAL false RELATION o-ran-smo-teiv-rel-cloud-ran_NFDEPLOYMENT_SERVES_ODUFUNCTION o-ran-smo-teiv-rel-cloud-ran
NODECLUSTER_LOCATED_AT_OCLOUDSITE located-at-ocloudSite NodeCluster o-ran-smo-teiv-cloud 1 9223372036854775807 location-of-onodeCluster OCloudSite o-ran-smo-teiv-cloud 1 9223372036854775807 BI_DIRECTIONAL false RELATION o-ran-smo-teiv-cloud_NODECLUSTER_LOCATED_AT_OCLOUDSITE o-ran-smo-teiv-cloud
NRCELLDU_USES_NRSECTORCARRIER used-nrSectorCarrier NRCellDU o-ran-smo-teiv-ran 0 1 used-by-nrCellDu NRSectorCarrier o-ran-smo-teiv-ran 0 9223372036854775807 BI_DIRECTIONAL false B_SIDE o-ran-smo-teiv-ran_NRSectorCarrier o-ran-smo-teiv-ran
diff --git a/charts/smo/topology-exposure-inventory/resources/init_sql/01_init-teiv-exposure-data.sql b/charts/smo/topology-exposure-inventory/resources/init_sql/01_init-teiv-exposure-data.sql
index 17921ee..138e865 100644
--- a/charts/smo/topology-exposure-inventory/resources/init_sql/01_init-teiv-exposure-data.sql
+++ b/charts/smo/topology-exposure-inventory/resources/init_sql/01_init-teiv-exposure-data.sql
@@ -43,22 +43,47 @@ CREATE OR REPLACE FUNCTION ties_data.create_constraint_if_not_exists (
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
+ IF NOT EXISTS (SELECT constraint_name FROM information_schema.table_constraints WHERE table_schema = 'ties_data' AND table_name = t_name AND constraint_name = c_name) THEN
EXECUTE constraint_sql;
END IF;
END;
$$ language 'plpgsql';
--- Update data schema exec status
-INSERT INTO ties_model.execution_status("schema", "status") VALUES ('ties_data', 'success');
+CREATE OR REPLACE FUNCTION ties_data.create_enum_type(
+ schema_name TEXT, type_name TEXT, enum_values TEXT[]
+) RETURNS VOID AS $$
+BEGIN
+ IF NOT EXISTS (SELECT 1 FROM pg_type t JOIN pg_namespace n ON n.oid = t.typnamespace WHERE t.typname = type_name AND n.nspname = schema_name) THEN
+ EXECUTE format('CREATE TYPE %I.%I AS ENUM (%s)',schema_name, type_name, array_to_string(ARRAY(SELECT quote_literal(value) FROM unnest(enum_values) AS value), ', '));
+ END IF;
+END;
+$$ language 'plpgsql';
+
+SELECT ties_data.create_enum_type('ties_data', 'Reliability', ARRAY['OK', 'RESTORED', 'ADVISED']);
-CREATE TABLE IF NOT EXISTS ties_data."3C2E2CE7BDF8321BC824B6318B190690F58DBB82" (
+CREATE TABLE IF NOT EXISTS ties_data."responsible_adapter" (
+ "id" TEXT,
+ "hashed_id" BYTEA
+);
+
+SELECT ties_data.create_constraint_if_not_exists(
+ 'responsible_adapter',
+ 'PK_responsible_adapter_id',
+ 'ALTER TABLE ties_data."responsible_adapter" ADD CONSTRAINT "PK_responsible_adapter_id" PRIMARY KEY ("id");'
+);
+
+SELECT ties_data.create_constraint_if_not_exists(
+ 'responsible_adapter',
+ 'UNIQUE_responsible_adapter_hashed_id',
+ 'ALTER TABLE ties_data."responsible_adapter" ADD CONSTRAINT "UNIQUE_responsible_adapter_hashed_id" UNIQUE ("hashed_id");'
+);CREATE TABLE IF NOT EXISTS ties_data."3C2E2CE7BDF8321BC824B6318B190690F58DBB82" (
"id" TEXT,
"aSide_NFDeployment" TEXT,
"bSide_NearRTRICFunction" TEXT,
"CD_sourceIds" jsonb,
"CD_classifiers" jsonb,
- "CD_decorators" jsonb
+ "CD_decorators" jsonb,
+ "metadata" jsonb
);
ALTER TABLE ONLY ties_data."3C2E2CE7BDF8321BC824B6318B190690F58DBB82" ALTER COLUMN "CD_sourceIds" SET DEFAULT '[]';
@@ -73,7 +98,8 @@ CREATE TABLE IF NOT EXISTS ties_data."CFC235E0404703D1E4454647DF8AAE2C193DB402"
"bSide_AntennaCapability" TEXT,
"CD_sourceIds" jsonb,
"CD_classifiers" jsonb,
- "CD_decorators" jsonb
+ "CD_decorators" jsonb,
+ "metadata" jsonb
);
ALTER TABLE ONLY ties_data."CFC235E0404703D1E4454647DF8AAE2C193DB402" ALTER COLUMN "CD_sourceIds" SET DEFAULT '[]';
@@ -87,7 +113,8 @@ CREATE TABLE IF NOT EXISTS ties_data."o-ran-smo-teiv-cloud_CloudifiedNF" (
"name" TEXT,
"CD_sourceIds" jsonb,
"CD_classifiers" jsonb,
- "CD_decorators" jsonb
+ "CD_decorators" jsonb,
+ "metadata" jsonb
);
ALTER TABLE ONLY ties_data."o-ran-smo-teiv-cloud_CloudifiedNF" ALTER COLUMN "CD_sourceIds" SET DEFAULT '[]';
@@ -102,7 +129,8 @@ CREATE TABLE IF NOT EXISTS ties_data."o-ran-smo-teiv-cloud_NFDEPLOYMENT_DEPLOYED
"bSide_OCloudNamespace" TEXT,
"CD_sourceIds" jsonb,
"CD_classifiers" jsonb,
- "CD_decorators" jsonb
+ "CD_decorators" jsonb,
+ "metadata" jsonb
);
ALTER TABLE ONLY ties_data."o-ran-smo-teiv-cloud_NFDEPLOYMENT_DEPLOYED_ON_OCLOUDNAMESPACE" ALTER COLUMN "CD_sourceIds" SET DEFAULT '[]';
@@ -117,16 +145,19 @@ CREATE TABLE IF NOT EXISTS ties_data."o-ran-smo-teiv-cloud_NFDeployment" (
"CD_sourceIds" jsonb,
"CD_classifiers" jsonb,
"CD_decorators" jsonb,
+ "metadata" jsonb,
"REL_FK_comprised-by-cloudifiedNF" TEXT,
"REL_ID_CLOUDIFIEDNF_COMPRISES_NFDEPLOYMENT" TEXT,
"REL_CD_sourceIds_CLOUDIFIEDNF_COMPRISES_NFDEPLOYMENT" jsonb,
"REL_CD_classifiers_CLOUDIFIEDNF_COMPRISES_NFDEPLOYMENT" jsonb,
"REL_CD_decorators_CLOUDIFIEDNF_COMPRISES_NFDEPLOYMENT" jsonb,
+ "REL_metadata_CLOUDIFIEDNF_COMPRISES_NFDEPLOYMENT" jsonb,
"REL_FK_serviced-managedElement" TEXT,
"REL_ID_NFDEPLOYMENT_SERVES_MANAGEDELEMENT" TEXT,
"REL_CD_sourceIds_NFDEPLOYMENT_SERVES_MANAGEDELEMENT" jsonb,
"REL_CD_classifiers_NFDEPLOYMENT_SERVES_MANAGEDELEMENT" jsonb,
- "REL_CD_decorators_NFDEPLOYMENT_SERVES_MANAGEDELEMENT" jsonb
+ "REL_CD_decorators_NFDEPLOYMENT_SERVES_MANAGEDELEMENT" jsonb,
+ "REL_metadata_NFDEPLOYMENT_SERVES_MANAGEDELEMENT" jsonb
);
ALTER TABLE ONLY ties_data."o-ran-smo-teiv-cloud_NFDeployment" ALTER COLUMN "CD_sourceIds" SET DEFAULT '[]';
@@ -153,7 +184,8 @@ CREATE TABLE IF NOT EXISTS ties_data."o-ran-smo-teiv-cloud_NODECLUSTER_LOCATED_A
"bSide_OCloudSite" TEXT,
"CD_sourceIds" jsonb,
"CD_classifiers" jsonb,
- "CD_decorators" jsonb
+ "CD_decorators" jsonb,
+ "metadata" jsonb
);
ALTER TABLE ONLY ties_data."o-ran-smo-teiv-cloud_NODECLUSTER_LOCATED_AT_OCLOUDSITE" ALTER COLUMN "CD_sourceIds" SET DEFAULT '[]';
@@ -167,7 +199,8 @@ CREATE TABLE IF NOT EXISTS ties_data."o-ran-smo-teiv-cloud_NodeCluster" (
"name" TEXT,
"CD_sourceIds" jsonb,
"CD_classifiers" jsonb,
- "CD_decorators" jsonb
+ "CD_decorators" jsonb,
+ "metadata" jsonb
);
ALTER TABLE ONLY ties_data."o-ran-smo-teiv-cloud_NodeCluster" ALTER COLUMN "CD_sourceIds" SET DEFAULT '[]';
@@ -182,11 +215,13 @@ CREATE TABLE IF NOT EXISTS ties_data."o-ran-smo-teiv-cloud_OCloudNamespace" (
"CD_sourceIds" jsonb,
"CD_classifiers" jsonb,
"CD_decorators" jsonb,
+ "metadata" jsonb,
"REL_FK_deployed-on-nodeCluster" TEXT,
"REL_ID_OCLOUDNAMESPACE_DEPLOYED_ON_NODECLUSTER" TEXT,
"REL_CD_sourceIds_OCLOUDNAMESPACE_DEPLOYED_ON_NODECLUSTER" jsonb,
"REL_CD_classifiers_OCLOUDNAMESPACE_DEPLOYED_ON_NODECLUSTER" jsonb,
- "REL_CD_decorators_OCLOUDNAMESPACE_DEPLOYED_ON_NODECLUSTER" jsonb
+ "REL_CD_decorators_OCLOUDNAMESPACE_DEPLOYED_ON_NODECLUSTER" jsonb,
+ "REL_metadata_OCLOUDNAMESPACE_DEPLOYED_ON_NODECLUSTER" jsonb
);
ALTER TABLE ONLY ties_data."o-ran-smo-teiv-cloud_OCloudNamespace" ALTER COLUMN "CD_sourceIds" SET DEFAULT '[]';
@@ -207,7 +242,8 @@ CREATE TABLE IF NOT EXISTS ties_data."o-ran-smo-teiv-cloud_OCloudSite" (
"name" TEXT,
"CD_sourceIds" jsonb,
"CD_classifiers" jsonb,
- "CD_decorators" jsonb
+ "CD_decorators" jsonb,
+ "metadata" jsonb
);
ALTER TABLE ONLY ties_data."o-ran-smo-teiv-cloud_OCloudSite" ALTER COLUMN "CD_sourceIds" SET DEFAULT '[]';
@@ -220,25 +256,31 @@ CREATE TABLE IF NOT EXISTS ties_data."o-ran-smo-teiv-equipment_AntennaModule" (
"id" TEXT,
"antennaBeamWidth" jsonb,
"antennaModelNumber" TEXT,
+ "azimuth" DECIMAL,
"electricalAntennaTilt" INTEGER,
"geo-location" geography,
+ "horizontalBeamWidth" DECIMAL,
"mechanicalAntennaBearing" INTEGER,
"mechanicalAntennaTilt" INTEGER,
"positionWithinSector" TEXT,
"totalTilt" INTEGER,
+ "verticalBeamWidth" DECIMAL,
"CD_sourceIds" jsonb,
"CD_classifiers" jsonb,
"CD_decorators" jsonb,
+ "metadata" jsonb,
"REL_FK_installed-at-site" TEXT,
"REL_ID_ANTENNAMODULE_INSTALLED_AT_SITE" TEXT,
"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_metadata_ANTENNAMODULE_INSTALLED_AT_SITE" jsonb,
"REL_FK_grouped-by-sector" TEXT,
"REL_ID_SECTOR_GROUPS_ANTENNAMODULE" TEXT,
"REL_CD_sourceIds_SECTOR_GROUPS_ANTENNAMODULE" jsonb,
"REL_CD_classifiers_SECTOR_GROUPS_ANTENNAMODULE" jsonb,
- "REL_CD_decorators_SECTOR_GROUPS_ANTENNAMODULE" jsonb
+ "REL_CD_decorators_SECTOR_GROUPS_ANTENNAMODULE" jsonb,
+ "REL_metadata_SECTOR_GROUPS_ANTENNAMODULE" jsonb
);
ALTER TABLE ONLY ties_data."o-ran-smo-teiv-equipment_AntennaModule" ALTER COLUMN "CD_sourceIds" SET DEFAULT '[]';
@@ -265,7 +307,8 @@ CREATE TABLE IF NOT EXISTS ties_data."o-ran-smo-teiv-equipment_Site" (
"name" TEXT,
"CD_sourceIds" jsonb,
"CD_classifiers" jsonb,
- "CD_decorators" jsonb
+ "CD_decorators" jsonb,
+ "metadata" jsonb
);
ALTER TABLE ONLY ties_data."o-ran-smo-teiv-equipment_Site" ALTER COLUMN "CD_sourceIds" SET DEFAULT '[]';
@@ -279,11 +322,13 @@ CREATE TABLE IF NOT EXISTS ties_data."o-ran-smo-teiv-oam_ManagedElement" (
"CD_sourceIds" jsonb,
"CD_classifiers" jsonb,
"CD_decorators" jsonb,
+ "metadata" jsonb,
"REL_FK_deployed-as-cloudifiedNF" TEXT,
"REL_ID_MANAGEDELEMENT_DEPLOYED_AS_CLOUDIFIEDNF" TEXT,
"REL_CD_sourceIds_MANAGEDELEMENT_DEPLOYED_AS_CLOUDIFIEDNF" jsonb,
"REL_CD_classifiers_MANAGEDELEMENT_DEPLOYED_AS_CLOUDIFIEDNF" jsonb,
- "REL_CD_decorators_MANAGEDELEMENT_DEPLOYED_AS_CLOUDIFIEDNF" jsonb
+ "REL_CD_decorators_MANAGEDELEMENT_DEPLOYED_AS_CLOUDIFIEDNF" jsonb,
+ "REL_metadata_MANAGEDELEMENT_DEPLOYED_AS_CLOUDIFIEDNF" jsonb
);
ALTER TABLE ONLY ties_data."o-ran-smo-teiv-oam_ManagedElement" ALTER COLUMN "CD_sourceIds" SET DEFAULT '[]';
@@ -305,7 +350,8 @@ CREATE TABLE IF NOT EXISTS ties_data."o-ran-smo-teiv-ran_AntennaCapability" (
"nRFqBands" jsonb,
"CD_sourceIds" jsonb,
"CD_classifiers" jsonb,
- "CD_decorators" jsonb
+ "CD_decorators" jsonb,
+ "metadata" jsonb
);
ALTER TABLE ONLY ties_data."o-ran-smo-teiv-ran_AntennaCapability" ALTER COLUMN "CD_sourceIds" SET DEFAULT '[]';
@@ -323,11 +369,13 @@ CREATE TABLE IF NOT EXISTS ties_data."o-ran-smo-teiv-ran_NRCellCU" (
"CD_sourceIds" jsonb,
"CD_classifiers" jsonb,
"CD_decorators" jsonb,
+ "metadata" jsonb,
"REL_FK_provided-by-ocucpFunction" TEXT,
"REL_ID_OCUCPFUNCTION_PROVIDES_NRCELLCU" TEXT,
"REL_CD_sourceIds_OCUCPFUNCTION_PROVIDES_NRCELLCU" jsonb,
"REL_CD_classifiers_OCUCPFUNCTION_PROVIDES_NRCELLCU" jsonb,
- "REL_CD_decorators_OCUCPFUNCTION_PROVIDES_NRCELLCU" jsonb
+ "REL_CD_decorators_OCUCPFUNCTION_PROVIDES_NRCELLCU" jsonb,
+ "REL_metadata_OCUCPFUNCTION_PROVIDES_NRCELLCU" jsonb
);
ALTER TABLE ONLY ties_data."o-ran-smo-teiv-ran_NRCellCU" ALTER COLUMN "CD_sourceIds" SET DEFAULT '[]';
@@ -351,16 +399,19 @@ CREATE TABLE IF NOT EXISTS ties_data."o-ran-smo-teiv-ran_NRCellDU" (
"CD_sourceIds" jsonb,
"CD_classifiers" jsonb,
"CD_decorators" jsonb,
+ "metadata" jsonb,
"REL_FK_provided-by-oduFunction" TEXT,
"REL_ID_ODUFUNCTION_PROVIDES_NRCELLDU" TEXT,
"REL_CD_sourceIds_ODUFUNCTION_PROVIDES_NRCELLDU" jsonb,
"REL_CD_classifiers_ODUFUNCTION_PROVIDES_NRCELLDU" jsonb,
"REL_CD_decorators_ODUFUNCTION_PROVIDES_NRCELLDU" jsonb,
+ "REL_metadata_ODUFUNCTION_PROVIDES_NRCELLDU" jsonb,
"REL_FK_grouped-by-sector" TEXT,
"REL_ID_SECTOR_GROUPS_NRCELLDU" TEXT,
"REL_CD_sourceIds_SECTOR_GROUPS_NRCELLDU" jsonb,
"REL_CD_classifiers_SECTOR_GROUPS_NRCELLDU" jsonb,
- "REL_CD_decorators_SECTOR_GROUPS_NRCELLDU" jsonb
+ "REL_CD_decorators_SECTOR_GROUPS_NRCELLDU" jsonb,
+ "REL_metadata_SECTOR_GROUPS_NRCELLDU" jsonb
);
ALTER TABLE ONLY ties_data."o-ran-smo-teiv-ran_NRCellDU" ALTER COLUMN "CD_sourceIds" SET DEFAULT '[]';
@@ -391,21 +442,25 @@ CREATE TABLE IF NOT EXISTS ties_data."o-ran-smo-teiv-ran_NRSectorCarrier" (
"CD_sourceIds" jsonb,
"CD_classifiers" jsonb,
"CD_decorators" jsonb,
+ "metadata" jsonb,
"REL_FK_used-by-nrCellDu" TEXT,
"REL_ID_NRCELLDU_USES_NRSECTORCARRIER" TEXT,
"REL_CD_sourceIds_NRCELLDU_USES_NRSECTORCARRIER" jsonb,
"REL_CD_classifiers_NRCELLDU_USES_NRSECTORCARRIER" jsonb,
"REL_CD_decorators_NRCELLDU_USES_NRSECTORCARRIER" jsonb,
+ "REL_metadata_NRCELLDU_USES_NRSECTORCARRIER" jsonb,
"REL_FK_used-antennaCapability" TEXT,
"REL_ID_NRSECTORCARRIER_USES_ANTENNACAPABILITY" TEXT,
"REL_CD_sourceIds_NRSECTORCARRIER_USES_ANTENNACAPABILITY" jsonb,
"REL_CD_classifiers_NRSECTORCARRIER_USES_ANTENNACAPABILITY" jsonb,
"REL_CD_decorators_NRSECTORCARRIER_USES_ANTENNACAPABILITY" jsonb,
+ "REL_metadata_NRSECTORCARRIER_USES_ANTENNACAPABILITY" jsonb,
"REL_FK_provided-by-oduFunction" TEXT,
"REL_ID_ODUFUNCTION_PROVIDES_NRSECTORCARRIER" TEXT,
"REL_CD_sourceIds_ODUFUNCTION_PROVIDES_NRSECTORCARRIER" jsonb,
"REL_CD_classifiers_ODUFUNCTION_PROVIDES_NRSECTORCARRIER" jsonb,
- "REL_CD_decorators_ODUFUNCTION_PROVIDES_NRSECTORCARRIER" jsonb
+ "REL_CD_decorators_ODUFUNCTION_PROVIDES_NRSECTORCARRIER" jsonb,
+ "REL_metadata_ODUFUNCTION_PROVIDES_NRSECTORCARRIER" jsonb
);
ALTER TABLE ONLY ties_data."o-ran-smo-teiv-ran_NRSectorCarrier" ALTER COLUMN "CD_sourceIds" SET DEFAULT '[]';
@@ -439,11 +494,13 @@ CREATE TABLE IF NOT EXISTS ties_data."o-ran-smo-teiv-ran_NearRTRICFunction" (
"CD_sourceIds" jsonb,
"CD_classifiers" jsonb,
"CD_decorators" jsonb,
+ "metadata" jsonb,
"REL_FK_managed-by-managedElement" TEXT,
"REL_ID_MANAGEDELEMENT_MANAGES_NEARRTRICFUNCTION" TEXT,
"REL_CD_sourceIds_MANAGEDELEMENT_MANAGES_NEARRTRICFUNCTION" jsonb,
"REL_CD_classifiers_MANAGEDELEMENT_MANAGES_NEARRTRICFUNCTION" jsonb,
- "REL_CD_decorators_MANAGEDELEMENT_MANAGES_NEARRTRICFUNCTION" jsonb
+ "REL_CD_decorators_MANAGEDELEMENT_MANAGES_NEARRTRICFUNCTION" jsonb,
+ "REL_metadata_MANAGEDELEMENT_MANAGES_NEARRTRICFUNCTION" jsonb
);
ALTER TABLE ONLY ties_data."o-ran-smo-teiv-ran_NearRTRICFunction" ALTER COLUMN "CD_sourceIds" SET DEFAULT '[]';
@@ -467,11 +524,13 @@ CREATE TABLE IF NOT EXISTS ties_data."o-ran-smo-teiv-ran_OCUCPFunction" (
"CD_sourceIds" jsonb,
"CD_classifiers" jsonb,
"CD_decorators" jsonb,
+ "metadata" jsonb,
"REL_FK_managed-by-managedElement" TEXT,
"REL_ID_MANAGEDELEMENT_MANAGES_OCUCPFUNCTION" TEXT,
"REL_CD_sourceIds_MANAGEDELEMENT_MANAGES_OCUCPFUNCTION" jsonb,
"REL_CD_classifiers_MANAGEDELEMENT_MANAGES_OCUCPFUNCTION" jsonb,
- "REL_CD_decorators_MANAGEDELEMENT_MANAGES_OCUCPFUNCTION" jsonb
+ "REL_CD_decorators_MANAGEDELEMENT_MANAGES_OCUCPFUNCTION" jsonb,
+ "REL_metadata_MANAGEDELEMENT_MANAGES_OCUCPFUNCTION" jsonb
);
ALTER TABLE ONLY ties_data."o-ran-smo-teiv-ran_OCUCPFunction" ALTER COLUMN "CD_sourceIds" SET DEFAULT '[]';
@@ -494,11 +553,13 @@ CREATE TABLE IF NOT EXISTS ties_data."o-ran-smo-teiv-ran_OCUUPFunction" (
"CD_sourceIds" jsonb,
"CD_classifiers" jsonb,
"CD_decorators" jsonb,
+ "metadata" jsonb,
"REL_FK_managed-by-managedElement" TEXT,
"REL_ID_MANAGEDELEMENT_MANAGES_OCUUPFUNCTION" TEXT,
"REL_CD_sourceIds_MANAGEDELEMENT_MANAGES_OCUUPFUNCTION" jsonb,
"REL_CD_classifiers_MANAGEDELEMENT_MANAGES_OCUUPFUNCTION" jsonb,
- "REL_CD_decorators_MANAGEDELEMENT_MANAGES_OCUUPFUNCTION" jsonb
+ "REL_CD_decorators_MANAGEDELEMENT_MANAGES_OCUUPFUNCTION" jsonb,
+ "REL_metadata_MANAGEDELEMENT_MANAGES_OCUUPFUNCTION" jsonb
);
ALTER TABLE ONLY ties_data."o-ran-smo-teiv-ran_OCUUPFunction" ALTER COLUMN "CD_sourceIds" SET DEFAULT '[]';
@@ -515,17 +576,20 @@ ALTER TABLE ONLY ties_data."o-ran-smo-teiv-ran_OCUUPFunction" ALTER COLUMN "REL_
CREATE TABLE IF NOT EXISTS ties_data."o-ran-smo-teiv-ran_ODUFunction" (
"id" TEXT,
+ "dUpLMNId" jsonb,
"gNBDUId" BIGINT,
"gNBId" BIGINT,
"gNBIdLength" INTEGER,
"CD_sourceIds" jsonb,
"CD_classifiers" jsonb,
"CD_decorators" jsonb,
+ "metadata" jsonb,
"REL_FK_managed-by-managedElement" TEXT,
"REL_ID_MANAGEDELEMENT_MANAGES_ODUFUNCTION" TEXT,
"REL_CD_sourceIds_MANAGEDELEMENT_MANAGES_ODUFUNCTION" jsonb,
"REL_CD_classifiers_MANAGEDELEMENT_MANAGES_ODUFUNCTION" jsonb,
- "REL_CD_decorators_MANAGEDELEMENT_MANAGES_ODUFUNCTION" jsonb
+ "REL_CD_decorators_MANAGEDELEMENT_MANAGES_ODUFUNCTION" jsonb,
+ "REL_metadata_MANAGEDELEMENT_MANAGES_ODUFUNCTION" jsonb
);
ALTER TABLE ONLY ties_data."o-ran-smo-teiv-ran_ODUFunction" ALTER COLUMN "CD_sourceIds" SET DEFAULT '[]';
@@ -546,11 +610,13 @@ CREATE TABLE IF NOT EXISTS ties_data."o-ran-smo-teiv-ran_ORUFunction" (
"CD_sourceIds" jsonb,
"CD_classifiers" jsonb,
"CD_decorators" jsonb,
+ "metadata" jsonb,
"REL_FK_managed-by-managedElement" TEXT,
"REL_ID_MANAGEDELEMENT_MANAGES_ORUFUNCTION" TEXT,
"REL_CD_sourceIds_MANAGEDELEMENT_MANAGES_ORUFUNCTION" jsonb,
"REL_CD_classifiers_MANAGEDELEMENT_MANAGES_ORUFUNCTION" jsonb,
- "REL_CD_decorators_MANAGEDELEMENT_MANAGES_ORUFUNCTION" jsonb
+ "REL_CD_decorators_MANAGEDELEMENT_MANAGES_ORUFUNCTION" jsonb,
+ "REL_metadata_MANAGEDELEMENT_MANAGES_ORUFUNCTION" jsonb
);
ALTER TABLE ONLY ties_data."o-ran-smo-teiv-ran_ORUFunction" ALTER COLUMN "CD_sourceIds" SET DEFAULT '[]';
@@ -572,7 +638,8 @@ CREATE TABLE IF NOT EXISTS ties_data."o-ran-smo-teiv-ran_Sector" (
"sectorId" BIGINT,
"CD_sourceIds" jsonb,
"CD_classifiers" jsonb,
- "CD_decorators" jsonb
+ "CD_decorators" jsonb,
+ "metadata" jsonb
);
ALTER TABLE ONLY ties_data."o-ran-smo-teiv-ran_Sector" ALTER COLUMN "CD_sourceIds" SET DEFAULT '[]';
@@ -587,7 +654,8 @@ CREATE TABLE IF NOT EXISTS ties_data."o-ran-smo-teiv-rel-cloud-ran_NFDEPLOYMENT_
"bSide_OCUCPFunction" TEXT,
"CD_sourceIds" jsonb,
"CD_classifiers" jsonb,
- "CD_decorators" jsonb
+ "CD_decorators" jsonb,
+ "metadata" jsonb
);
ALTER TABLE ONLY ties_data."o-ran-smo-teiv-rel-cloud-ran_NFDEPLOYMENT_SERVES_OCUCPFUNCTION" ALTER COLUMN "CD_sourceIds" SET DEFAULT '[]';
@@ -602,7 +670,8 @@ CREATE TABLE IF NOT EXISTS ties_data."o-ran-smo-teiv-rel-cloud-ran_NFDEPLOYMENT_
"bSide_OCUUPFunction" TEXT,
"CD_sourceIds" jsonb,
"CD_classifiers" jsonb,
- "CD_decorators" jsonb
+ "CD_decorators" jsonb,
+ "metadata" jsonb
);
ALTER TABLE ONLY ties_data."o-ran-smo-teiv-rel-cloud-ran_NFDEPLOYMENT_SERVES_OCUUPFUNCTION" ALTER COLUMN "CD_sourceIds" SET DEFAULT '[]';
@@ -617,7 +686,8 @@ CREATE TABLE IF NOT EXISTS ties_data."o-ran-smo-teiv-rel-cloud-ran_NFDEPLOYMENT_
"bSide_ODUFunction" TEXT,
"CD_sourceIds" jsonb,
"CD_classifiers" jsonb,
- "CD_decorators" jsonb
+ "CD_decorators" jsonb,
+ "metadata" jsonb
);
ALTER TABLE ONLY ties_data."o-ran-smo-teiv-rel-cloud-ran_NFDEPLOYMENT_SERVES_ODUFUNCTION" ALTER COLUMN "CD_sourceIds" SET DEFAULT '[]';
@@ -626,6 +696,22 @@ ALTER TABLE ONLY ties_data."o-ran-smo-teiv-rel-cloud-ran_NFDEPLOYMENT_SERVES_ODU
ALTER TABLE ONLY ties_data."o-ran-smo-teiv-rel-cloud-ran_NFDEPLOYMENT_SERVES_ODUFUNCTION" ALTER COLUMN "CD_decorators" SET DEFAULT '{}';
+CREATE TABLE IF NOT EXISTS ties_data."o-ran-smo-teiv-rel-equipment-ran_ANTENNAMODULE_SERVES_NRCELLDU" (
+ "id" TEXT,
+ "aSide_AntennaModule" TEXT,
+ "bSide_NRCellDU" TEXT,
+ "CD_sourceIds" jsonb,
+ "CD_classifiers" jsonb,
+ "CD_decorators" jsonb,
+ "metadata" jsonb
+);
+
+ALTER TABLE ONLY ties_data."o-ran-smo-teiv-rel-equipment-ran_ANTENNAMODULE_SERVES_NRCELLDU" ALTER COLUMN "CD_sourceIds" SET DEFAULT '[]';
+
+ALTER TABLE ONLY ties_data."o-ran-smo-teiv-rel-equipment-ran_ANTENNAMODULE_SERVES_NRCELLDU" ALTER COLUMN "CD_classifiers" SET DEFAULT '[]';
+
+ALTER TABLE ONLY ties_data."o-ran-smo-teiv-rel-equipment-ran_ANTENNAMODULE_SERVES_NRCELLDU" ALTER COLUMN "CD_decorators" SET DEFAULT '{}';
+
SELECT ties_data.create_constraint_if_not_exists(
'3C2E2CE7BDF8321BC824B6318B190690F58DBB82',
'PK_82A1C5618438FF6DF7CDD48FD71E0A584E6D052A',
@@ -776,6 +862,12 @@ SELECT ties_data.create_constraint_if_not_exists(
'ALTER TABLE ties_data."o-ran-smo-teiv-rel-cloud-ran_NFDEPLOYMENT_SERVES_ODUFUNCTION" ADD CONSTRAINT "PK_A10CB552A0F126991DD325EC84DBFAC6F2BBE1A3" PRIMARY KEY ("id");'
);
+SELECT ties_data.create_constraint_if_not_exists(
+ 'o-ran-smo-teiv-rel-equipment-ran_ANTENNAMODULE_SERVES_NRCELLDU',
+ 'PK_F41873285F3BD831F63C6041B4356A063403406D',
+ 'ALTER TABLE ties_data."o-ran-smo-teiv-rel-equipment-ran_ANTENNAMODULE_SERVES_NRCELLDU" ADD CONSTRAINT "PK_F41873285F3BD831F63C6041B4356A063403406D" PRIMARY KEY ("id");'
+);
+
SELECT ties_data.create_constraint_if_not_exists(
'3C2E2CE7BDF8321BC824B6318B190690F58DBB82',
'FK_BE847E738902EA979AC709D5A3D0CCD3FD8911CA',
@@ -1064,6 +1156,18 @@ SELECT ties_data.create_constraint_if_not_exists(
'ALTER TABLE ties_data."o-ran-smo-teiv-rel-cloud-ran_NFDEPLOYMENT_SERVES_ODUFUNCTION" ADD CONSTRAINT "FK_C7C12DB840FBCF4EA729B8C2BBCD8BFDE06F0F08" FOREIGN KEY ("bSide_ODUFunction") REFERENCES ties_data."o-ran-smo-teiv-ran_ODUFunction" (id) ON DELETE CASCADE;'
);
+SELECT ties_data.create_constraint_if_not_exists(
+ 'o-ran-smo-teiv-rel-equipment-ran_ANTENNAMODULE_SERVES_NRCELLDU',
+ 'FK_1AB1E0CC29DA2E122D43A6616EC60A3F73E68649',
+ 'ALTER TABLE ties_data."o-ran-smo-teiv-rel-equipment-ran_ANTENNAMODULE_SERVES_NRCELLDU" ADD CONSTRAINT "FK_1AB1E0CC29DA2E122D43A6616EC60A3F73E68649" FOREIGN KEY ("aSide_AntennaModule") REFERENCES ties_data."o-ran-smo-teiv-equipment_AntennaModule" (id) ON DELETE CASCADE;'
+);
+
+SELECT ties_data.create_constraint_if_not_exists(
+ 'o-ran-smo-teiv-rel-equipment-ran_ANTENNAMODULE_SERVES_NRCELLDU',
+ 'FK_8605800A4923C52258A8CE3989E18A7C93D22E8C',
+ 'ALTER TABLE ties_data."o-ran-smo-teiv-rel-equipment-ran_ANTENNAMODULE_SERVES_NRCELLDU" ADD CONSTRAINT "FK_8605800A4923C52258A8CE3989E18A7C93D22E8C" FOREIGN KEY ("bSide_NRCellDU") REFERENCES ties_data."o-ran-smo-teiv-ran_NRCellDU" (id) ON DELETE CASCADE;'
+);
+
CREATE INDEX IF NOT EXISTS "IDX_996D2C34C2458A6EFE8599C1A0E6942D3D288B7A" ON ties_data."3C2E2CE7BDF8321BC824B6318B190690F58DBB82" USING GIN (("CD_sourceIds"::TEXT) gin_trgm_ops);
CREATE INDEX IF NOT EXISTS "IDX_F52FEEDBAF1B04D2D22EBAE051BB5125DF6A6968" ON ties_data."3C2E2CE7BDF8321BC824B6318B190690F58DBB82" USING GIN (("CD_classifiers"::TEXT) gin_trgm_ops);
@@ -1284,6 +1388,8 @@ CREATE INDEX IF NOT EXISTS "IDX_3346DFB8C2B7D6EEA12B7C1DE4A84B058C24A657" ON tie
CREATE INDEX IF NOT EXISTS "IDX_ADD3393C27589066C4993A3491436C6FB57A539F" ON ties_data."o-ran-smo-teiv-ran_OCUUPFunction" USING GIN ("REL_CD_decorators_MANAGEDELEMENT_MANAGES_OCUUPFUNCTION");
+CREATE INDEX IF NOT EXISTS "IDX_GIN_o-ran-smo-teiv-ran_ODUFunction_dUpLMNId" ON ties_data."o-ran-smo-teiv-ran_ODUFunction" USING GIN ("dUpLMNId");
+
CREATE INDEX IF NOT EXISTS "IDX_73790DA8FF6365B752DC8B399893AC6DE8CF26C4" ON ties_data."o-ran-smo-teiv-ran_ODUFunction" USING GIN (("CD_sourceIds"::TEXT) gin_trgm_ops);
CREATE INDEX IF NOT EXISTS "IDX_5CE9EDE1F25AB2D880A41BC5D297FDBE668182E8" ON ties_data."o-ran-smo-teiv-ran_ODUFunction" USING GIN (("CD_classifiers"::TEXT) gin_trgm_ops);
@@ -1332,6 +1438,12 @@ CREATE INDEX IF NOT EXISTS "IDX_F4A1999634924C7E4D1CBD05E83996A5B1262A8A" ON tie
CREATE INDEX IF NOT EXISTS "IDX_5BAC6D2F05A63FDE27F082E8C8F4D766C145E835" ON ties_data."o-ran-smo-teiv-rel-cloud-ran_NFDEPLOYMENT_SERVES_ODUFUNCTION" USING GIN ("CD_decorators");
+CREATE INDEX IF NOT EXISTS "IDX_0E1BE8724BEBB21C5AE3986BE150BEC8F8CD903E" ON ties_data."o-ran-smo-teiv-rel-equipment-ran_ANTENNAMODULE_SERVES_NRCELLDU" USING GIN (("CD_sourceIds"::TEXT) gin_trgm_ops);
+
+CREATE INDEX IF NOT EXISTS "IDX_F93AD0AE5C6940EE73D0B661A2E2E5BB10B3772C" ON ties_data."o-ran-smo-teiv-rel-equipment-ran_ANTENNAMODULE_SERVES_NRCELLDU" USING GIN (("CD_classifiers"::TEXT) gin_trgm_ops);
+
+CREATE INDEX IF NOT EXISTS "IDX_319FDFF6C9E6BC1D922F0A2AFEAAC294E520F753" ON ties_data."o-ran-smo-teiv-rel-equipment-ran_ANTENNAMODULE_SERVES_NRCELLDU" USING GIN ("CD_decorators");
+
ANALYZE ties_data."o-ran-smo-teiv-rel-cloud-ran_NFDEPLOYMENT_SERVES_OCUUPFUNCTION";
ANALYZE ties_data."o-ran-smo-teiv-ran_ODUFunction";
@@ -1352,6 +1464,8 @@ ANALYZE ties_data."o-ran-smo-teiv-oam_ManagedElement";
ANALYZE ties_data."o-ran-smo-teiv-ran_NRCellDU";
+ANALYZE ties_data."o-ran-smo-teiv-rel-equipment-ran_ANTENNAMODULE_SERVES_NRCELLDU";
+
ANALYZE ties_data."o-ran-smo-teiv-ran_NearRTRICFunction";
ANALYZE ties_data."o-ran-smo-teiv-cloud_CloudifiedNF";
diff --git a/charts/smo/topology-exposure-inventory/resources/init_sql/03_init-teiv-exposure-groups.sql b/charts/smo/topology-exposure-inventory/resources/init_sql/03_init-teiv-exposure-groups.sql
new file mode 100644
index 0000000..18ee6f3
--- /dev/null
+++ b/charts/smo/topology-exposure-inventory/resources/init_sql/03_init-teiv-exposure-groups.sql
@@ -0,0 +1,70 @@
+--
+-- ============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
+--
+-- 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=========================================================
+--
+
+BEGIN;
+
+CREATE SCHEMA IF NOT EXISTS ties_groups;
+ALTER SCHEMA ties_groups OWNER TO topology_exposure_user;
+SET default_tablespace = '';
+SET default_table_access_method = heap;
+
+SET ROLE 'topology_exposure_user';
+
+-- Function to create CONSTRAINT only if it does not exists
+CREATE OR REPLACE FUNCTION ties_groups.create_constraint_if_not_exists (
+ 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_schema = 'ties_groups' AND table_name = t_name AND constraint_name = c_name) THEN
+ EXECUTE constraint_sql;
+ END IF;
+END;
+$$ language 'plpgsql';
+
+CREATE TABLE IF NOT EXISTS ties_groups."groups" (
+ "id" VARCHAR(150) PRIMARY KEY,
+ "name" VARCHAR(150) NOT NULL,
+ "type" VARCHAR(50) NOT NULL
+);
+
+CREATE TABLE IF NOT EXISTS ties_groups."static_groups" (
+ "id" VARCHAR(150),
+ "topology_type" TEXT NOT NULL,
+ "provided_members_ids" TEXT[] NOT NULL,
+ PRIMARY KEY ("id", "topology_type"),
+ FOREIGN KEY ("id") REFERENCES ties_groups."groups" ("id") ON DELETE CASCADE
+);
+
+CREATE TABLE IF NOT EXISTS ties_groups."dynamic_groups" (
+ "id" VARCHAR(150) PRIMARY KEY,
+ "criteria" JSONB NOT NULL,
+ FOREIGN KEY ("id") REFERENCES ties_groups."groups" ("id") ON DELETE CASCADE
+);
+
+SELECT ties_groups.create_constraint_if_not_exists(
+ 'groups',
+ 'CHECK_groups_type',
+ 'ALTER TABLE ties_groups."groups" ADD CONSTRAINT "CHECK_groups_type" CHECK ("type" IN (''static'', ''dynamic''))'
+);
+
+COMMIT;
diff --git a/docker-compose/cloudEventProducer/events/cloudEventExampleMerge.txt b/docker-compose/cloudEventProducer/events/cloudEventExampleMerge.txt
index f9abb0a..dc77c25 100644
--- a/docker-compose/cloudEventProducer/events/cloudEventExampleMerge.txt
+++ b/docker-compose/cloudEventProducer/events/cloudEventExampleMerge.txt
@@ -236,134 +236,222 @@ ce_specversion:::1.0,ce_id:::a30e63c9-d29e-46ff-b99a-b63ed83fd237,ce_source:::dm
{
"id": "urn:oran:smo:teiv:MANAGEDELEMENT_MANAGES_ODUFUNCTION=1",
"aSide": "urn:3gpp:dn:ManagedElement=NR01",
- "bSide": "urn:3gpp:dn:ManagedElement=NR01,ODUFunction=1"
+ "bSide": "urn:3gpp:dn:ManagedElement=NR01,ODUFunction=1",
+ "sourceIds": [
+ "source1",
+ "source2"
+ ]
}
],
"o-ran-smo-teiv-ran:ODUFUNCTION_PROVIDES_NRSECTORCARRIER": [
{
"id": "urn:oran:smo:teiv:ODUFUNCTION_PROVIDES_NRSECTORCARRIER=1",
"aSide": "urn:3gpp:dn:ManagedElement=NR01,ODUFunction=1",
- "bSide": "urn:3gpp:dn:ManagedElement=NR01,ODUFunction=1,NRSectorCarrier=1"
+ "bSide": "urn:3gpp:dn:ManagedElement=NR01,ODUFunction=1,NRSectorCarrier=1",
+ "sourceIds": [
+ "source1",
+ "source2"
+ ]
},
{
"id": "urn:oran:smo:teiv:ODUFUNCTION_PROVIDES_NRSECTORCARRIER=2",
"aSide": "urn:3gpp:dn:ManagedElement=NR01,ODUFunction=1",
- "bSide": "urn:3gpp:dn:ManagedElement=NR01,ODUFunction=1,NRSectorCarrier=2"
+ "bSide": "urn:3gpp:dn:ManagedElement=NR01,ODUFunction=1,NRSectorCarrier=2",
+ "sourceIds": [
+ "source1",
+ "source2"
+ ]
},
{
"id": "urn:oran:smo:teiv:ODUFUNCTION_PROVIDES_NRSECTORCARRIER=3",
"aSide": "urn:3gpp:dn:ManagedElement=NR01,ODUFunction=1",
- "bSide": "urn:3gpp:dn:ManagedElement=NR01,ODUFunction=1,NRSectorCarrier=3"
+ "bSide": "urn:3gpp:dn:ManagedElement=NR01,ODUFunction=1,NRSectorCarrier=3",
+ "sourceIds": [
+ "source1",
+ "source2"
+ ]
}
],
"o-ran-smo-teiv-ran:ODUFUNCTION_PROVIDES_NRCELLDU": [
{
"id": "urn:oran:smo:teiv:ODUFUNCTION_PROVIDES_NRCELLDU=1",
"aSide": "urn:3gpp:dn:ManagedElement=NR01,ODUFunction=1",
- "bSide": "urn:3gpp:dn:ManagedElement=NR01,ODUFunction=1,NRCellDU=1"
+ "bSide": "urn:3gpp:dn:ManagedElement=NR01,ODUFunction=1,NRCellDU=1",
+ "sourceIds": [
+ "source1",
+ "source2"
+ ]
},
{
"id": "urn:oran:smo:teiv:ODUFUNCTION_PROVIDES_NRCELLDU=2",
"aSide": "urn:3gpp:dn:ManagedElement=NR01,ODUFunction=1",
- "bSide": "urn:3gpp:dn:ManagedElement=NR01,ODUFunction=1,NRCellDU=2"
+ "bSide": "urn:3gpp:dn:ManagedElement=NR01,ODUFunction=1,NRCellDU=2",
+ "sourceIds": [
+ "source1",
+ "source2"
+ ]
}
],
"o-ran-smo-teiv-ran:NRCELLDU_USES_NRSECTORCARRIER": [
{
"id": "urn:oran:smo:teiv:NRCELLDU_USES_NRSECTORCARRIER=1",
"aSide": "urn:3gpp:dn:ManagedElement=NR01,ODUFunction=1,NRCellDU=1",
- "bSide": "urn:3gpp:dn:ManagedElement=NR01,ODUFunction=1,NRSectorCarrier=1"
+ "bSide": "urn:3gpp:dn:ManagedElement=NR01,ODUFunction=1,NRSectorCarrier=1",
+ "sourceIds": [
+ "source1",
+ "source2"
+ ]
},
{
"id": "urn:oran:smo:teiv:NRCELLDU_USES_NRSECTORCARRIER=2",
"aSide": "urn:3gpp:dn:ManagedElement=NR01,ODUFunction=1,NRCellDU=2",
- "bSide": "urn:3gpp:dn:ManagedElement=NR01,ODUFunction=1,NRSectorCarrier=2"
+ "bSide": "urn:3gpp:dn:ManagedElement=NR01,ODUFunction=1,NRSectorCarrier=2",
+ "sourceIds": [
+ "source1",
+ "source2"
+ ]
},
{
"id": "urn:oran:smo:teiv:NRCELLDU_USES_NRSECTORCARRIER=3",
"aSide": "urn:3gpp:dn:ManagedElement=NR01,ODUFunction=1,NRCellDU=2",
- "bSide": "urn:3gpp:dn:ManagedElement=NR01,ODUFunction=1,NRSectorCarrier=3"
+ "bSide": "urn:3gpp:dn:ManagedElement=NR01,ODUFunction=1,NRSectorCarrier=3",
+ "sourceIds": [
+ "source1",
+ "source2"
+ ]
}
],
"o-ran-smo-teiv-ran:NRSECTORCARRIER_USES_ANTENNACAPABILITY": [
{
"id": "urn:oran:smo:teiv:NRSECTORCARRIER_USES_ANTENNACAPABILITY=1",
"aSide": "urn:3gpp:dn:ManagedElement=NR01,ODUFunction=1,NRSectorCarrier=1",
- "bSide": "urn:oran:smo:teiv:AntennaCapability=1"
+ "bSide": "urn:oran:smo:teiv:AntennaCapability=1",
+ "sourceIds": [
+ "source1",
+ "source2"
+ ]
},
{
"id": "urn:oran:smo:teiv:NRSECTORCARRIER_USES_ANTENNACAPABILITY=2",
"aSide": "urn:3gpp:dn:ManagedElement=NR01,ODUFunction=1,NRSectorCarrier=2",
- "bSide": "urn:oran:smo:teiv:AntennaCapability=2"
+ "bSide": "urn:oran:smo:teiv:AntennaCapability=2",
+ "sourceIds": [
+ "source1",
+ "source2"
+ ]
},
{
"id": "urn:oran:smo:teiv:NRSECTORCARRIER_USES_ANTENNACAPABILITY=3",
"aSide": "urn:3gpp:dn:ManagedElement=NR01,ODUFunction=1,NRSectorCarrier=3",
- "bSide": "urn:oran:smo:teiv:AntennaCapability=2"
+ "bSide": "urn:oran:smo:teiv:AntennaCapability=2",
+ "sourceIds": [
+ "source1",
+ "source2"
+ ]
}
],
"o-ran-smo-teiv-rel-equipment-ran:ANTENNAMODULE_SERVES_ANTENNACAPABILITY": [
{
"id": "urn:oran:smo:teiv:ANTENNAMODULE_SERVES_ANTENNACAPABILITY=1",
"aSide": "urn:oran:smo:teiv:AntennaModule=1",
- "bSide": "urn:oran:smo:teiv:AntennaCapability=1"
+ "bSide": "urn:oran:smo:teiv:AntennaCapability=1",
+ "sourceIds": [
+ "source1",
+ "source2"
+ ]
},
{
"id": "urn:oran:smo:teiv:ANTENNAMODULE_SERVES_ANTENNACAPABILITY=2",
"aSide": "urn:oran:smo:teiv:AntennaModule=2",
- "bSide": "urn:oran:smo:teiv:AntennaCapability=2"
+ "bSide": "urn:oran:smo:teiv:AntennaCapability=2",
+ "sourceIds": [
+ "source1",
+ "source2"
+ ]
}
],
"o-ran-smo-teiv-equipment:ANTENNAMODULE_INSTALLED_AT_SITE": [
{
"id": "urn:oran:smo:teiv:ANTENNAMODULE_INSTALLED_AT_SITE=1",
"aSide": "urn:oran:smo:teiv:AntennaModule=1",
- "bSide": "urn:oran:smo:teiv:Site=1"
+ "bSide": "urn:oran:smo:teiv:Site=1",
+ "sourceIds": [
+ "source1",
+ "source2"
+ ]
},
{
"id": "urn:oran:smo:teiv:ANTENNAMODULE_INSTALLED_AT_SITE=2",
"aSide": "urn:oran:smo:teiv:AntennaModule=2",
- "bSide": "urn:oran:smo:teiv:Site=2"
+ "bSide": "urn:oran:smo:teiv:Site=2",
+ "sourceIds": [
+ "source1",
+ "source2"
+ ]
}
],
"o-ran-smo-teiv-ran:SECTOR_GROUPS_NRCELLDU": [
{
"id": "urn:oran:smo:teiv:SECTOR_GROUPS_NRCELLDU=1",
"aSide": "urn:oran:smo:teiv:Sector=1",
- "bSide": "urn:3gpp:dn:ManagedElement=NR01,ODUFunction=1,NRCellDU=1"
+ "bSide": "urn:3gpp:dn:ManagedElement=NR01,ODUFunction=1,NRCellDU=1",
+ "sourceIds": [
+ "source1",
+ "source2"
+ ]
},
{
"id": "urn:oran:smo:teiv:SECTOR_GROUPS_NRCELLDU=2",
"aSide": "urn:oran:smo:teiv:Sector=2",
- "bSide": "urn:3gpp:dn:ManagedElement=NR01,ODUFunction=1,NRCellDU=2"
+ "bSide": "urn:3gpp:dn:ManagedElement=NR01,ODUFunction=1,NRCellDU=2",
+ "sourceIds": [
+ "source1",
+ "source2"
+ ]
}
],
"o-ran-smo-teiv-rel-oam-cloud:NFDEPLOYMENT_SERVES_MANAGEDELEMENT": [
{
"id": "urn:oran:smo:teiv:NFDEPLOYMENT_SERVES_MANAGEDELEMENT=1",
"aSide": "urn:oran:smo:teiv:NFDeployment:1",
- "bSide": "urn:3gpp:dn:ManagedElement=NR01"
+ "bSide": "urn:3gpp:dn:ManagedElement=NR01",
+ "sourceIds": [
+ "source1",
+ "source2"
+ ]
}
],
"o-ran-smo-teiv-rel-oam-cloud:MANAGEDELEMENT_DEPLOYED_AS_CLOUDIFIEDNF": [
{
"id": "urn:o-ran:smo-teiv-rel-oam-cloud:1",
"aSide": "urn:3gpp:dn:ManagedElement=NR01",
- "bSide": "urn:oran:smo:teiv:CloudifiedNF:1"
+ "bSide": "urn:oran:smo:teiv:CloudifiedNF:1",
+ "sourceIds": [
+ "source1",
+ "source2"
+ ]
}
],
"o-ran-smo-teiv-cloud:CLOUDIFIEDNF_COMPRISES_NFDEPLOYMENT": [
{
"id": "urn:o-ran:smo-teiv-cloud:1",
"aSide": "urn:oran:smo:teiv:CloudifiedNF:1",
- "bSide": "urn:oran:smo:teiv:NFDeployment:1"
+ "bSide": "urn:oran:smo:teiv:NFDeployment:1",
+ "sourceIds": [
+ "source1",
+ "source2"
+ ]
}
],
"o-ran-smo-teiv-rel-cloud-ran:NFDEPLOYMENT_SERVES_ODUFUNCTION": [
{
"id": "urn:o-ran:smo-teiv-rel-cloud-ran:1",
"aSide": "urn:oran:smo:teiv:NFDeployment:1",
- "bSide": "urn:3gpp:dn:ManagedElement=NR01,ODUFunction=1"
+ "bSide": "urn:3gpp:dn:ManagedElement=NR01,ODUFunction=1",
+ "sourceIds": [
+ "source1",
+ "source2"
+ ]
}
]
}
diff --git a/docker-compose/copySqlSchemaFromPgsqlGenerator.sh b/docker-compose/copySqlSchemaFromPgsqlGenerator.sh
index 9444548..ebf3218 100644
--- a/docker-compose/copySqlSchemaFromPgsqlGenerator.sh
+++ b/docker-compose/copySqlSchemaFromPgsqlGenerator.sh
@@ -32,7 +32,8 @@ REPLACEMENT2="'topology_exposure_user'"
declare -A FILES
FILES=( ["00_init-oran-smo-teiv-data.sql"]="01_init-teiv-exposure-data.sql"
["01_init-oran-smo-teiv-model.sql"]="00_init-teiv-exposure-model.sql"
- ["02_init-oran-smo-teiv-consumer-data.sql"]="02_init-teiv-exposure-consumer-data.sql")
+ ["02_init-oran-smo-teiv-consumer-data.sql"]="02_init-teiv-exposure-consumer-data.sql"
+ ["03_init-oran-smo-teiv-groups.sql"]="03_init-teiv-exposure-groups.sql")
mkdir -p "$TARGET_DIR"
diff --git a/docker-compose/sql_scripts/00_init-teiv-exposure-model.sql b/docker-compose/sql_scripts/00_init-teiv-exposure-model.sql
index 7fbb357..dbb7b9d 100644
--- a/docker-compose/sql_scripts/00_init-teiv-exposure-model.sql
+++ b/docker-compose/sql_scripts/00_init-teiv-exposure-model.sql
@@ -29,11 +29,6 @@ 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)
-);
-
CREATE TABLE IF NOT EXISTS ties_model.hash_info (
"name" TEXT PRIMARY KEY,
"hashedValue" VARCHAR(63) NOT NULL,
@@ -53,6 +48,7 @@ CREATE TABLE IF NOT EXISTS ties_model.entity_info (
"storedAt" TEXT PRIMARY KEY,
"name" TEXT NOT NULL,
"moduleReferenceName" TEXT NOT NULL,
+ "attributeNames" jsonb DEFAULT '[]'::jsonb,
FOREIGN KEY ("moduleReferenceName") REFERENCES ties_model.module_reference ("name") ON DELETE CASCADE
);
@@ -79,9 +75,6 @@ CREATE TABLE IF NOT EXISTS ties_model.relationship_info (
FOREIGN KEY ("moduleReferenceName") REFERENCES ties_model.module_reference ("name") ON DELETE CASCADE
);
--- Update model schema exec status
-INSERT INTO ties_model.execution_status("schema", "status") VALUES ('ties_model', 'success');
-
COPY ties_model.hash_info("name", "hashedValue", "type") FROM stdin;
CD_classifiers CD_classifiers COLUMN
CD_decorators CD_decorators COLUMN
@@ -117,6 +110,8 @@ FK_o-ran-smo-teiv-rel-cloud-ran_NFDEPLOYMENT_SERVES_ODUFUNCTION_aSide_NFDeployme
FK_o-ran-smo-teiv-rel-cloud-ran_NFDEPLOYMENT_SERVES_ODUFUNCTION_bSide_ODUFunction FK_C7C12DB840FBCF4EA729B8C2BBCD8BFDE06F0F08 CONSTRAINT
FK_o-ran-smo-teiv-rel-equipment-ran_ANTENNAMODULE_SERVES_ANTENNACAPABILITY_aSide_AntennaModule FK_D80D1E6B26DF620B4DE659C600A3B7F709A41960 CONSTRAINT
FK_o-ran-smo-teiv-rel-equipment-ran_ANTENNAMODULE_SERVES_ANTENNACAPABILITY_bSide_AntennaCapability FK_7148BEED02C0617DE1DEEB6639F34A9FA9251B06 CONSTRAINT
+FK_o-ran-smo-teiv-rel-equipment-ran_ANTENNAMODULE_SERVES_NRCELLDU_aSide_AntennaModule FK_1AB1E0CC29DA2E122D43A6616EC60A3F73E68649 CONSTRAINT
+FK_o-ran-smo-teiv-rel-equipment-ran_ANTENNAMODULE_SERVES_NRCELLDU_bSide_NRCellDU FK_8605800A4923C52258A8CE3989E18A7C93D22E8C CONSTRAINT
IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-cloud_CloudifiedNF_CD_classifiers IDX_BD96130868B69147B2F87B0D15F5829690DEF454 INDEX
IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-cloud_CloudifiedNF_CD_sourceIds IDX_9EDB5C47201FC82A4565BFED9EF369D6C6529B19 INDEX
IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-cloud_NFDEPLOYMENT_DEPLOYED_ON_OCLOUDNAMESPACE_CD_classifiers IDX_1BCFD9635C4FA089EDC2E18FFEF56DBF3C5E7A52 INDEX
@@ -206,6 +201,8 @@ IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-rel-cloud-ran_NFDEPLOYMENT_SERV
IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-rel-cloud-ran_NFDEPLOYMENT_SERVES_ODUFUNCTION_CD_sourceIds IDX_5996D077978D38D0C1A951A262F1F7E1E339F052 INDEX
IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-rel-equipment-ran_ANTENNAMODULE_SERVES_ANTENNACAPABILITY_CD_classifiers IDX_DD0D676834B12CA2F7E8219310998376A08D7F5F INDEX
IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-rel-equipment-ran_ANTENNAMODULE_SERVES_ANTENNACAPABILITY_CD_sourceIds IDX_E896A9EB22A3F9F96CE75A271475316A98B629C8 INDEX
+IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-rel-equipment-ran_ANTENNAMODULE_SERVES_NRCELLDU_CD_classifiers IDX_F93AD0AE5C6940EE73D0B661A2E2E5BB10B3772C INDEX
+IDX_GIN_TRGM_OPS_ON_LIST_AS_JSONB_o-ran-smo-teiv-rel-equipment-ran_ANTENNAMODULE_SERVES_NRCELLDU_CD_sourceIds IDX_0E1BE8724BEBB21C5AE3986BE150BEC8F8CD903E INDEX
IDX_GIN_o-ran-smo-teiv-cloud_CloudifiedNF_CD_decorators IDX_GIN_o-ran-smo-teiv-cloud_CloudifiedNF_CD_decorators INDEX
IDX_GIN_o-ran-smo-teiv-cloud_NFDEPLOYMENT_DEPLOYED_ON_OCLOUDNAMESPACE_CD_decorators IDX_4055A796F223DD01411AFFB5AD97EEEAB6B2320C INDEX
IDX_GIN_o-ran-smo-teiv-cloud_NFDeployment_CD_decorators IDX_GIN_o-ran-smo-teiv-cloud_NFDeployment_CD_decorators INDEX
@@ -243,6 +240,7 @@ IDX_GIN_o-ran-smo-teiv-ran_OCUUPFunction_CD_decorators IDX_GIN_o-ran-smo-teiv-ra
IDX_GIN_o-ran-smo-teiv-ran_OCUUPFunction_REL_CD_decorators_MANAGEDELEMENT_MANAGES_OCUUPFUNCTION IDX_ADD3393C27589066C4993A3491436C6FB57A539F INDEX
IDX_GIN_o-ran-smo-teiv-ran_ODUFunction_CD_decorators IDX_GIN_o-ran-smo-teiv-ran_ODUFunction_CD_decorators INDEX
IDX_GIN_o-ran-smo-teiv-ran_ODUFunction_REL_CD_decorators_MANAGEDELEMENT_MANAGES_ODUFUNCTION IDX_0B9AC962B1E07740CE43D912B5FBC54E0B39DD24 INDEX
+IDX_GIN_o-ran-smo-teiv-ran_ODUFunction_dUpLMNId IDX_GIN_o-ran-smo-teiv-ran_ODUFunction_dUpLMNId INDEX
IDX_GIN_o-ran-smo-teiv-ran_ORUFunction_CD_decorators IDX_GIN_o-ran-smo-teiv-ran_ORUFunction_CD_decorators INDEX
IDX_GIN_o-ran-smo-teiv-ran_ORUFunction_REL_CD_decorators_MANAGEDELEMENT_MANAGES_ORUFUNCTION IDX_7B916E1753D2860DF434831CF1E9697ED9973C8F INDEX
IDX_GIN_o-ran-smo-teiv-ran_Sector_CD_decorators IDX_GIN_o-ran-smo-teiv-ran_Sector_CD_decorators INDEX
@@ -251,6 +249,7 @@ IDX_GIN_o-ran-smo-teiv-rel-cloud-ran_NFDEPLOYMENT_SERVES_OCUCPFUNCTION_CD_decora
IDX_GIN_o-ran-smo-teiv-rel-cloud-ran_NFDEPLOYMENT_SERVES_OCUUPFUNCTION_CD_decorators IDX_3AB53A0DB6DC4B4C8BB6194D6D487EBDC3D0E88F INDEX
IDX_GIN_o-ran-smo-teiv-rel-cloud-ran_NFDEPLOYMENT_SERVES_ODUFUNCTION_CD_decorators IDX_5BAC6D2F05A63FDE27F082E8C8F4D766C145E835 INDEX
IDX_GIN_o-ran-smo-teiv-rel-equipment-ran_ANTENNAMODULE_SERVES_ANTENNACAPABILITY_CD_decorators IDX_7BF09D0227840279556AD27ACECB068705893D28 INDEX
+IDX_GIN_o-ran-smo-teiv-rel-equipment-ran_ANTENNAMODULE_SERVES_NRCELLDU_CD_decorators IDX_319FDFF6C9E6BC1D922F0A2AFEAAC294E520F753 INDEX
PK_o-ran-smo-teiv-cloud_CloudifiedNF_id PK_o-ran-smo-teiv-cloud_CloudifiedNF_id CONSTRAINT
PK_o-ran-smo-teiv-cloud_NFDEPLOYMENT_DEPLOYED_ON_OCLOUDNAMESPACE_id PK_E4FDDE2DC433209F933C7F53C9F72C1D2EB04BC6 CONSTRAINT
PK_o-ran-smo-teiv-cloud_NFDeployment_id PK_o-ran-smo-teiv-cloud_NFDeployment_id CONSTRAINT
@@ -276,6 +275,7 @@ PK_o-ran-smo-teiv-rel-cloud-ran_NFDEPLOYMENT_SERVES_OCUCPFUNCTION_id PK_2D854968
PK_o-ran-smo-teiv-rel-cloud-ran_NFDEPLOYMENT_SERVES_OCUUPFUNCTION_id PK_E551D02D14B3C04A565DC73A386BEB29627D3C08 CONSTRAINT
PK_o-ran-smo-teiv-rel-cloud-ran_NFDEPLOYMENT_SERVES_ODUFUNCTION_id PK_A10CB552A0F126991DD325EC84DBFAC6F2BBE1A3 CONSTRAINT
PK_o-ran-smo-teiv-rel-equipment-ran_ANTENNAMODULE_SERVES_ANTENNACAPABILITY_id PK_63E61CB6802F21FE7A04A80A095F6AF8ABF067CE CONSTRAINT
+PK_o-ran-smo-teiv-rel-equipment-ran_ANTENNAMODULE_SERVES_NRCELLDU_id PK_F41873285F3BD831F63C6041B4356A063403406D CONSTRAINT
REL_CD_classifiers_ANTENNAMODULE_INSTALLED_AT_SITE REL_CD_classifiers_ANTENNAMODULE_INSTALLED_AT_SITE COLUMN
REL_CD_classifiers_CLOUDIFIEDNF_COMPRISES_NFDEPLOYMENT REL_CD_classifiers_CLOUDIFIEDNF_COMPRISES_NFDEPLOYMENT COLUMN
REL_CD_classifiers_MANAGEDELEMENT_DEPLOYED_AS_CLOUDIFIEDNF REL_CD_classifiers_MANAGEDELEMENT_DEPLOYED_AS_CLOUDIFIEDNF COLUMN
@@ -355,6 +355,23 @@ REL_ID_ODUFUNCTION_PROVIDES_NRCELLDU REL_ID_ODUFUNCTION_PROVIDES_NRCELLDU COLUMN
REL_ID_ODUFUNCTION_PROVIDES_NRSECTORCARRIER REL_ID_ODUFUNCTION_PROVIDES_NRSECTORCARRIER COLUMN
REL_ID_SECTOR_GROUPS_ANTENNAMODULE REL_ID_SECTOR_GROUPS_ANTENNAMODULE COLUMN
REL_ID_SECTOR_GROUPS_NRCELLDU REL_ID_SECTOR_GROUPS_NRCELLDU COLUMN
+REL_metadata_ANTENNAMODULE_INSTALLED_AT_SITE REL_metadata_ANTENNAMODULE_INSTALLED_AT_SITE COLUMN
+REL_metadata_CLOUDIFIEDNF_COMPRISES_NFDEPLOYMENT REL_metadata_CLOUDIFIEDNF_COMPRISES_NFDEPLOYMENT COLUMN
+REL_metadata_MANAGEDELEMENT_DEPLOYED_AS_CLOUDIFIEDNF REL_metadata_MANAGEDELEMENT_DEPLOYED_AS_CLOUDIFIEDNF COLUMN
+REL_metadata_MANAGEDELEMENT_MANAGES_NEARRTRICFUNCTION REL_metadata_MANAGEDELEMENT_MANAGES_NEARRTRICFUNCTION COLUMN
+REL_metadata_MANAGEDELEMENT_MANAGES_OCUCPFUNCTION REL_metadata_MANAGEDELEMENT_MANAGES_OCUCPFUNCTION COLUMN
+REL_metadata_MANAGEDELEMENT_MANAGES_OCUUPFUNCTION REL_metadata_MANAGEDELEMENT_MANAGES_OCUUPFUNCTION COLUMN
+REL_metadata_MANAGEDELEMENT_MANAGES_ODUFUNCTION REL_metadata_MANAGEDELEMENT_MANAGES_ODUFUNCTION COLUMN
+REL_metadata_MANAGEDELEMENT_MANAGES_ORUFUNCTION REL_metadata_MANAGEDELEMENT_MANAGES_ORUFUNCTION COLUMN
+REL_metadata_NFDEPLOYMENT_SERVES_MANAGEDELEMENT REL_metadata_NFDEPLOYMENT_SERVES_MANAGEDELEMENT COLUMN
+REL_metadata_NRCELLDU_USES_NRSECTORCARRIER REL_metadata_NRCELLDU_USES_NRSECTORCARRIER COLUMN
+REL_metadata_NRSECTORCARRIER_USES_ANTENNACAPABILITY REL_metadata_NRSECTORCARRIER_USES_ANTENNACAPABILITY COLUMN
+REL_metadata_OCLOUDNAMESPACE_DEPLOYED_ON_NODECLUSTER REL_metadata_OCLOUDNAMESPACE_DEPLOYED_ON_NODECLUSTER COLUMN
+REL_metadata_OCUCPFUNCTION_PROVIDES_NRCELLCU REL_metadata_OCUCPFUNCTION_PROVIDES_NRCELLCU COLUMN
+REL_metadata_ODUFUNCTION_PROVIDES_NRCELLDU REL_metadata_ODUFUNCTION_PROVIDES_NRCELLDU COLUMN
+REL_metadata_ODUFUNCTION_PROVIDES_NRSECTORCARRIER REL_metadata_ODUFUNCTION_PROVIDES_NRSECTORCARRIER COLUMN
+REL_metadata_SECTOR_GROUPS_ANTENNAMODULE REL_metadata_SECTOR_GROUPS_ANTENNAMODULE COLUMN
+REL_metadata_SECTOR_GROUPS_NRCELLDU REL_metadata_SECTOR_GROUPS_NRCELLDU COLUMN
UNIQUE_o-ran-smo-teiv-cloud_NFDeployment_REL_ID_CLOUDIFIEDNF_COMPRISES_NFDEPLOYMENT UNIQUE_A5A8418B6BE911F281E6E2AA640D7D9F777471DC CONSTRAINT
UNIQUE_o-ran-smo-teiv-cloud_NFDeployment_REL_ID_NFDEPLOYMENT_SERVES_MANAGEDELEMENT UNIQUE_8AD46969905BEEB89F63D3F37FD82B14F34FDCBC CONSTRAINT
UNIQUE_o-ran-smo-teiv-cloud_OCloudNamespace_REL_ID_OCLOUDNAMESPACE_DEPLOYED_ON_NODECLUSTER UNIQUE_C4DE73BD7AA3DBFA2D32E577D4E0A534A7184AB0 CONSTRAINT
@@ -382,6 +399,7 @@ arfcnUL arfcnUL COLUMN
azimuth azimuth COLUMN
bSChannelBwDL bSChannelBwDL COLUMN
bSide_AntennaCapability bSide_AntennaCapability COLUMN
+bSide_NRCellDU bSide_NRCellDU COLUMN
bSide_NearRTRICFunction bSide_NearRTRICFunction COLUMN
bSide_OCUCPFunction bSide_OCUCPFunction COLUMN
bSide_OCUUPFunction bSide_OCUUPFunction COLUMN
@@ -389,6 +407,7 @@ bSide_OCloudNamespace bSide_OCloudNamespace COLUMN
bSide_OCloudSite bSide_OCloudSite COLUMN
bSide_ODUFunction bSide_ODUFunction COLUMN
cellLocalId cellLocalId COLUMN
+dUpLMNId dUpLMNId COLUMN
eUtranFqBands eUtranFqBands COLUMN
electricalAntennaTilt electricalAntennaTilt COLUMN
frequencyDL frequencyDL COLUMN
@@ -399,9 +418,11 @@ gNBId gNBId COLUMN
gNBIdLength gNBIdLength COLUMN
geo-location geo-location COLUMN
geranFqBands geranFqBands COLUMN
+horizontalBeamWidth horizontalBeamWidth COLUMN
id id COLUMN
mechanicalAntennaBearing mechanicalAntennaBearing COLUMN
mechanicalAntennaTilt mechanicalAntennaTilt COLUMN
+metadata metadata COLUMN
nCI nCI COLUMN
nRFqBands nRFqBands COLUMN
nRPCI nRPCI COLUMN
@@ -433,6 +454,7 @@ o-ran-smo-teiv-rel-cloud-ran_NFDEPLOYMENT_SERVES_OCUCPFUNCTION o-ran-smo-teiv-re
o-ran-smo-teiv-rel-cloud-ran_NFDEPLOYMENT_SERVES_OCUUPFUNCTION o-ran-smo-teiv-rel-cloud-ran_NFDEPLOYMENT_SERVES_OCUUPFUNCTION TABLE
o-ran-smo-teiv-rel-cloud-ran_NFDEPLOYMENT_SERVES_ODUFUNCTION o-ran-smo-teiv-rel-cloud-ran_NFDEPLOYMENT_SERVES_ODUFUNCTION TABLE
o-ran-smo-teiv-rel-equipment-ran_ANTENNAMODULE_SERVES_ANTENNACAPABILITY CFC235E0404703D1E4454647DF8AAE2C193DB402 TABLE
+o-ran-smo-teiv-rel-equipment-ran_ANTENNAMODULE_SERVES_NRCELLDU o-ran-smo-teiv-rel-equipment-ran_ANTENNAMODULE_SERVES_NRCELLDU TABLE
oruId oruId COLUMN
pLMNId pLMNId COLUMN
pLMNIdList pLMNIdList COLUMN
@@ -440,6 +462,7 @@ plmnId plmnId COLUMN
positionWithinSector positionWithinSector COLUMN
sectorId sectorId COLUMN
totalTilt totalTilt COLUMN
+verticalBeamWidth verticalBeamWidth COLUMN
\.
COPY ties_model.module_reference("name", "namespace", "domain", "includedModules", "revision", "content") FROM stdin;
@@ -448,42 +471,43 @@ _3gpp-common-yang-types urn:3gpp:sa5:_3gpp-common-yang-types \N [] 2022-07-26 bW
ietf-geo-location urn:ietf:params:xml:ns:yang:ietf-geo-location \N [] 2022-02-11 bW9kdWxlIGlldGYtZ2VvLWxvY2F0aW9uIHsKICB5YW5nLXZlcnNpb24gMS4xOwogIG5hbWVzcGFjZSAidXJuOmlldGY6cGFyYW1zOnhtbDpuczp5YW5nOmlldGYtZ2VvLWxvY2F0aW9uIjsKICBwcmVmaXggZ2VvOwogIGltcG9ydCBpZXRmLXlhbmctdHlwZXMgewogICAgcHJlZml4IHlhbmc7CiAgICByZWZlcmVuY2UgIlJGQyA2OTkxOiBDb21tb24gWUFORyBEYXRhIFR5cGVzIjsKICB9CgogIG9yZ2FuaXphdGlvbgogICAgIklFVEYgTkVUTU9EIFdvcmtpbmcgR3JvdXAgKE5FVE1PRCkiOwogIGNvbnRhY3QKICAgIldHIFdlYjogICA8aHR0cHM6Ly9kYXRhdHJhY2tlci5pZXRmLm9yZy93Zy9uZXRtb2QvPgogICAgV0cgTGlzdDogIDxtYWlsdG86bmV0bW9kQGlldGYub3JnPgoKICAgIEVkaXRvcjogICBDaHJpc3RpYW4gSG9wcHMKICAgICAgICAgICAgICA8bWFpbHRvOmNob3Bwc0BjaG9wcHMub3JnPiI7CgogIGRlc2NyaXB0aW9uCiAgICAiVGhpcyBtb2R1bGUgZGVmaW5lcyBhIGdyb3VwaW5nIG9mIGEgY29udGFpbmVyIG9iamVjdCBmb3IKICAgICBzcGVjaWZ5aW5nIGEgbG9jYXRpb24gb24gb3IgYXJvdW5kIGFuIGFzdHJvbm9taWNhbCBvYmplY3QgKGUuZy4sCiAgICAgJ2VhcnRoJykuCgogICAgIFRoZSBrZXkgd29yZHMgJ01VU1QnLCAnTVVTVCBOT1QnLCAnUkVRVUlSRUQnLCAnU0hBTEwnLCAnU0hBTEwKICAgICBOT1QnLCAnU0hPVUxEJywgJ1NIT1VMRCBOT1QnLCAnUkVDT01NRU5ERUQnLCAnTk9UIFJFQ09NTUVOREVEJywKICAgICAnTUFZJywgYW5kICdPUFRJT05BTCcgaW4gdGhpcyBkb2N1bWVudCBhcmUgdG8gYmUgaW50ZXJwcmV0ZWQgYXMKICAgICBkZXNjcmliZWQgaW4gQkNQIDE0IChSRkMgMjExOSkgKFJGQyA4MTc0KSB3aGVuLCBhbmQgb25seSB3aGVuLAogICAgIHRoZXkgYXBwZWFyIGluIGFsbCBjYXBpdGFscywgYXMgc2hvd24gaGVyZS4KCiAgICAgQ29weXJpZ2h0IChjKSAyMDIyIElFVEYgVHJ1c3QgYW5kIHRoZSBwZXJzb25zIGlkZW50aWZpZWQgYXMKICAgICBhdXRob3JzIG9mIHRoZSBjb2RlLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KCiAgICAgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3JtcywKICAgICB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLCBpcyBwZXJtaXR0ZWQgcHVyc3VhbnQgdG8sCiAgICAgYW5kIHN1YmplY3QgdG8gdGhlIGxpY2Vuc2UgdGVybXMgY29udGFpbmVkIGluLCB0aGUKICAgICBSZXZpc2VkIEJTRCBMaWNlbnNlIHNldCBmb3J0aCBpbiBTZWN0aW9uIDQuYyBvZiB0aGUKICAgICBJRVRGIFRydXN0J3MgTGVnYWwgUHJvdmlzaW9ucyBSZWxhdGluZyB0byBJRVRGIERvY3VtZW50cwogICAgIChodHRwczovL3RydXN0ZWUuaWV0Zi5vcmcvbGljZW5zZS1pbmZvKS4KCiAgICAgVGhpcyB2ZXJzaW9uIG9mIHRoaXMgWUFORyBtb2R1bGUgaXMgcGFydCBvZiBSRkMgOTE3OQogICAgIChodHRwczovL3d3dy5yZmMtZWRpdG9yLm9yZy9pbmZvL3JmYzkxNzkpOyBzZWUgdGhlIFJGQyBpdHNlbGYKICAgICBmb3IgZnVsbCBsZWdhbCBub3RpY2VzLiI7CgogIHJldmlzaW9uIDIwMjItMDItMTEgewogICAgZGVzY3JpcHRpb24KICAgICAgIkluaXRpYWwgUmV2aXNpb24iOwogICAgcmVmZXJlbmNlCiAgICAgICJSRkMgOTE3OTogQSBZQU5HIEdyb3VwaW5nIGZvciBHZW9ncmFwaGljIExvY2F0aW9ucyI7CiAgfQoKICBmZWF0dXJlIGFsdGVybmF0ZS1zeXN0ZW1zIHsKICAgIGRlc2NyaXB0aW9uCiAgICAgICJUaGlzIGZlYXR1cmUgbWVhbnMgdGhlIGRldmljZSBzdXBwb3J0cyBzcGVjaWZ5aW5nIGxvY2F0aW9ucwogICAgICAgdXNpbmcgYWx0ZXJuYXRlIHN5c3RlbXMgZm9yIHJlZmVyZW5jZSBmcmFtZXMuIjsKICB9CgogIGdyb3VwaW5nIGdlby1sb2NhdGlvbiB7CiAgICBkZXNjcmlwdGlvbgogICAgICAiR3JvdXBpbmcgdG8gaWRlbnRpZnkgYSBsb2NhdGlvbiBvbiBhbiBhc3Ryb25vbWljYWwgb2JqZWN0LiI7CgogICAgY29udGFpbmVyIGdlby1sb2NhdGlvbiB7CiAgICAgIGRlc2NyaXB0aW9uCiAgICAgICAgIkEgbG9jYXRpb24gb24gYW4gYXN0cm9ub21pY2FsIGJvZHkgKGUuZy4sICdlYXJ0aCcpCiAgICAgICAgIHNvbWV3aGVyZSBpbiBhIHVuaXZlcnNlLiI7CgogICAgICBjb250YWluZXIgcmVmZXJlbmNlLWZyYW1lIHsKICAgICAgICBkZXNjcmlwdGlvbgogICAgICAgICAgIlRoZSBGcmFtZSBvZiBSZWZlcmVuY2UgZm9yIHRoZSBsb2NhdGlvbiB2YWx1ZXMuIjsKCiAgICAgICAgbGVhZiBhbHRlcm5hdGUtc3lzdGVtIHsKICAgICAgICAgIGlmLWZlYXR1cmUgImFsdGVybmF0ZS1zeXN0ZW1zIjsKICAgICAgICAgIHR5cGUgc3RyaW5nOwogICAgICAgICAgZGVzY3JpcHRpb24KICAgICAgICAgICAgIlRoZSBzeXN0ZW0gaW4gd2hpY2ggdGhlIGFzdHJvbm9taWNhbCBib2R5IGFuZAogICAgICAgICAgICAgZ2VvZGV0aWMtZGF0dW0gaXMgZGVmaW5lZC4gIE5vcm1hbGx5LCB0aGlzIHZhbHVlIGlzIG5vdAogICAgICAgICAgICAgcHJlc2VudCBhbmQgdGhlIHN5c3RlbSBpcyB0aGUgbmF0dXJhbCB1bml2ZXJzZTsgaG93ZXZlciwKICAgICAgICAgICAgIHdoZW4gcHJlc2VudCwgdGhpcyB2YWx1ZSBhbGxvd3MgZm9yIHNwZWNpZnlpbmcgYWx0ZXJuYXRlCiAgICAgICAgICAgICBzeXN0ZW1zIChlLmcuLCB2aXJ0dWFsIHJlYWxpdGllcykuICBBbiBhbHRlcm5hdGUtc3lzdGVtCiAgICAgICAgICAgICBtb2RpZmllcyB0aGUgZGVmaW5pdGlvbiAoYnV0IG5vdCB0aGUgdHlwZSkgb2YgdGhlIG90aGVyCiAgICAgICAgICAgICB2YWx1ZXMgaW4gdGhlIHJlZmVyZW5jZSBmcmFtZS4iOwogICAgICAgIH0KICAgICAgICBsZWFmIGFzdHJvbm9taWNhbC1ib2R5IHsKICAgICAgICAgIHR5cGUgc3RyaW5nIHsKICAgICAgICAgICAgcGF0dGVybiAnWyAtQFxbLVxeXy1+XSonOwogICAgICAgICAgfQogICAgICAgICAgZGVmYXVsdCAiZWFydGgiOwogICAgICAgICAgZGVzY3JpcHRpb24KICAgICAgICAgICAgIkFuIGFzdHJvbm9taWNhbCBib2R5IGFzIG5hbWVkIGJ5IHRoZSBJbnRlcm5hdGlvbmFsCiAgICAgICAgICAgICBBc3Ryb25vbWljYWwgVW5pb24gKElBVSkgb3IgYWNjb3JkaW5nIHRvIHRoZSBhbHRlcm5hdGUKICAgICAgICAgICAgIHN5c3RlbSBpZiBzcGVjaWZpZWQuICBFeGFtcGxlcyBpbmNsdWRlICdzdW4nIChvdXIgc3RhciksCiAgICAgICAgICAgICAnZWFydGgnIChvdXIgcGxhbmV0KSwgJ21vb24nIChvdXIgbW9vbiksICdlbmNlbGFkdXMnIChhCiAgICAgICAgICAgICBtb29uIG9mIFNhdHVybiksICdjZXJlcycgKGFuIGFzdGVyb2lkKSwgYW5kCiAgICAgICAgICAgICAnNjdwL2NodXJ5dW1vdi1nZXJhc2ltZW5rbyAoYSBjb21ldCkuICBUaGUgQVNDSUkgdmFsdWUKICAgICAgICAgICAgIFNIT1VMRCBoYXZlIHVwcGVyY2FzZSBjb252ZXJ0ZWQgdG8gbG93ZXJjYXNlIGFuZCBub3QKICAgICAgICAgICAgIGluY2x1ZGUgY29udHJvbCBjaGFyYWN0ZXJzIChpLmUuLCB2YWx1ZXMgMzIuLjY0LCBhbmQKICAgICAgICAgICAgIDkxLi4xMjYpLiAgQW55IHByZWNlZGluZyAndGhlJyBpbiB0aGUgbmFtZSBTSE9VTEQgTk9UIGJlCiAgICAgICAgICAgICBpbmNsdWRlZC4iOwogICAgICAgICAgcmVmZXJlbmNlCiAgICAgICAgICAgICJodHRwczovL3d3dy5pYXUub3JnLyI7CiAgICAgICAgfQogICAgICAgIGNvbnRhaW5lciBnZW9kZXRpYy1zeXN0ZW0gewogICAgICAgICAgZGVzY3JpcHRpb24KICAgICAgICAgICAgIlRoZSBnZW9kZXRpYyBzeXN0ZW0gb2YgdGhlIGxvY2F0aW9uIGRhdGEuIjsKICAgICAgICAgIGxlYWYgZ2VvZGV0aWMtZGF0dW0gewogICAgICAgICAgICB0eXBlIHN0cmluZyB7CiAgICAgICAgICAgICAgcGF0dGVybiAnWyAtQFxbLVxeXy1+XSonOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGRlc2NyaXB0aW9uCiAgICAgICAgICAgICAgIkEgZ2VvZGV0aWMtZGF0dW0gZGVmaW5pbmcgdGhlIG1lYW5pbmcgb2YgbGF0aXR1ZGUsCiAgICAgICAgICAgICAgIGxvbmdpdHVkZSwgYW5kIGhlaWdodC4gIFRoZSBkZWZhdWx0IHdoZW4gdGhlCiAgICAgICAgICAgICAgIGFzdHJvbm9taWNhbCBib2R5IGlzICdlYXJ0aCcgaXMgJ3dncy04NCcsIHdoaWNoIGlzCiAgICAgICAgICAgICAgIHVzZWQgYnkgdGhlIEdsb2JhbCBQb3NpdGlvbmluZyBTeXN0ZW0gKEdQUykuICBUaGUKICAgICAgICAgICAgICAgQVNDSUkgdmFsdWUgU0hPVUxEIGhhdmUgdXBwZXJjYXNlIGNvbnZlcnRlZCB0bwogICAgICAgICAgICAgICBsb3dlcmNhc2UgYW5kIG5vdCBpbmNsdWRlIGNvbnRyb2wgY2hhcmFjdGVycwogICAgICAgICAgICAgICAoaS5lLiwgdmFsdWVzIDMyLi42NCwgYW5kIDkxLi4xMjYpLiAgVGhlIElBTkEgcmVnaXN0cnkKICAgICAgICAgICAgICAgZnVydGhlciByZXN0cmljdHMgdGhlIHZhbHVlIGJ5IGNvbnZlcnRpbmcgYWxsIHNwYWNlcwogICAgICAgICAgICAgICAoJyAnKSB0byBkYXNoZXMgKCctJykuCiAgICAgICAgICAgICAgIFRoZSBzcGVjaWZpY2F0aW9uIGZvciB0aGUgZ2VvZGV0aWMtZGF0dW0gaW5kaWNhdGVzCiAgICAgICAgICAgICAgIGhvdyBhY2N1cmF0ZWx5IGl0IG1vZGVscyB0aGUgYXN0cm9ub21pY2FsIGJvZHkgaW4KICAgICAgICAgICAgICAgcXVlc3Rpb24sIGJvdGggZm9yIHRoZSAnaG9yaXpvbnRhbCcKICAgICAgICAgICAgICAgbGF0aXR1ZGUvbG9uZ2l0dWRlIGNvb3JkaW5hdGVzIGFuZCBmb3IgaGVpZ2h0CiAgICAgICAgICAgICAgIGNvb3JkaW5hdGVzLiI7CiAgICAgICAgICAgIHJlZmVyZW5jZQogICAgICAgICAgICAgICJSRkMgOTE3OTogQSBZQU5HIEdyb3VwaW5nIGZvciBHZW9ncmFwaGljIExvY2F0aW9ucywKICAgICAgICAgICAgICAgU2VjdGlvbiA2LjEiOwogICAgICAgICAgfQogICAgICAgICAgbGVhZiBjb29yZC1hY2N1cmFjeSB7CiAgICAgICAgICAgIHR5cGUgZGVjaW1hbDY0IHsKICAgICAgICAgICAgICBmcmFjdGlvbi1kaWdpdHMgNjsKICAgICAgICAgICAgfQogICAgICAgICAgICBkZXNjcmlwdGlvbgogICAgICAgICAgICAgICJUaGUgYWNjdXJhY3kgb2YgdGhlIGxhdGl0dWRlL2xvbmdpdHVkZSBwYWlyIGZvcgogICAgICAgICAgICAgICBlbGxpcHNvaWRhbCBjb29yZGluYXRlcywgb3IgdGhlIFgsIFksIGFuZCBaIGNvbXBvbmVudHMKICAgICAgICAgICAgICAgZm9yIENhcnRlc2lhbiBjb29yZGluYXRlcy4gIFdoZW4gY29vcmQtYWNjdXJhY3kgaXMKICAgICAgICAgICAgICAgc3BlY2lmaWVkLCBpdCBpbmRpY2F0ZXMgaG93IHByZWNpc2VseSB0aGUgY29vcmRpbmF0ZXMKICAgICAgICAgICAgICAgaW4gdGhlIGFzc29jaWF0ZWQgbGlzdCBvZiBsb2NhdGlvbnMgaGF2ZSBiZWVuCiAgICAgICAgICAgICAgIGRldGVybWluZWQgd2l0aCByZXNwZWN0IHRvIHRoZSBjb29yZGluYXRlIHN5c3RlbQogICAgICAgICAgICAgICBkZWZpbmVkIGJ5IHRoZSBnZW9kZXRpYy1kYXR1bS4gIEZvciBleGFtcGxlLCB0aGVyZQogICAgICAgICAgICAgICBtaWdodCBiZSB1bmNlcnRhaW50eSBkdWUgdG8gbWVhc3VyZW1lbnQgZXJyb3IgaWYgYW4KICAgICAgICAgICAgICAgZXhwZXJpbWVudGFsIG1lYXN1cmVtZW50IHdhcyBtYWRlIHRvIGRldGVybWluZSBlYWNoCiAgICAgICAgICAgICAgIGxvY2F0aW9uLiI7CiAgICAgICAgICB9CiAgICAgICAgICBsZWFmIGhlaWdodC1hY2N1cmFjeSB7CiAgICAgICAgICAgIHR5cGUgZGVjaW1hbDY0IHsKICAgICAgICAgICAgICBmcmFjdGlvbi1kaWdpdHMgNjsKICAgICAgICAgICAgfQogICAgICAgICAgICB1bml0cyAibWV0ZXJzIjsKICAgICAgICAgICAgZGVzY3JpcHRpb24KICAgICAgICAgICAgICAiVGhlIGFjY3VyYWN5IG9mIHRoZSBoZWlnaHQgdmFsdWUgZm9yIGVsbGlwc29pZGFsCiAgICAgICAgICAgICAgIGNvb3JkaW5hdGVzOyB0aGlzIHZhbHVlIGlzIG5vdCB1c2VkIHdpdGggQ2FydGVzaWFuCiAgICAgICAgICAgICAgIGNvb3JkaW5hdGVzLiAgV2hlbiBoZWlnaHQtYWNjdXJhY3kgaXMgc3BlY2lmaWVkLCBpdAogICAgICAgICAgICAgICBpbmRpY2F0ZXMgaG93IHByZWNpc2VseSB0aGUgaGVpZ2h0cyBpbiB0aGUKICAgICAgICAgICAgICAgYXNzb2NpYXRlZCBsaXN0IG9mIGxvY2F0aW9ucyBoYXZlIGJlZW4gZGV0ZXJtaW5lZAogICAgICAgICAgICAgICB3aXRoIHJlc3BlY3QgdG8gdGhlIGNvb3JkaW5hdGUgc3lzdGVtIGRlZmluZWQgYnkgdGhlCiAgICAgICAgICAgICAgIGdlb2RldGljLWRhdHVtLiAgRm9yIGV4YW1wbGUsIHRoZXJlIG1pZ2h0IGJlCiAgICAgICAgICAgICAgIHVuY2VydGFpbnR5IGR1ZSB0byBtZWFzdXJlbWVudCBlcnJvciBpZiBhbgogICAgICAgICAgICAgICBleHBlcmltZW50YWwgbWVhc3VyZW1lbnQgd2FzIG1hZGUgdG8gZGV0ZXJtaW5lIGVhY2gKICAgICAgICAgICAgICAgbG9jYXRpb24uIjsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0KICAgICAgY2hvaWNlIGxvY2F0aW9uIHsKICAgICAgICBkZXNjcmlwdGlvbgogICAgICAgICAgIlRoZSBsb2NhdGlvbiBkYXRhIGVpdGhlciBpbiBsYXRpdHVkZS9sb25naXR1ZGUgb3IKICAgICAgICAgICBDYXJ0ZXNpYW4gdmFsdWVzIjsKICAgICAgICBjYXNlIGVsbGlwc29pZCB7CiAgICAgICAgICBsZWFmIGxhdGl0dWRlIHsKICAgICAgICAgICAgdHlwZSBkZWNpbWFsNjQgewogICAgICAgICAgICAgIGZyYWN0aW9uLWRpZ2l0cyAxNjsKICAgICAgICAgICAgfQogICAgICAgICAgICB1bml0cyAiZGVjaW1hbCBkZWdyZWVzIjsKICAgICAgICAgICAgZGVzY3JpcHRpb24KICAgICAgICAgICAgICAiVGhlIGxhdGl0dWRlIHZhbHVlIG9uIHRoZSBhc3Ryb25vbWljYWwgYm9keS4gIFRoZQogICAgICAgICAgICAgICBkZWZpbml0aW9uIGFuZCBwcmVjaXNpb24gb2YgdGhpcyBtZWFzdXJlbWVudCBpcwogICAgICAgICAgICAgICBpbmRpY2F0ZWQgYnkgdGhlIHJlZmVyZW5jZS1mcmFtZS4iOwogICAgICAgICAgfQogICAgICAgICAgbGVhZiBsb25naXR1ZGUgewogICAgICAgICAgICB0eXBlIGRlY2ltYWw2NCB7CiAgICAgICAgICAgICAgZnJhY3Rpb24tZGlnaXRzIDE2OwogICAgICAgICAgICB9CiAgICAgICAgICAgIHVuaXRzICJkZWNpbWFsIGRlZ3JlZXMiOwogICAgICAgICAgICBkZXNjcmlwdGlvbgogICAgICAgICAgICAgICJUaGUgbG9uZ2l0dWRlIHZhbHVlIG9uIHRoZSBhc3Ryb25vbWljYWwgYm9keS4gIFRoZQogICAgICAgICAgICAgICBkZWZpbml0aW9uIGFuZCBwcmVjaXNpb24gb2YgdGhpcyBtZWFzdXJlbWVudCBpcwogICAgICAgICAgICAgICBpbmRpY2F0ZWQgYnkgdGhlIHJlZmVyZW5jZS1mcmFtZS4iOwogICAgICAgICAgfQogICAgICAgICAgbGVhZiBoZWlnaHQgewogICAgICAgICAgICB0eXBlIGRlY2ltYWw2NCB7CiAgICAgICAgICAgICAgZnJhY3Rpb24tZGlnaXRzIDY7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdW5pdHMgIm1ldGVycyI7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uCiAgICAgICAgICAgICAgIkhlaWdodCBmcm9tIGEgcmVmZXJlbmNlIDAgdmFsdWUuICBUaGUgcHJlY2lzaW9uIGFuZAogICAgICAgICAgICAgICAnMCcgdmFsdWUgaXMgZGVmaW5lZCBieSB0aGUgcmVmZXJlbmNlLWZyYW1lLiI7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGNhc2UgY2FydGVzaWFuIHsKICAgICAgICAgIGxlYWYgeCB7CiAgICAgICAgICAgIHR5cGUgZGVjaW1hbDY0IHsKICAgICAgICAgICAgICBmcmFjdGlvbi1kaWdpdHMgNjsKICAgICAgICAgICAgfQogICAgICAgICAgICB1bml0cyAibWV0ZXJzIjsKICAgICAgICAgICAgZGVzY3JpcHRpb24KICAgICAgICAgICAgICAiVGhlIFggdmFsdWUgYXMgZGVmaW5lZCBieSB0aGUgcmVmZXJlbmNlLWZyYW1lLiI7CiAgICAgICAgICB9CiAgICAgICAgICBsZWFmIHkgewogICAgICAgICAgICB0eXBlIGRlY2ltYWw2NCB7CiAgICAgICAgICAgICAgZnJhY3Rpb24tZGlnaXRzIDY7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdW5pdHMgIm1ldGVycyI7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uCiAgICAgICAgICAgICAgIlRoZSBZIHZhbHVlIGFzIGRlZmluZWQgYnkgdGhlIHJlZmVyZW5jZS1mcmFtZS4iOwogICAgICAgICAgfQogICAgICAgICAgbGVhZiB6IHsKICAgICAgICAgICAgdHlwZSBkZWNpbWFsNjQgewogICAgICAgICAgICAgIGZyYWN0aW9uLWRpZ2l0cyA2OwogICAgICAgICAgICB9CiAgICAgICAgICAgIHVuaXRzICJtZXRlcnMiOwogICAgICAgICAgICBkZXNjcmlwdGlvbgogICAgICAgICAgICAgICJUaGUgWiB2YWx1ZSBhcyBkZWZpbmVkIGJ5IHRoZSByZWZlcmVuY2UtZnJhbWUuIjsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0KICAgICAgY29udGFpbmVyIHZlbG9jaXR5IHsKICAgICAgICBkZXNjcmlwdGlvbgogICAgICAgICAgIklmIHRoZSBvYmplY3QgaXMgaW4gbW90aW9uLCB0aGUgdmVsb2NpdHkgdmVjdG9yIGRlc2NyaWJlcwogICAgICAgICAgIHRoaXMgbW90aW9uIGF0IHRoZSB0aW1lIGdpdmVuIGJ5IHRoZSB0aW1lc3RhbXAuICBGb3IgYQogICAgICAgICAgIGZvcm11bGEgdG8gY29udmVydCB0aGVzZSB2YWx1ZXMgdG8gc3BlZWQgYW5kIGhlYWRpbmcsIHNlZQogICAgICAgICAgIFJGQyA5MTc5LiI7CiAgICAgICAgcmVmZXJlbmNlCiAgICAgICAgICAiUkZDIDkxNzk6IEEgWUFORyBHcm91cGluZyBmb3IgR2VvZ3JhcGhpYyBMb2NhdGlvbnMiOwoKICAgICAgICBsZWFmIHYtbm9ydGggewogICAgICAgICAgdHlwZSBkZWNpbWFsNjQgewogICAgICAgICAgICBmcmFjdGlvbi1kaWdpdHMgMTI7CiAgICAgICAgICB9CiAgICAgICAgICB1bml0cyAibWV0ZXJzIHBlciBzZWNvbmQiOwogICAgICAgICAgZGVzY3JpcHRpb24KICAgICAgICAgICAgInYtbm9ydGggaXMgdGhlIHJhdGUgb2YgY2hhbmdlIChpLmUuLCBzcGVlZCkgdG93YXJkcwogICAgICAgICAgICAgdHJ1ZSBub3J0aCBhcyBkZWZpbmVkIGJ5IHRoZSBnZW9kZXRpYy1zeXN0ZW0uIjsKICAgICAgICB9CgogICAgICAgIGxlYWYgdi1lYXN0IHsKICAgICAgICAgIHR5cGUgZGVjaW1hbDY0IHsKICAgICAgICAgICAgZnJhY3Rpb24tZGlnaXRzIDEyOwogICAgICAgICAgfQogICAgICAgICAgdW5pdHMgIm1ldGVycyBwZXIgc2Vjb25kIjsKICAgICAgICAgIGRlc2NyaXB0aW9uCiAgICAgICAgICAgICJ2LWVhc3QgaXMgdGhlIHJhdGUgb2YgY2hhbmdlIChpLmUuLCBzcGVlZCkgcGVycGVuZGljdWxhcgogICAgICAgICAgICAgdG8gdGhlIHJpZ2h0IG9mIHRydWUgbm9ydGggYXMgZGVmaW5lZCBieQogICAgICAgICAgICAgdGhlIGdlb2RldGljLXN5c3RlbS4iOwogICAgICAgIH0KCiAgICAgICAgbGVhZiB2LXVwIHsKICAgICAgICAgIHR5cGUgZGVjaW1hbDY0IHsKICAgICAgICAgICAgZnJhY3Rpb24tZGlnaXRzIDEyOwogICAgICAgICAgfQogICAgICAgICAgdW5pdHMgIm1ldGVycyBwZXIgc2Vjb25kIjsKICAgICAgICAgIGRlc2NyaXB0aW9uCiAgICAgICAgICAgICJ2LXVwIGlzIHRoZSByYXRlIG9mIGNoYW5nZSAoaS5lLiwgc3BlZWQpIGF3YXkgZnJvbSB0aGUKICAgICAgICAgICAgIGNlbnRlciBvZiBtYXNzLiI7CiAgICAgICAgfQogICAgICB9CiAgICAgIGxlYWYgdGltZXN0YW1wIHsKICAgICAgICB0eXBlIHlhbmc6ZGF0ZS1hbmQtdGltZTsKICAgICAgICBkZXNjcmlwdGlvbgogICAgICAgICAgIlJlZmVyZW5jZSB0aW1lIHdoZW4gbG9jYXRpb24gd2FzIHJlY29yZGVkLiI7CiAgICAgIH0KICAgICAgbGVhZiB2YWxpZC11bnRpbCB7CiAgICAgICAgdHlwZSB5YW5nOmRhdGUtYW5kLXRpbWU7CiAgICAgICAgZGVzY3JpcHRpb24KICAgICAgICAgICJUaGUgdGltZXN0YW1wIGZvciB3aGljaCB0aGlzIGdlby1sb2NhdGlvbiBpcyB2YWxpZCB1bnRpbC4KICAgICAgICAgICBJZiB1bnNwZWNpZmllZCwgdGhlIGdlby1sb2NhdGlvbiBoYXMgbm8gc3BlY2lmaWMKICAgICAgICAgICBleHBpcmF0aW9uIHRpbWUuIjsKICAgICAgfQogICAgfQogIH0KfQo=
ietf-inet-types urn:ietf:params:xml:ns:yang:ietf-inet-types \N [] 2013-07-15 bW9kdWxlIGlldGYtaW5ldC10eXBlcyB7CgogIG5hbWVzcGFjZSAidXJuOmlldGY6cGFyYW1zOnhtbDpuczp5YW5nOmlldGYtaW5ldC10eXBlcyI7CiAgcHJlZml4ICJpbmV0IjsKCiAgb3JnYW5pemF0aW9uCiAgICJJRVRGIE5FVE1PRCAoTkVUQ09ORiBEYXRhIE1vZGVsaW5nIExhbmd1YWdlKSBXb3JraW5nIEdyb3VwIjsKCiAgY29udGFjdAogICAiV0cgV2ViOiAgIDxodHRwOi8vdG9vbHMuaWV0Zi5vcmcvd2cvbmV0bW9kLz4KICAgIFdHIExpc3Q6ICA8bWFpbHRvOm5ldG1vZEBpZXRmLm9yZz4KCiAgICBXRyBDaGFpcjogRGF2aWQgS2Vzc2VucwogICAgICAgICAgICAgIDxtYWlsdG86ZGF2aWQua2Vzc2Vuc0Buc24uY29tPgoKICAgIFdHIENoYWlyOiBKdWVyZ2VuIFNjaG9lbndhZWxkZXIKICAgICAgICAgICAgICA8bWFpbHRvOmouc2Nob2Vud2FlbGRlckBqYWNvYnMtdW5pdmVyc2l0eS5kZT4KCiAgICBFZGl0b3I6ICAgSnVlcmdlbiBTY2hvZW53YWVsZGVyCiAgICAgICAgICAgICAgPG1haWx0bzpqLnNjaG9lbndhZWxkZXJAamFjb2JzLXVuaXZlcnNpdHkuZGU+IjsKCiAgZGVzY3JpcHRpb24KICAgIlRoaXMgbW9kdWxlIGNvbnRhaW5zIGEgY29sbGVjdGlvbiBvZiBnZW5lcmFsbHkgdXNlZnVsIGRlcml2ZWQKICAgIFlBTkcgZGF0YSB0eXBlcyBmb3IgSW50ZXJuZXQgYWRkcmVzc2VzIGFuZCByZWxhdGVkIHRoaW5ncy4KCiAgICBDb3B5cmlnaHQgKGMpIDIwMTMgSUVURiBUcnVzdCBhbmQgdGhlIHBlcnNvbnMgaWRlbnRpZmllZCBhcwogICAgYXV0aG9ycyBvZiB0aGUgY29kZS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCgogICAgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvcgogICAgd2l0aG91dCBtb2RpZmljYXRpb24sIGlzIHBlcm1pdHRlZCBwdXJzdWFudCB0bywgYW5kIHN1YmplY3QKICAgIHRvIHRoZSBsaWNlbnNlIHRlcm1zIGNvbnRhaW5lZCBpbiwgdGhlIFNpbXBsaWZpZWQgQlNEIExpY2Vuc2UKICAgIHNldCBmb3J0aCBpbiBTZWN0aW9uIDQuYyBvZiB0aGUgSUVURiBUcnVzdCdzIExlZ2FsIFByb3Zpc2lvbnMKICAgIFJlbGF0aW5nIHRvIElFVEYgRG9jdW1lbnRzCiAgICAoaHR0cDovL3RydXN0ZWUuaWV0Zi5vcmcvbGljZW5zZS1pbmZvKS4KCiAgICBUaGlzIHZlcnNpb24gb2YgdGhpcyBZQU5HIG1vZHVsZSBpcyBwYXJ0IG9mIFJGQyA2OTkxOyBzZWUKICAgIHRoZSBSRkMgaXRzZWxmIGZvciBmdWxsIGxlZ2FsIG5vdGljZXMuIjsKCiAgcmV2aXNpb24gMjAxMy0wNy0xNSB7CiAgICBkZXNjcmlwdGlvbgogICAgICJUaGlzIHJldmlzaW9uIGFkZHMgdGhlIGZvbGxvd2luZyBuZXcgZGF0YSB0eXBlczoKICAgICAgLSBpcC1hZGRyZXNzLW5vLXpvbmUKICAgICAgLSBpcHY0LWFkZHJlc3Mtbm8tem9uZQogICAgICAtIGlwdjYtYWRkcmVzcy1uby16b25lIjsKICAgIHJlZmVyZW5jZQogICAgICJSRkMgNjk5MTogQ29tbW9uIFlBTkcgRGF0YSBUeXBlcyI7CiAgfQoKICByZXZpc2lvbiAyMDEwLTA5LTI0IHsKICAgIGRlc2NyaXB0aW9uCiAgICAgIkluaXRpYWwgcmV2aXNpb24uIjsKICAgIHJlZmVyZW5jZQogICAgICJSRkMgNjAyMTogQ29tbW9uIFlBTkcgRGF0YSBUeXBlcyI7CiAgfQoKICAvKioqIGNvbGxlY3Rpb24gb2YgdHlwZXMgcmVsYXRlZCB0byBwcm90b2NvbCBmaWVsZHMgKioqLwoKICB0eXBlZGVmIGlwLXZlcnNpb24gewogICAgdHlwZSBlbnVtZXJhdGlvbiB7CiAgICAgIGVudW0gdW5rbm93biB7CiAgICAgICAgdmFsdWUgIjAiOwogICAgICAgIGRlc2NyaXB0aW9uCiAgICAgICAgICJBbiB1bmtub3duIG9yIHVuc3BlY2lmaWVkIHZlcnNpb24gb2YgdGhlIEludGVybmV0CiAgICAgICAgICBwcm90b2NvbC4iOwogICAgICB9CiAgICAgIGVudW0gaXB2NCB7CiAgICAgICAgdmFsdWUgIjEiOwogICAgICAgIGRlc2NyaXB0aW9uCiAgICAgICAgICJUaGUgSVB2NCBwcm90b2NvbCBhcyBkZWZpbmVkIGluIFJGQyA3OTEuIjsKICAgICAgfQogICAgICBlbnVtIGlwdjYgewogICAgICAgIHZhbHVlICIyIjsKICAgICAgICBkZXNjcmlwdGlvbgogICAgICAgICAiVGhlIElQdjYgcHJvdG9jb2wgYXMgZGVmaW5lZCBpbiBSRkMgMjQ2MC4iOwogICAgICB9CiAgICB9CiAgICBkZXNjcmlwdGlvbgogICAgICJUaGlzIHZhbHVlIHJlcHJlc2VudHMgdGhlIHZlcnNpb24gb2YgdGhlIElQIHByb3RvY29sLgoKICAgICAgSW4gdGhlIHZhbHVlIHNldCBhbmQgaXRzIHNlbWFudGljcywgdGhpcyB0eXBlIGlzIGVxdWl2YWxlbnQKICAgICAgdG8gdGhlIEluZXRWZXJzaW9uIHRleHR1YWwgY29udmVudGlvbiBvZiB0aGUgU01JdjIuIjsKICAgIHJlZmVyZW5jZQogICAgICJSRkMgIDc5MTogSW50ZXJuZXQgUHJvdG9jb2wKICAgICAgUkZDIDI0NjA6IEludGVybmV0IFByb3RvY29sLCBWZXJzaW9uIDYgKElQdjYpIFNwZWNpZmljYXRpb24KICAgICAgUkZDIDQwMDE6IFRleHR1YWwgQ29udmVudGlvbnMgZm9yIEludGVybmV0IE5ldHdvcmsgQWRkcmVzc2VzIjsKICB9CgogIHR5cGVkZWYgZHNjcCB7CiAgICB0eXBlIHVpbnQ4IHsKICAgICAgcmFuZ2UgIjAuLjYzIjsKICAgIH0KICAgIGRlc2NyaXB0aW9uCiAgICAgIlRoZSBkc2NwIHR5cGUgcmVwcmVzZW50cyBhIERpZmZlcmVudGlhdGVkIFNlcnZpY2VzIENvZGUgUG9pbnQKICAgICAgdGhhdCBtYXkgYmUgdXNlZCBmb3IgbWFya2luZyBwYWNrZXRzIGluIGEgdHJhZmZpYyBzdHJlYW0uCiAgICAgIEluIHRoZSB2YWx1ZSBzZXQgYW5kIGl0cyBzZW1hbnRpY3MsIHRoaXMgdHlwZSBpcyBlcXVpdmFsZW50CiAgICAgIHRvIHRoZSBEc2NwIHRleHR1YWwgY29udmVudGlvbiBvZiB0aGUgU01JdjIuIjsKICAgIHJlZmVyZW5jZQogICAgICJSRkMgMzI4OTogTWFuYWdlbWVudCBJbmZvcm1hdGlvbiBCYXNlIGZvciB0aGUgRGlmZmVyZW50aWF0ZWQKICAgICAgICAgICAgICAgIFNlcnZpY2VzIEFyY2hpdGVjdHVyZQogICAgICBSRkMgMjQ3NDogRGVmaW5pdGlvbiBvZiB0aGUgRGlmZmVyZW50aWF0ZWQgU2VydmljZXMgRmllbGQKICAgICAgICAgICAgICAgIChEUyBGaWVsZCkgaW4gdGhlIElQdjQgYW5kIElQdjYgSGVhZGVycwogICAgICBSRkMgMjc4MDogSUFOQSBBbGxvY2F0aW9uIEd1aWRlbGluZXMgRm9yIFZhbHVlcyBJbgogICAgICAgICAgICAgICAgdGhlIEludGVybmV0IFByb3RvY29sIGFuZCBSZWxhdGVkIEhlYWRlcnMiOwogIH0KCiAgdHlwZWRlZiBpcHY2LWZsb3ctbGFiZWwgewogICAgdHlwZSB1aW50MzIgewogICAgICByYW5nZSAiMC4uMTA0ODU3NSI7CiAgICB9CiAgICBkZXNjcmlwdGlvbgogICAgICJUaGUgaXB2Ni1mbG93LWxhYmVsIHR5cGUgcmVwcmVzZW50cyB0aGUgZmxvdyBpZGVudGlmaWVyIG9yIEZsb3cKICAgICAgTGFiZWwgaW4gYW4gSVB2NiBwYWNrZXQgaGVhZGVyIHRoYXQgbWF5IGJlIHVzZWQgdG8KICAgICAgZGlzY3JpbWluYXRlIHRyYWZmaWMgZmxvd3MuCgogICAgICBJbiB0aGUgdmFsdWUgc2V0IGFuZCBpdHMgc2VtYW50aWNzLCB0aGlzIHR5cGUgaXMgZXF1aXZhbGVudAogICAgICB0byB0aGUgSVB2NkZsb3dMYWJlbCB0ZXh0dWFsIGNvbnZlbnRpb24gb2YgdGhlIFNNSXYyLiI7CiAgICByZWZlcmVuY2UKICAgICAiUkZDIDM1OTU6IFRleHR1YWwgQ29udmVudGlvbnMgZm9yIElQdjYgRmxvdyBMYWJlbAogICAgICBSRkMgMjQ2MDogSW50ZXJuZXQgUHJvdG9jb2wsIFZlcnNpb24gNiAoSVB2NikgU3BlY2lmaWNhdGlvbiI7CiAgfQoKICB0eXBlZGVmIHBvcnQtbnVtYmVyIHsKICAgIHR5cGUgdWludDE2IHsKICAgICAgcmFuZ2UgIjAuLjY1NTM1IjsKICAgIH0KICAgIGRlc2NyaXB0aW9uCiAgICAgIlRoZSBwb3J0LW51bWJlciB0eXBlIHJlcHJlc2VudHMgYSAxNi1iaXQgcG9ydCBudW1iZXIgb2YgYW4KICAgICAgSW50ZXJuZXQgdHJhbnNwb3J0LWxheWVyIHByb3RvY29sIHN1Y2ggYXMgVURQLCBUQ1AsIERDQ1AsIG9yCiAgICAgIFNDVFAuICBQb3J0IG51bWJlcnMgYXJlIGFzc2lnbmVkIGJ5IElBTkEuICBBIGN1cnJlbnQgbGlzdCBvZgogICAgICBhbGwgYXNzaWdubWVudHMgaXMgYXZhaWxhYmxlIGZyb20gPGh0dHA6Ly93d3cuaWFuYS5vcmcvPi4KCiAgICAgIE5vdGUgdGhhdCB0aGUgcG9ydCBudW1iZXIgdmFsdWUgemVybyBpcyByZXNlcnZlZCBieSBJQU5BLiAgSW4KICAgICAgc2l0dWF0aW9ucyB3aGVyZSB0aGUgdmFsdWUgemVybyBkb2VzIG5vdCBtYWtlIHNlbnNlLCBpdCBjYW4KICAgICAgYmUgZXhjbHVkZWQgYnkgc3VidHlwaW5nIHRoZSBwb3J0LW51bWJlciB0eXBlLgogICAgICBJbiB0aGUgdmFsdWUgc2V0IGFuZCBpdHMgc2VtYW50aWNzLCB0aGlzIHR5cGUgaXMgZXF1aXZhbGVudAogICAgICB0byB0aGUgSW5ldFBvcnROdW1iZXIgdGV4dHVhbCBjb252ZW50aW9uIG9mIHRoZSBTTUl2Mi4iOwogICAgcmVmZXJlbmNlCiAgICAgIlJGQyAgNzY4OiBVc2VyIERhdGFncmFtIFByb3RvY29sCiAgICAgIFJGQyAgNzkzOiBUcmFuc21pc3Npb24gQ29udHJvbCBQcm90b2NvbAogICAgICBSRkMgNDk2MDogU3RyZWFtIENvbnRyb2wgVHJhbnNtaXNzaW9uIFByb3RvY29sCiAgICAgIFJGQyA0MzQwOiBEYXRhZ3JhbSBDb25nZXN0aW9uIENvbnRyb2wgUHJvdG9jb2wgKERDQ1ApCiAgICAgIFJGQyA0MDAxOiBUZXh0dWFsIENvbnZlbnRpb25zIGZvciBJbnRlcm5ldCBOZXR3b3JrIEFkZHJlc3NlcyI7CiAgfQoKICAvKioqIGNvbGxlY3Rpb24gb2YgdHlwZXMgcmVsYXRlZCB0byBhdXRvbm9tb3VzIHN5c3RlbXMgKioqLwoKICB0eXBlZGVmIGFzLW51bWJlciB7CiAgICB0eXBlIHVpbnQzMjsKICAgIGRlc2NyaXB0aW9uCiAgICAgIlRoZSBhcy1udW1iZXIgdHlwZSByZXByZXNlbnRzIGF1dG9ub21vdXMgc3lzdGVtIG51bWJlcnMKICAgICAgd2hpY2ggaWRlbnRpZnkgYW4gQXV0b25vbW91cyBTeXN0ZW0gKEFTKS4gIEFuIEFTIGlzIGEgc2V0CiAgICAgIG9mIHJvdXRlcnMgdW5kZXIgYSBzaW5nbGUgdGVjaG5pY2FsIGFkbWluaXN0cmF0aW9uLCB1c2luZwogICAgICBhbiBpbnRlcmlvciBnYXRld2F5IHByb3RvY29sIGFuZCBjb21tb24gbWV0cmljcyB0byByb3V0ZQogICAgICBwYWNrZXRzIHdpdGhpbiB0aGUgQVMsIGFuZCB1c2luZyBhbiBleHRlcmlvciBnYXRld2F5CiAgICAgIHByb3RvY29sIHRvIHJvdXRlIHBhY2tldHMgdG8gb3RoZXIgQVNlcy4gIElBTkEgbWFpbnRhaW5zCiAgICAgIHRoZSBBUyBudW1iZXIgc3BhY2UgYW5kIGhhcyBkZWxlZ2F0ZWQgbGFyZ2UgcGFydHMgdG8gdGhlCiAgICAgIHJlZ2lvbmFsIHJlZ2lzdHJpZXMuCgogICAgICBBdXRvbm9tb3VzIHN5c3RlbSBudW1iZXJzIHdlcmUgb3JpZ2luYWxseSBsaW1pdGVkIHRvIDE2CiAgICAgIGJpdHMuICBCR1AgZXh0ZW5zaW9ucyBoYXZlIGVubGFyZ2VkIHRoZSBhdXRvbm9tb3VzIHN5c3RlbQogICAgICBudW1iZXIgc3BhY2UgdG8gMzIgYml0cy4gIFRoaXMgdHlwZSB0aGVyZWZvcmUgdXNlcyBhbiB1aW50MzIKICAgICAgYmFzZSB0eXBlIHdpdGhvdXQgYSByYW5nZSByZXN0cmljdGlvbiBpbiBvcmRlciB0byBzdXBwb3J0CiAgICAgIGEgbGFyZ2VyIGF1dG9ub21vdXMgc3lzdGVtIG51bWJlciBzcGFjZS4KCiAgICAgIEluIHRoZSB2YWx1ZSBzZXQgYW5kIGl0cyBzZW1hbnRpY3MsIHRoaXMgdHlwZSBpcyBlcXVpdmFsZW50CiAgICAgIHRvIHRoZSBJbmV0QXV0b25vbW91c1N5c3RlbU51bWJlciB0ZXh0dWFsIGNvbnZlbnRpb24gb2YKICAgICAgdGhlIFNNSXYyLiI7CiAgICByZWZlcmVuY2UKICAgICAiUkZDIDE5MzA6IEd1aWRlbGluZXMgZm9yIGNyZWF0aW9uLCBzZWxlY3Rpb24sIGFuZCByZWdpc3RyYXRpb24KICAgICAgICAgICAgICAgIG9mIGFuIEF1dG9ub21vdXMgU3lzdGVtIChBUykKICAgICAgUkZDIDQyNzE6IEEgQm9yZGVyIEdhdGV3YXkgUHJvdG9jb2wgNCAoQkdQLTQpCiAgICAgIFJGQyA0MDAxOiBUZXh0dWFsIENvbnZlbnRpb25zIGZvciBJbnRlcm5ldCBOZXR3b3JrIEFkZHJlc3NlcwogICAgICBSRkMgNjc5MzogQkdQIFN1cHBvcnQgZm9yIEZvdXItT2N0ZXQgQXV0b25vbW91cyBTeXN0ZW0gKEFTKQogICAgICAgICAgICAgICAgTnVtYmVyIFNwYWNlIjsKICB9CgogIC8qKiogY29sbGVjdGlvbiBvZiB0eXBlcyByZWxhdGVkIHRvIElQIGFkZHJlc3NlcyBhbmQgaG9zdG5hbWVzICoqKi8KCiAgdHlwZWRlZiBpcC1hZGRyZXNzIHsKICAgIHR5cGUgdW5pb24gewogICAgICB0eXBlIGluZXQ6aXB2NC1hZGRyZXNzOwogICAgICB0eXBlIGluZXQ6aXB2Ni1hZGRyZXNzOwogICAgfQogICAgZGVzY3JpcHRpb24KICAgICAiVGhlIGlwLWFkZHJlc3MgdHlwZSByZXByZXNlbnRzIGFuIElQIGFkZHJlc3MgYW5kIGlzIElQCiAgICAgIHZlcnNpb24gbmV1dHJhbC4gIFRoZSBmb3JtYXQgb2YgdGhlIHRleHR1YWwgcmVwcmVzZW50YXRpb24KICAgICAgaW1wbGllcyB0aGUgSVAgdmVyc2lvbi4gIFRoaXMgdHlwZSBzdXBwb3J0cyBzY29wZWQgYWRkcmVzc2VzCiAgICAgIGJ5IGFsbG93aW5nIHpvbmUgaWRlbnRpZmllcnMgaW4gdGhlIGFkZHJlc3MgZm9ybWF0LiI7CiAgICByZWZlcmVuY2UKICAgICAiUkZDIDQwMDc6IElQdjYgU2NvcGVkIEFkZHJlc3MgQXJjaGl0ZWN0dXJlIjsKICB9CgogIHR5cGVkZWYgaXB2NC1hZGRyZXNzIHsKICAgIHR5cGUgc3RyaW5nIHsKICAgICAgcGF0dGVybgogICAgICAgICcoKFswLTldfFsxLTldWzAtOV18MVswLTldWzAtOV18MlswLTRdWzAtOV18MjVbMC01XSlcLil7M30nCiAgICAgICsgICcoWzAtOV18WzEtOV1bMC05XXwxWzAtOV1bMC05XXwyWzAtNF1bMC05XXwyNVswLTVdKScKICAgICAgKyAnKCVbXHB7Tn1ccHtMfV0rKT8nOwogICAgfQogICAgZGVzY3JpcHRpb24KICAgICAgIlRoZSBpcHY0LWFkZHJlc3MgdHlwZSByZXByZXNlbnRzIGFuIElQdjQgYWRkcmVzcyBpbgogICAgICAgZG90dGVkLXF1YWQgbm90YXRpb24uICBUaGUgSVB2NCBhZGRyZXNzIG1heSBpbmNsdWRlIGEgem9uZQogICAgICAgaW5kZXgsIHNlcGFyYXRlZCBieSBhICUgc2lnbi4KCiAgICAgICBUaGUgem9uZSBpbmRleCBpcyB1c2VkIHRvIGRpc2FtYmlndWF0ZSBpZGVudGljYWwgYWRkcmVzcwogICAgICAgdmFsdWVzLiAgRm9yIGxpbmstbG9jYWwgYWRkcmVzc2VzLCB0aGUgem9uZSBpbmRleCB3aWxsCiAgICAgICB0eXBpY2FsbHkgYmUgdGhlIGludGVyZmFjZSBpbmRleCBudW1iZXIgb3IgdGhlIG5hbWUgb2YgYW4KICAgICAgIGludGVyZmFjZS4gIElmIHRoZSB6b25lIGluZGV4IGlzIG5vdCBwcmVzZW50LCB0aGUgZGVmYXVsdAogICAgICAgem9uZSBvZiB0aGUgZGV2aWNlIHdpbGwgYmUgdXNlZC4KCiAgICAgICBUaGUgY2Fub25pY2FsIGZvcm1hdCBmb3IgdGhlIHpvbmUgaW5kZXggaXMgdGhlIG51bWVyaWNhbAogICAgICAgZm9ybWF0IjsKICB9CgogIHR5cGVkZWYgaXB2Ni1hZGRyZXNzIHsKICAgIHR5cGUgc3RyaW5nIHsKICAgICAgcGF0dGVybiAnKCg6fFswLTlhLWZBLUZdezAsNH0pOikoWzAtOWEtZkEtRl17MCw0fTopezAsNX0nCiAgICAgICAgICAgICsgJygoKFswLTlhLWZBLUZdezAsNH06KT8oOnxbMC05YS1mQS1GXXswLDR9KSl8JwogICAgICAgICAgICArICcoKCgyNVswLTVdfDJbMC00XVswLTldfFswMV0/WzAtOV0/WzAtOV0pXC4pezN9JwogICAgICAgICAgICArICcoMjVbMC01XXwyWzAtNF1bMC05XXxbMDFdP1swLTldP1swLTldKSkpJwogICAgICAgICAgICArICcoJVtccHtOfVxwe0x9XSspPyc7CiAgICAgIHBhdHRlcm4gJygoW146XSs6KXs2fSgoW146XSs6W146XSspfCguKlwuLiopKSl8JwogICAgICAgICAgICArICcoKChbXjpdKzopKlteOl0rKT86OigoW146XSs6KSpbXjpdKyk/KScKICAgICAgICAgICAgKyAnKCUuKyk/JzsKICAgIH0KICAgIGRlc2NyaXB0aW9uCiAgICAgIlRoZSBpcHY2LWFkZHJlc3MgdHlwZSByZXByZXNlbnRzIGFuIElQdjYgYWRkcmVzcyBpbiBmdWxsLAogICAgICBtaXhlZCwgc2hvcnRlbmVkLCBhbmQgc2hvcnRlbmVkLW1peGVkIG5vdGF0aW9uLiAgVGhlIElQdjYKICAgICAgYWRkcmVzcyBtYXkgaW5jbHVkZSBhIHpvbmUgaW5kZXgsIHNlcGFyYXRlZCBieSBhICUgc2lnbi4KCiAgICAgIFRoZSB6b25lIGluZGV4IGlzIHVzZWQgdG8gZGlzYW1iaWd1YXRlIGlkZW50aWNhbCBhZGRyZXNzCiAgICAgIHZhbHVlcy4gIEZvciBsaW5rLWxvY2FsIGFkZHJlc3NlcywgdGhlIHpvbmUgaW5kZXggd2lsbAogICAgICB0eXBpY2FsbHkgYmUgdGhlIGludGVyZmFjZSBpbmRleCBudW1iZXIgb3IgdGhlIG5hbWUgb2YgYW4KICAgICAgaW50ZXJmYWNlLiAgSWYgdGhlIHpvbmUgaW5kZXggaXMgbm90IHByZXNlbnQsIHRoZSBkZWZhdWx0CiAgICAgIHpvbmUgb2YgdGhlIGRldmljZSB3aWxsIGJlIHVzZWQuCgogICAgICBUaGUgY2Fub25pY2FsIGZvcm1hdCBvZiBJUHY2IGFkZHJlc3NlcyB1c2VzIHRoZSB0ZXh0dWFsCiAgICAgIHJlcHJlc2VudGF0aW9uIGRlZmluZWQgaW4gU2VjdGlvbiA0IG9mIFJGQyA1OTUyLiAgVGhlCiAgICAgIGNhbm9uaWNhbCBmb3JtYXQgZm9yIHRoZSB6b25lIGluZGV4IGlzIHRoZSBudW1lcmljYWwKICAgICAgZm9ybWF0IGFzIGRlc2NyaWJlZCBpbiBTZWN0aW9uIDExLjIgb2YgUkZDIDQwMDcuIjsKICAgIHJlZmVyZW5jZQogICAgICJSRkMgNDI5MTogSVAgVmVyc2lvbiA2IEFkZHJlc3NpbmcgQXJjaGl0ZWN0dXJlCiAgICAgIFJGQyA0MDA3OiBJUHY2IFNjb3BlZCBBZGRyZXNzIEFyY2hpdGVjdHVyZQogICAgICBSRkMgNTk1MjogQSBSZWNvbW1lbmRhdGlvbiBmb3IgSVB2NiBBZGRyZXNzIFRleHQKICAgICAgICAgICAgICAgIFJlcHJlc2VudGF0aW9uIjsKICB9CgogIHR5cGVkZWYgaXAtYWRkcmVzcy1uby16b25lIHsKICAgIHR5cGUgdW5pb24gewogICAgICB0eXBlIGluZXQ6aXB2NC1hZGRyZXNzLW5vLXpvbmU7CiAgICAgIHR5cGUgaW5ldDppcHY2LWFkZHJlc3Mtbm8tem9uZTsKICAgIH0KICAgIGRlc2NyaXB0aW9uCiAgICAgIlRoZSBpcC1hZGRyZXNzLW5vLXpvbmUgdHlwZSByZXByZXNlbnRzIGFuIElQIGFkZHJlc3MgYW5kIGlzCiAgICAgIElQIHZlcnNpb24gbmV1dHJhbC4gIFRoZSBmb3JtYXQgb2YgdGhlIHRleHR1YWwgcmVwcmVzZW50YXRpb24KICAgICAgaW1wbGllcyB0aGUgSVAgdmVyc2lvbi4gIFRoaXMgdHlwZSBkb2VzIG5vdCBzdXBwb3J0IHNjb3BlZAogICAgICBhZGRyZXNzZXMgc2luY2UgaXQgZG9lcyBub3QgYWxsb3cgem9uZSBpZGVudGlmaWVycyBpbiB0aGUKICAgICAgYWRkcmVzcyBmb3JtYXQuIjsKICAgIHJlZmVyZW5jZQogICAgICJSRkMgNDAwNzogSVB2NiBTY29wZWQgQWRkcmVzcyBBcmNoaXRlY3R1cmUiOwogIH0KCiAgdHlwZWRlZiBpcHY0LWFkZHJlc3Mtbm8tem9uZSB7CiAgICB0eXBlIGluZXQ6aXB2NC1hZGRyZXNzIHsKICAgICAgcGF0dGVybiAnWzAtOVwuXSonOwogICAgfQogICAgZGVzY3JpcHRpb24KICAgICAgIkFuIElQdjQgYWRkcmVzcyB3aXRob3V0IGEgem9uZSBpbmRleC4gIFRoaXMgdHlwZSwgZGVyaXZlZCBmcm9tCiAgICAgICBpcHY0LWFkZHJlc3MsIG1heSBiZSB1c2VkIGluIHNpdHVhdGlvbnMgd2hlcmUgdGhlIHpvbmUgaXMKICAgICAgIGtub3duIGZyb20gdGhlIGNvbnRleHQgYW5kIGhlbmNlIG5vIHpvbmUgaW5kZXggaXMgbmVlZGVkLiI7CiAgfQoKICB0eXBlZGVmIGlwdjYtYWRkcmVzcy1uby16b25lIHsKICAgIHR5cGUgaW5ldDppcHY2LWFkZHJlc3MgewogICAgICBwYXR0ZXJuICdbMC05YS1mQS1GOlwuXSonOwogICAgfQogICAgZGVzY3JpcHRpb24KICAgICAgIkFuIElQdjYgYWRkcmVzcyB3aXRob3V0IGEgem9uZSBpbmRleC4gIFRoaXMgdHlwZSwgZGVyaXZlZCBmcm9tCiAgICAgICBpcHY2LWFkZHJlc3MsIG1heSBiZSB1c2VkIGluIHNpdHVhdGlvbnMgd2hlcmUgdGhlIHpvbmUgaXMKICAgICAgIGtub3duIGZyb20gdGhlIGNvbnRleHQgYW5kIGhlbmNlIG5vIHpvbmUgaW5kZXggaXMgbmVlZGVkLiI7CiAgICByZWZlcmVuY2UKICAgICAiUkZDIDQyOTE6IElQIFZlcnNpb24gNiBBZGRyZXNzaW5nIEFyY2hpdGVjdHVyZQogICAgICBSRkMgNDAwNzogSVB2NiBTY29wZWQgQWRkcmVzcyBBcmNoaXRlY3R1cmUKICAgICAgUkZDIDU5NTI6IEEgUmVjb21tZW5kYXRpb24gZm9yIElQdjYgQWRkcmVzcyBUZXh0CiAgICAgICAgICAgICAgICBSZXByZXNlbnRhdGlvbiI7CiAgfQoKICB0eXBlZGVmIGlwLXByZWZpeCB7CiAgICB0eXBlIHVuaW9uIHsKICAgICAgdHlwZSBpbmV0OmlwdjQtcHJlZml4OwogICAgICB0eXBlIGluZXQ6aXB2Ni1wcmVmaXg7CiAgICB9CiAgICBkZXNjcmlwdGlvbgogICAgICJUaGUgaXAtcHJlZml4IHR5cGUgcmVwcmVzZW50cyBhbiBJUCBwcmVmaXggYW5kIGlzIElQCiAgICAgIHZlcnNpb24gbmV1dHJhbC4gIFRoZSBmb3JtYXQgb2YgdGhlIHRleHR1YWwgcmVwcmVzZW50YXRpb25zCiAgICAgIGltcGxpZXMgdGhlIElQIHZlcnNpb24uIjsKICB9CgogIHR5cGVkZWYgaXB2NC1wcmVmaXggewogICAgdHlwZSBzdHJpbmcgewogICAgICBwYXR0ZXJuCiAgICAgICAgICcoKFswLTldfFsxLTldWzAtOV18MVswLTldWzAtOV18MlswLTRdWzAtOV18MjVbMC01XSlcLil7M30nCiAgICAgICArICAnKFswLTldfFsxLTldWzAtOV18MVswLTldWzAtOV18MlswLTRdWzAtOV18MjVbMC01XSknCiAgICAgICArICcvKChbMC05XSl8KFsxLTJdWzAtOV0pfCgzWzAtMl0pKSc7CiAgICB9CiAgICBkZXNjcmlwdGlvbgogICAgICJUaGUgaXB2NC1wcmVmaXggdHlwZSByZXByZXNlbnRzIGFuIElQdjQgYWRkcmVzcyBwcmVmaXguCiAgICAgIFRoZSBwcmVmaXggbGVuZ3RoIGlzIGdpdmVuIGJ5IHRoZSBudW1iZXIgZm9sbG93aW5nIHRoZQogICAgICBzbGFzaCBjaGFyYWN0ZXIgYW5kIG11c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIDMyLgoKICAgICAgQSBwcmVmaXggbGVuZ3RoIHZhbHVlIG9mIG4gY29ycmVzcG9uZHMgdG8gYW4gSVAgYWRkcmVzcwogICAgICBtYXNrIHRoYXQgaGFzIG4gY29udGlndW91cyAxLWJpdHMgZnJvbSB0aGUgbW9zdAogICAgICBzaWduaWZpY2FudCBiaXQgKE1TQikgYW5kIGFsbCBvdGhlciBiaXRzIHNldCB0byAwLgoKICAgICAgVGhlIGNhbm9uaWNhbCBmb3JtYXQgb2YgYW4gSVB2NCBwcmVmaXggaGFzIGFsbCBiaXRzIG9mCiAgICAgIHRoZSBJUHY0IGFkZHJlc3Mgc2V0IHRvIHplcm8gdGhhdCBhcmUgbm90IHBhcnQgb2YgdGhlCiAgICAgIElQdjQgcHJlZml4LiI7CiAgfQoKICB0eXBlZGVmIGlwdjYtcHJlZml4IHsKICAgIHR5cGUgc3RyaW5nIHsKICAgICAgcGF0dGVybiAnKCg6fFswLTlhLWZBLUZdezAsNH0pOikoWzAtOWEtZkEtRl17MCw0fTopezAsNX0nCiAgICAgICAgICAgICsgJygoKFswLTlhLWZBLUZdezAsNH06KT8oOnxbMC05YS1mQS1GXXswLDR9KSl8JwogICAgICAgICAgICArICcoKCgyNVswLTVdfDJbMC00XVswLTldfFswMV0/WzAtOV0/WzAtOV0pXC4pezN9JwogICAgICAgICAgICArICcoMjVbMC01XXwyWzAtNF1bMC05XXxbMDFdP1swLTldP1swLTldKSkpJwogICAgICAgICAgICArICcoLygoWzAtOV0pfChbMC05XXsyfSl8KDFbMC0xXVswLTldKXwoMTJbMC04XSkpKSc7CiAgICAgIHBhdHRlcm4gJygoW146XSs6KXs2fSgoW146XSs6W146XSspfCguKlwuLiopKSl8JwogICAgICAgICAgICArICcoKChbXjpdKzopKlteOl0rKT86OigoW146XSs6KSpbXjpdKyk/KScKICAgICAgICAgICAgKyAnKC8uKyknOwogICAgfQoKICAgIGRlc2NyaXB0aW9uCiAgICAgIlRoZSBpcHY2LXByZWZpeCB0eXBlIHJlcHJlc2VudHMgYW4gSVB2NiBhZGRyZXNzIHByZWZpeC4KICAgICAgVGhlIHByZWZpeCBsZW5ndGggaXMgZ2l2ZW4gYnkgdGhlIG51bWJlciBmb2xsb3dpbmcgdGhlCiAgICAgIHNsYXNoIGNoYXJhY3RlciBhbmQgbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gMTI4LgoKICAgICAgQSBwcmVmaXggbGVuZ3RoIHZhbHVlIG9mIG4gY29ycmVzcG9uZHMgdG8gYW4gSVAgYWRkcmVzcwogICAgICBtYXNrIHRoYXQgaGFzIG4gY29udGlndW91cyAxLWJpdHMgZnJvbSB0aGUgbW9zdAogICAgICBzaWduaWZpY2FudCBiaXQgKE1TQikgYW5kIGFsbCBvdGhlciBiaXRzIHNldCB0byAwLgoKICAgICAgVGhlIElQdjYgYWRkcmVzcyBzaG91bGQgaGF2ZSBhbGwgYml0cyB0aGF0IGRvIG5vdCBiZWxvbmcKICAgICAgdG8gdGhlIHByZWZpeCBzZXQgdG8gemVyby4KCiAgICAgIFRoZSBjYW5vbmljYWwgZm9ybWF0IG9mIGFuIElQdjYgcHJlZml4IGhhcyBhbGwgYml0cyBvZgogICAgICB0aGUgSVB2NiBhZGRyZXNzIHNldCB0byB6ZXJvIHRoYXQgYXJlIG5vdCBwYXJ0IG9mIHRoZQogICAgICBJUHY2IHByZWZpeC4gIEZ1cnRoZXJtb3JlLCB0aGUgSVB2NiBhZGRyZXNzIGlzIHJlcHJlc2VudGVkCiAgICAgIGFzIGRlZmluZWQgaW4gU2VjdGlvbiA0IG9mIFJGQyA1OTUyLiI7CiAgICByZWZlcmVuY2UKICAgICAiUkZDIDU5NTI6IEEgUmVjb21tZW5kYXRpb24gZm9yIElQdjYgQWRkcmVzcyBUZXh0CiAgICAgICAgICAgICAgICBSZXByZXNlbnRhdGlvbiI7CiAgfQoKICAvKioqIGNvbGxlY3Rpb24gb2YgZG9tYWluIG5hbWUgYW5kIFVSSSB0eXBlcyAqKiovCgogIHR5cGVkZWYgZG9tYWluLW5hbWUgewogICAgdHlwZSBzdHJpbmcgewogICAgICBwYXR0ZXJuCiAgICAgICAgJygoKFthLXpBLVowLTlfXShbYS16QS1aMC05XC1fXSl7MCw2MX0pP1thLXpBLVowLTldXC4pKicKICAgICAgKyAnKFthLXpBLVowLTlfXShbYS16QS1aMC05XC1fXSl7MCw2MX0pP1thLXpBLVowLTldXC4/KScKICAgICAgKyAnfFwuJzsKICAgICAgbGVuZ3RoICIxLi4yNTMiOwogICAgfQogICAgZGVzY3JpcHRpb24KICAgICAiVGhlIGRvbWFpbi1uYW1lIHR5cGUgcmVwcmVzZW50cyBhIEROUyBkb21haW4gbmFtZS4gIFRoZQogICAgICBuYW1lIFNIT1VMRCBiZSBmdWxseSBxdWFsaWZpZWQgd2hlbmV2ZXIgcG9zc2libGUuCgogICAgICBJbnRlcm5ldCBkb21haW4gbmFtZXMgYXJlIG9ubHkgbG9vc2VseSBzcGVjaWZpZWQuICBTZWN0aW9uCiAgICAgIDMuNSBvZiBSRkMgMTAzNCByZWNvbW1lbmRzIGEgc3ludGF4IChtb2RpZmllZCBpbiBTZWN0aW9uCiAgICAgIDIuMSBvZiBSRkMgMTEyMykuICBUaGUgcGF0dGVybiBhYm92ZSBpcyBpbnRlbmRlZCB0byBhbGxvdwogICAgICBmb3IgY3VycmVudCBwcmFjdGljZSBpbiBkb21haW4gbmFtZSB1c2UsIGFuZCBzb21lIHBvc3NpYmxlCiAgICAgIGZ1dHVyZSBleHBhbnNpb24uICBJdCBpcyBkZXNpZ25lZCB0byBob2xkIHZhcmlvdXMgdHlwZXMgb2YKICAgICAgZG9tYWluIG5hbWVzLCBpbmNsdWRpbmcgbmFtZXMgdXNlZCBmb3IgQSBvciBBQUFBIHJlY29yZHMKICAgICAgKGhvc3QgbmFtZXMpIGFuZCBvdGhlciByZWNvcmRzLCBzdWNoIGFzIFNSViByZWNvcmRzLiAgTm90ZQogICAgICB0aGF0IEludGVybmV0IGhvc3QgbmFtZXMgaGF2ZSBhIHN0cmljdGVyIHN5bnRheCAoZGVzY3JpYmVkCiAgICAgIGluIFJGQyA5NTIpIHRoYW4gdGhlIEROUyByZWNvbW1lbmRhdGlvbnMgaW4gUkZDcyAxMDM0IGFuZAogICAgICAxMTIzLCBhbmQgdGhhdCBzeXN0ZW1zIHRoYXQgd2FudCB0byBzdG9yZSBob3N0IG5hbWVzIGluCiAgICAgIHNjaGVtYSBub2RlcyB1c2luZyB0aGUgZG9tYWluLW5hbWUgdHlwZSBhcmUgcmVjb21tZW5kZWQgdG8KICAgICAgYWRoZXJlIHRvIHRoaXMgc3RyaWN0ZXIgc3RhbmRhcmQgdG8gZW5zdXJlIGludGVyb3BlcmFiaWxpdHkuCgogICAgICBUaGUgZW5jb2Rpbmcgb2YgRE5TIG5hbWVzIGluIHRoZSBETlMgcHJvdG9jb2wgaXMgbGltaXRlZAogICAgICB0byAyNTUgY2hhcmFjdGVycy4gIFNpbmNlIHRoZSBlbmNvZGluZyBjb25zaXN0cyBvZiBsYWJlbHMKICAgICAgcHJlZml4ZWQgYnkgYSBsZW5ndGggYnl0ZXMgYW5kIHRoZXJlIGlzIGEgdHJhaWxpbmcgTlVMTAogICAgICBieXRlLCBvbmx5IDI1MyBjaGFyYWN0ZXJzIGNhbiBhcHBlYXIgaW4gdGhlIHRleHR1YWwgZG90dGVkCiAgICAgIG5vdGF0aW9uLgoKICAgICAgVGhlIGRlc2NyaXB0aW9uIGNsYXVzZSBvZiBzY2hlbWEgbm9kZXMgdXNpbmcgdGhlIGRvbWFpbi1uYW1lCiAgICAgIHR5cGUgTVVTVCBkZXNjcmliZSB3aGVuIGFuZCBob3cgdGhlc2UgbmFtZXMgYXJlIHJlc29sdmVkIHRvCiAgICAgIElQIGFkZHJlc3Nlcy4gIE5vdGUgdGhhdCB0aGUgcmVzb2x1dGlvbiBvZiBhIGRvbWFpbi1uYW1lIHZhbHVlCiAgICAgIG1heSByZXF1aXJlIHRvIHF1ZXJ5IG11bHRpcGxlIEROUyByZWNvcmRzIChlLmcuLCBBIGZvciBJUHY0CiAgICAgIGFuZCBBQUFBIGZvciBJUHY2KS4gIFRoZSBvcmRlciBvZiB0aGUgcmVzb2x1dGlvbiBwcm9jZXNzIGFuZAogICAgICB3aGljaCBETlMgcmVjb3JkIHRha2VzIHByZWNlZGVuY2UgY2FuIGVpdGhlciBiZSBkZWZpbmVkCiAgICAgIGV4cGxpY2l0bHkgb3IgbWF5IGRlcGVuZCBvbiB0aGUgY29uZmlndXJhdGlvbiBvZiB0aGUKICAgICAgcmVzb2x2ZXIuCgogICAgICBEb21haW4tbmFtZSB2YWx1ZXMgdXNlIHRoZSBVUy1BU0NJSSBlbmNvZGluZy4gIFRoZWlyIGNhbm9uaWNhbAogICAgICBmb3JtYXQgdXNlcyBsb3dlcmNhc2UgVVMtQVNDSUkgY2hhcmFjdGVycy4gIEludGVybmF0aW9uYWxpemVkCiAgICAgIGRvbWFpbiBuYW1lcyBNVVNUIGJlIEEtbGFiZWxzIGFzIHBlciBSRkMgNTg5MC4iOwogICAgcmVmZXJlbmNlCiAgICAgIlJGQyAgOTUyOiBEb0QgSW50ZXJuZXQgSG9zdCBUYWJsZSBTcGVjaWZpY2F0aW9uCiAgICAgIFJGQyAxMDM0OiBEb21haW4gTmFtZXMgLSBDb25jZXB0cyBhbmQgRmFjaWxpdGllcwogICAgICBSRkMgMTEyMzogUmVxdWlyZW1lbnRzIGZvciBJbnRlcm5ldCBIb3N0cyAtLSBBcHBsaWNhdGlvbgogICAgICAgICAgICAgICAgYW5kIFN1cHBvcnQKICAgICAgUkZDIDI3ODI6IEEgRE5TIFJSIGZvciBzcGVjaWZ5aW5nIHRoZSBsb2NhdGlvbiBvZiBzZXJ2aWNlcwogICAgICAgICAgICAgICAgKEROUyBTUlYpCiAgICAgIFJGQyA1ODkwOiBJbnRlcm5hdGlvbmFsaXplZCBEb21haW4gTmFtZXMgaW4gQXBwbGljYXRpb25zCiAgICAgICAgICAgICAgICAoSUROQSk6IERlZmluaXRpb25zIGFuZCBEb2N1bWVudCBGcmFtZXdvcmsiOwogIH0KCiAgdHlwZWRlZiBob3N0IHsKICAgIHR5cGUgdW5pb24gewogICAgICB0eXBlIGluZXQ6aXAtYWRkcmVzczsKICAgICAgdHlwZSBpbmV0OmRvbWFpbi1uYW1lOwogICAgfQogICAgZGVzY3JpcHRpb24KICAgICAiVGhlIGhvc3QgdHlwZSByZXByZXNlbnRzIGVpdGhlciBhbiBJUCBhZGRyZXNzIG9yIGEgRE5TCiAgICAgIGRvbWFpbiBuYW1lLiI7CiAgfQoKICB0eXBlZGVmIHVyaSB7CiAgICB0eXBlIHN0cmluZzsKICAgIGRlc2NyaXB0aW9uCiAgICAgIlRoZSB1cmkgdHlwZSByZXByZXNlbnRzIGEgVW5pZm9ybSBSZXNvdXJjZSBJZGVudGlmaWVyCiAgICAgIChVUkkpIGFzIGRlZmluZWQgYnkgU1REIDY2LgoKICAgICAgT2JqZWN0cyB1c2luZyB0aGUgdXJpIHR5cGUgTVVTVCBiZSBpbiBVUy1BU0NJSSBlbmNvZGluZywKICAgICAgYW5kIE1VU1QgYmUgbm9ybWFsaXplZCBhcyBkZXNjcmliZWQgYnkgUkZDIDM5ODYgU2VjdGlvbnMKICAgICAgNi4yLjEsIDYuMi4yLjEsIGFuZCA2LjIuMi4yLiAgQWxsIHVubmVjZXNzYXJ5CiAgICAgIHBlcmNlbnQtZW5jb2RpbmcgaXMgcmVtb3ZlZCwgYW5kIGFsbCBjYXNlLWluc2Vuc2l0aXZlCiAgICAgIGNoYXJhY3RlcnMgYXJlIHNldCB0byBsb3dlcmNhc2UgZXhjZXB0IGZvciBoZXhhZGVjaW1hbAogICAgICBkaWdpdHMsIHdoaWNoIGFyZSBub3JtYWxpemVkIHRvIHVwcGVyY2FzZSBhcyBkZXNjcmliZWQgaW4KICAgICAgU2VjdGlvbiA2LjIuMi4xLgoKICAgICAgVGhlIHB1cnBvc2Ugb2YgdGhpcyBub3JtYWxpemF0aW9uIGlzIHRvIGhlbHAgcHJvdmlkZQogICAgICB1bmlxdWUgVVJJcy4gIE5vdGUgdGhhdCB0aGlzIG5vcm1hbGl6YXRpb24gaXMgbm90CiAgICAgIHN1ZmZpY2llbnQgdG8gcHJvdmlkZSB1bmlxdWVuZXNzLiAgVHdvIFVSSXMgdGhhdCBhcmUKICAgICAgdGV4dHVhbGx5IGRpc3RpbmN0IGFmdGVyIHRoaXMgbm9ybWFsaXphdGlvbiBtYXkgc3RpbGwgYmUKICAgICAgZXF1aXZhbGVudC4KCiAgICAgIE9iamVjdHMgdXNpbmcgdGhlIHVyaSB0eXBlIG1heSByZXN0cmljdCB0aGUgc2NoZW1lcyB0aGF0CiAgICAgIHRoZXkgcGVybWl0LiAgRm9yIGV4YW1wbGUsICdkYXRhOicgYW5kICd1cm46JyBzY2hlbWVzCiAgICAgIG1pZ2h0IG5vdCBiZSBhcHByb3ByaWF0ZS4KCiAgICAgIEEgemVyby1sZW5ndGggVVJJIGlzIG5vdCBhIHZhbGlkIFVSSS4gIFRoaXMgY2FuIGJlIHVzZWQgdG8KICAgICAgZXhwcmVzcyAnVVJJIGFic2VudCcgd2hlcmUgcmVxdWlyZWQuCgogICAgICBJbiB0aGUgdmFsdWUgc2V0IGFuZCBpdHMgc2VtYW50aWNzLCB0aGlzIHR5cGUgaXMgZXF1aXZhbGVudAogICAgICB0byB0aGUgVXJpIFNNSXYyIHRleHR1YWwgY29udmVudGlvbiBkZWZpbmVkIGluIFJGQyA1MDE3LiI7CiAgICByZWZlcmVuY2UKICAgICAiUkZDIDM5ODY6IFVuaWZvcm0gUmVzb3VyY2UgSWRlbnRpZmllciAoVVJJKTogR2VuZXJpYyBTeW50YXgKICAgICAgUkZDIDMzMDU6IFJlcG9ydCBmcm9tIHRoZSBKb2ludCBXM0MvSUVURiBVUkkgUGxhbm5pbmcgSW50ZXJlc3QKICAgICAgICAgICAgICAgIEdyb3VwOiBVbmlmb3JtIFJlc291cmNlIElkZW50aWZpZXJzIChVUklzKSwgVVJMcywKICAgICAgICAgICAgICAgIGFuZCBVbmlmb3JtIFJlc291cmNlIE5hbWVzIChVUk5zKTogQ2xhcmlmaWNhdGlvbnMKICAgICAgICAgICAgICAgIGFuZCBSZWNvbW1lbmRhdGlvbnMKICAgICAgUkZDIDUwMTc6IE1JQiBUZXh0dWFsIENvbnZlbnRpb25zIGZvciBVbmlmb3JtIFJlc291cmNlCiAgICAgICAgICAgICAgICBJZGVudGlmaWVycyAoVVJJcykiOwogIH0KCn0K
ietf-yang-types urn:ietf:params:xml:ns:yang:ietf-yang-types \N [] 2013-07-15 bW9kdWxlIGlldGYteWFuZy10eXBlcyB7CgogIG5hbWVzcGFjZSAidXJuOmlldGY6cGFyYW1zOnhtbDpuczp5YW5nOmlldGYteWFuZy10eXBlcyI7CiAgcHJlZml4ICJ5YW5nIjsKCiAgb3JnYW5pemF0aW9uCiAgICJJRVRGIE5FVE1PRCAoTkVUQ09ORiBEYXRhIE1vZGVsaW5nIExhbmd1YWdlKSBXb3JraW5nIEdyb3VwIjsKCiAgY29udGFjdAogICAiV0cgV2ViOiAgIDxodHRwOi8vdG9vbHMuaWV0Zi5vcmcvd2cvbmV0bW9kLz4KICAgIFdHIExpc3Q6ICA8bWFpbHRvOm5ldG1vZEBpZXRmLm9yZz4KCiAgICBXRyBDaGFpcjogRGF2aWQgS2Vzc2VucwogICAgICAgICAgICAgIDxtYWlsdG86ZGF2aWQua2Vzc2Vuc0Buc24uY29tPgoKICAgIFdHIENoYWlyOiBKdWVyZ2VuIFNjaG9lbndhZWxkZXIKICAgICAgICAgICAgICA8bWFpbHRvOmouc2Nob2Vud2FlbGRlckBqYWNvYnMtdW5pdmVyc2l0eS5kZT4KCiAgICBFZGl0b3I6ICAgSnVlcmdlbiBTY2hvZW53YWVsZGVyCiAgICAgICAgICAgICAgPG1haWx0bzpqLnNjaG9lbndhZWxkZXJAamFjb2JzLXVuaXZlcnNpdHkuZGU+IjsKCiAgZGVzY3JpcHRpb24KICAgIlRoaXMgbW9kdWxlIGNvbnRhaW5zIGEgY29sbGVjdGlvbiBvZiBnZW5lcmFsbHkgdXNlZnVsIGRlcml2ZWQKICAgIFlBTkcgZGF0YSB0eXBlcy4KCiAgICBDb3B5cmlnaHQgKGMpIDIwMTMgSUVURiBUcnVzdCBhbmQgdGhlIHBlcnNvbnMgaWRlbnRpZmllZCBhcwogICAgYXV0aG9ycyBvZiB0aGUgY29kZS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCgogICAgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvcgogICAgd2l0aG91dCBtb2RpZmljYXRpb24sIGlzIHBlcm1pdHRlZCBwdXJzdWFudCB0bywgYW5kIHN1YmplY3QKICAgIHRvIHRoZSBsaWNlbnNlIHRlcm1zIGNvbnRhaW5lZCBpbiwgdGhlIFNpbXBsaWZpZWQgQlNEIExpY2Vuc2UKICAgIHNldCBmb3J0aCBpbiBTZWN0aW9uIDQuYyBvZiB0aGUgSUVURiBUcnVzdCdzIExlZ2FsIFByb3Zpc2lvbnMKICAgIFJlbGF0aW5nIHRvIElFVEYgRG9jdW1lbnRzCiAgICAoaHR0cDovL3RydXN0ZWUuaWV0Zi5vcmcvbGljZW5zZS1pbmZvKS4KCiAgICBUaGlzIHZlcnNpb24gb2YgdGhpcyBZQU5HIG1vZHVsZSBpcyBwYXJ0IG9mIFJGQyA2OTkxOyBzZWUKICAgIHRoZSBSRkMgaXRzZWxmIGZvciBmdWxsIGxlZ2FsIG5vdGljZXMuIjsKCiAgcmV2aXNpb24gMjAxMy0wNy0xNSB7CiAgICBkZXNjcmlwdGlvbgogICAgICJUaGlzIHJldmlzaW9uIGFkZHMgdGhlIGZvbGxvd2luZyBuZXcgZGF0YSB0eXBlczoKICAgICAgLSB5YW5nLWlkZW50aWZpZXIKICAgICAgLSBoZXgtc3RyaW5nCiAgICAgIC0gdXVpZAogICAgICAtIGRvdHRlZC1xdWFkIjsKICAgIHJlZmVyZW5jZQogICAgICJSRkMgNjk5MTogQ29tbW9uIFlBTkcgRGF0YSBUeXBlcyI7CiAgfQoKICByZXZpc2lvbiAyMDEwLTA5LTI0IHsKICAgIGRlc2NyaXB0aW9uCiAgICAgIkluaXRpYWwgcmV2aXNpb24uIjsKICAgIHJlZmVyZW5jZQogICAgICJSRkMgNjAyMTogQ29tbW9uIFlBTkcgRGF0YSBUeXBlcyI7CiAgfQoKICAvKioqIGNvbGxlY3Rpb24gb2YgY291bnRlciBhbmQgZ2F1Z2UgdHlwZXMgKioqLwoKICB0eXBlZGVmIGNvdW50ZXIzMiB7CiAgICB0eXBlIHVpbnQzMjsKICAgIGRlc2NyaXB0aW9uCiAgICAgIlRoZSBjb3VudGVyMzIgdHlwZSByZXByZXNlbnRzIGEgbm9uLW5lZ2F0aXZlIGludGVnZXIKICAgICAgdGhhdCBtb25vdG9uaWNhbGx5IGluY3JlYXNlcyB1bnRpbCBpdCByZWFjaGVzIGEKICAgICAgbWF4aW11bSB2YWx1ZSBvZiAyXjMyLTEgKDQyOTQ5NjcyOTUgZGVjaW1hbCksIHdoZW4gaXQKICAgICAgd3JhcHMgYXJvdW5kIGFuZCBzdGFydHMgaW5jcmVhc2luZyBhZ2FpbiBmcm9tIHplcm8uCgogICAgICBDb3VudGVycyBoYXZlIG5vIGRlZmluZWQgJ2luaXRpYWwnIHZhbHVlLCBhbmQgdGh1cywgYQogICAgICBzaW5nbGUgdmFsdWUgb2YgYSBjb3VudGVyIGhhcyAoaW4gZ2VuZXJhbCkgbm8gaW5mb3JtYXRpb24KICAgICAgY29udGVudC4gIERpc2NvbnRpbnVpdGllcyBpbiB0aGUgbW9ub3RvbmljYWxseSBpbmNyZWFzaW5nCiAgICAgIHZhbHVlIG5vcm1hbGx5IG9jY3VyIGF0IHJlLWluaXRpYWxpemF0aW9uIG9mIHRoZQogICAgICBtYW5hZ2VtZW50IHN5c3RlbSwgYW5kIGF0IG90aGVyIHRpbWVzIGFzIHNwZWNpZmllZCBpbiB0aGUKICAgICAgZGVzY3JpcHRpb24gb2YgYSBzY2hlbWEgbm9kZSB1c2luZyB0aGlzIHR5cGUuICBJZiBzdWNoCiAgICAgIG90aGVyIHRpbWVzIGNhbiBvY2N1ciwgZm9yIGV4YW1wbGUsIHRoZSBjcmVhdGlvbiBvZgogICAgICBhIHNjaGVtYSBub2RlIG9mIHR5cGUgY291bnRlcjMyIGF0IHRpbWVzIG90aGVyIHRoYW4KICAgICAgcmUtaW5pdGlhbGl6YXRpb24sIHRoZW4gYSBjb3JyZXNwb25kaW5nIHNjaGVtYSBub2RlCiAgICAgIHNob3VsZCBiZSBkZWZpbmVkLCB3aXRoIGFuIGFwcHJvcHJpYXRlIHR5cGUsIHRvIGluZGljYXRlCiAgICAgIHRoZSBsYXN0IGRpc2NvbnRpbnVpdHkuCgogICAgICBUaGUgY291bnRlcjMyIHR5cGUgc2hvdWxkIG5vdCBiZSB1c2VkIGZvciBjb25maWd1cmF0aW9uCiAgICAgIHNjaGVtYSBub2Rlcy4gIEEgZGVmYXVsdCBzdGF0ZW1lbnQgU0hPVUxEIE5PVCBiZSB1c2VkIGluCiAgICAgIGNvbWJpbmF0aW9uIHdpdGggdGhlIHR5cGUgY291bnRlcjMyLgoKICAgICAgSW4gdGhlIHZhbHVlIHNldCBhbmQgaXRzIHNlbWFudGljcywgdGhpcyB0eXBlIGlzIGVxdWl2YWxlbnQKICAgICAgdG8gdGhlIENvdW50ZXIzMiB0eXBlIG9mIHRoZSBTTUl2Mi4iOwogICAgcmVmZXJlbmNlCiAgICAgIlJGQyAyNTc4OiBTdHJ1Y3R1cmUgb2YgTWFuYWdlbWVudCBJbmZvcm1hdGlvbiBWZXJzaW9uIDIKICAgICAgICAgICAgICAgIChTTUl2MikiOwogIH0KCiAgdHlwZWRlZiB6ZXJvLWJhc2VkLWNvdW50ZXIzMiB7CiAgICB0eXBlIHlhbmc6Y291bnRlcjMyOwogICAgZGVmYXVsdCAiMCI7CiAgICBkZXNjcmlwdGlvbgogICAgICJUaGUgemVyby1iYXNlZC1jb3VudGVyMzIgdHlwZSByZXByZXNlbnRzIGEgY291bnRlcjMyCiAgICAgIHRoYXQgaGFzIHRoZSBkZWZpbmVkICdpbml0aWFsJyB2YWx1ZSB6ZXJvLgoKICAgICAgQSBzY2hlbWEgbm9kZSBvZiB0aGlzIHR5cGUgd2lsbCBiZSBzZXQgdG8gemVybyAoMCkgb24gY3JlYXRpb24KICAgICAgYW5kIHdpbGwgdGhlcmVhZnRlciBpbmNyZWFzZSBtb25vdG9uaWNhbGx5IHVudGlsIGl0IHJlYWNoZXMKICAgICAgYSBtYXhpbXVtIHZhbHVlIG9mIDJeMzItMSAoNDI5NDk2NzI5NSBkZWNpbWFsKSwgd2hlbiBpdAogICAgICB3cmFwcyBhcm91bmQgYW5kIHN0YXJ0cyBpbmNyZWFzaW5nIGFnYWluIGZyb20gemVyby4KCiAgICAgIFByb3ZpZGVkIHRoYXQgYW4gYXBwbGljYXRpb24gZGlzY292ZXJzIGEgbmV3IHNjaGVtYSBub2RlCiAgICAgIG9mIHRoaXMgdHlwZSB3aXRoaW4gdGhlIG1pbmltdW0gdGltZSB0byB3cmFwLCBpdCBjYW4gdXNlIHRoZQogICAgICAnaW5pdGlhbCcgdmFsdWUgYXMgYSBkZWx0YS4gIEl0IGlzIGltcG9ydGFudCBmb3IgYSBtYW5hZ2VtZW50CiAgICAgIHN0YXRpb24gdG8gYmUgYXdhcmUgb2YgdGhpcyBtaW5pbXVtIHRpbWUgYW5kIHRoZSBhY3R1YWwgdGltZQogICAgICBiZXR3ZWVuIHBvbGxzLCBhbmQgdG8gZGlzY2FyZCBkYXRhIGlmIHRoZSBhY3R1YWwgdGltZSBpcyB0b28KICAgICAgbG9uZyBvciB0aGVyZSBpcyBubyBkZWZpbmVkIG1pbmltdW0gdGltZS4KCiAgICAgIEluIHRoZSB2YWx1ZSBzZXQgYW5kIGl0cyBzZW1hbnRpY3MsIHRoaXMgdHlwZSBpcyBlcXVpdmFsZW50CiAgICAgIHRvIHRoZSBaZXJvQmFzZWRDb3VudGVyMzIgdGV4dHVhbCBjb252ZW50aW9uIG9mIHRoZSBTTUl2Mi4iOwogICAgcmVmZXJlbmNlCiAgICAgICJSRkMgNDUwMjogUmVtb3RlIE5ldHdvcmsgTW9uaXRvcmluZyBNYW5hZ2VtZW50IEluZm9ybWF0aW9uCiAgICAgICAgICAgICAgICAgQmFzZSBWZXJzaW9uIDIiOwogIH0KCiAgdHlwZWRlZiBjb3VudGVyNjQgewogICAgdHlwZSB1aW50NjQ7CiAgICBkZXNjcmlwdGlvbgogICAgICJUaGUgY291bnRlcjY0IHR5cGUgcmVwcmVzZW50cyBhIG5vbi1uZWdhdGl2ZSBpbnRlZ2VyCiAgICAgIHRoYXQgbW9ub3RvbmljYWxseSBpbmNyZWFzZXMgdW50aWwgaXQgcmVhY2hlcyBhCiAgICAgIG1heGltdW0gdmFsdWUgb2YgMl42NC0xICgxODQ0Njc0NDA3MzcwOTU1MTYxNSBkZWNpbWFsKSwKICAgICAgd2hlbiBpdCB3cmFwcyBhcm91bmQgYW5kIHN0YXJ0cyBpbmNyZWFzaW5nIGFnYWluIGZyb20gemVyby4KCiAgICAgIENvdW50ZXJzIGhhdmUgbm8gZGVmaW5lZCAnaW5pdGlhbCcgdmFsdWUsIGFuZCB0aHVzLCBhCiAgICAgIHNpbmdsZSB2YWx1ZSBvZiBhIGNvdW50ZXIgaGFzIChpbiBnZW5lcmFsKSBubyBpbmZvcm1hdGlvbgogICAgICBjb250ZW50LiAgRGlzY29udGludWl0aWVzIGluIHRoZSBtb25vdG9uaWNhbGx5IGluY3JlYXNpbmcKICAgICAgdmFsdWUgbm9ybWFsbHkgb2NjdXIgYXQgcmUtaW5pdGlhbGl6YXRpb24gb2YgdGhlCiAgICAgIG1hbmFnZW1lbnQgc3lzdGVtLCBhbmQgYXQgb3RoZXIgdGltZXMgYXMgc3BlY2lmaWVkIGluIHRoZQogICAgICBkZXNjcmlwdGlvbiBvZiBhIHNjaGVtYSBub2RlIHVzaW5nIHRoaXMgdHlwZS4gIElmIHN1Y2gKICAgICAgb3RoZXIgdGltZXMgY2FuIG9jY3VyLCBmb3IgZXhhbXBsZSwgdGhlIGNyZWF0aW9uIG9mCiAgICAgIGEgc2NoZW1hIG5vZGUgb2YgdHlwZSBjb3VudGVyNjQgYXQgdGltZXMgb3RoZXIgdGhhbgogICAgICByZS1pbml0aWFsaXphdGlvbiwgdGhlbiBhIGNvcnJlc3BvbmRpbmcgc2NoZW1hIG5vZGUKICAgICAgc2hvdWxkIGJlIGRlZmluZWQsIHdpdGggYW4gYXBwcm9wcmlhdGUgdHlwZSwgdG8gaW5kaWNhdGUKICAgICAgdGhlIGxhc3QgZGlzY29udGludWl0eS4KCiAgICAgIFRoZSBjb3VudGVyNjQgdHlwZSBzaG91bGQgbm90IGJlIHVzZWQgZm9yIGNvbmZpZ3VyYXRpb24KICAgICAgc2NoZW1hIG5vZGVzLiAgQSBkZWZhdWx0IHN0YXRlbWVudCBTSE9VTEQgTk9UIGJlIHVzZWQgaW4KICAgICAgY29tYmluYXRpb24gd2l0aCB0aGUgdHlwZSBjb3VudGVyNjQuCgogICAgICBJbiB0aGUgdmFsdWUgc2V0IGFuZCBpdHMgc2VtYW50aWNzLCB0aGlzIHR5cGUgaXMgZXF1aXZhbGVudAogICAgICB0byB0aGUgQ291bnRlcjY0IHR5cGUgb2YgdGhlIFNNSXYyLiI7CiAgICByZWZlcmVuY2UKICAgICAiUkZDIDI1Nzg6IFN0cnVjdHVyZSBvZiBNYW5hZ2VtZW50IEluZm9ybWF0aW9uIFZlcnNpb24gMgogICAgICAgICAgICAgICAgKFNNSXYyKSI7CiAgfQoKICB0eXBlZGVmIHplcm8tYmFzZWQtY291bnRlcjY0IHsKICAgIHR5cGUgeWFuZzpjb3VudGVyNjQ7CiAgICBkZWZhdWx0ICIwIjsKICAgIGRlc2NyaXB0aW9uCiAgICAgIlRoZSB6ZXJvLWJhc2VkLWNvdW50ZXI2NCB0eXBlIHJlcHJlc2VudHMgYSBjb3VudGVyNjQgdGhhdAogICAgICBoYXMgdGhlIGRlZmluZWQgJ2luaXRpYWwnIHZhbHVlIHplcm8uCgogICAgICBBIHNjaGVtYSBub2RlIG9mIHRoaXMgdHlwZSB3aWxsIGJlIHNldCB0byB6ZXJvICgwKSBvbiBjcmVhdGlvbgogICAgICBhbmQgd2lsbCB0aGVyZWFmdGVyIGluY3JlYXNlIG1vbm90b25pY2FsbHkgdW50aWwgaXQgcmVhY2hlcwogICAgICBhIG1heGltdW0gdmFsdWUgb2YgMl42NC0xICgxODQ0Njc0NDA3MzcwOTU1MTYxNSBkZWNpbWFsKSwKICAgICAgd2hlbiBpdCB3cmFwcyBhcm91bmQgYW5kIHN0YXJ0cyBpbmNyZWFzaW5nIGFnYWluIGZyb20gemVyby4KCiAgICAgIFByb3ZpZGVkIHRoYXQgYW4gYXBwbGljYXRpb24gZGlzY292ZXJzIGEgbmV3IHNjaGVtYSBub2RlCiAgICAgIG9mIHRoaXMgdHlwZSB3aXRoaW4gdGhlIG1pbmltdW0gdGltZSB0byB3cmFwLCBpdCBjYW4gdXNlIHRoZQogICAgICAnaW5pdGlhbCcgdmFsdWUgYXMgYSBkZWx0YS4gIEl0IGlzIGltcG9ydGFudCBmb3IgYSBtYW5hZ2VtZW50CiAgICAgIHN0YXRpb24gdG8gYmUgYXdhcmUgb2YgdGhpcyBtaW5pbXVtIHRpbWUgYW5kIHRoZSBhY3R1YWwgdGltZQogICAgICBiZXR3ZWVuIHBvbGxzLCBhbmQgdG8gZGlzY2FyZCBkYXRhIGlmIHRoZSBhY3R1YWwgdGltZSBpcyB0b28KICAgICAgbG9uZyBvciB0aGVyZSBpcyBubyBkZWZpbmVkIG1pbmltdW0gdGltZS4KCiAgICAgIEluIHRoZSB2YWx1ZSBzZXQgYW5kIGl0cyBzZW1hbnRpY3MsIHRoaXMgdHlwZSBpcyBlcXVpdmFsZW50CiAgICAgIHRvIHRoZSBaZXJvQmFzZWRDb3VudGVyNjQgdGV4dHVhbCBjb252ZW50aW9uIG9mIHRoZSBTTUl2Mi4iOwogICAgcmVmZXJlbmNlCiAgICAgIlJGQyAyODU2OiBUZXh0dWFsIENvbnZlbnRpb25zIGZvciBBZGRpdGlvbmFsIEhpZ2ggQ2FwYWNpdHkKICAgICAgICAgICAgICAgIERhdGEgVHlwZXMiOwogIH0KCiAgdHlwZWRlZiBnYXVnZTMyIHsKICAgIHR5cGUgdWludDMyOwogICAgZGVzY3JpcHRpb24KICAgICAiVGhlIGdhdWdlMzIgdHlwZSByZXByZXNlbnRzIGEgbm9uLW5lZ2F0aXZlIGludGVnZXIsIHdoaWNoCiAgICAgIG1heSBpbmNyZWFzZSBvciBkZWNyZWFzZSwgYnV0IHNoYWxsIG5ldmVyIGV4Y2VlZCBhIG1heGltdW0KICAgICAgdmFsdWUsIG5vciBmYWxsIGJlbG93IGEgbWluaW11bSB2YWx1ZS4gIFRoZSBtYXhpbXVtIHZhbHVlCiAgICAgIGNhbm5vdCBiZSBncmVhdGVyIHRoYW4gMl4zMi0xICg0Mjk0OTY3Mjk1IGRlY2ltYWwpLCBhbmQKICAgICAgdGhlIG1pbmltdW0gdmFsdWUgY2Fubm90IGJlIHNtYWxsZXIgdGhhbiAwLiAgVGhlIHZhbHVlIG9mCiAgICAgIGEgZ2F1Z2UzMiBoYXMgaXRzIG1heGltdW0gdmFsdWUgd2hlbmV2ZXIgdGhlIGluZm9ybWF0aW9uCiAgICAgIGJlaW5nIG1vZGVsZWQgaXMgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIGl0cyBtYXhpbXVtCiAgICAgIHZhbHVlLCBhbmQgaGFzIGl0cyBtaW5pbXVtIHZhbHVlIHdoZW5ldmVyIHRoZSBpbmZvcm1hdGlvbgogICAgICBiZWluZyBtb2RlbGVkIGlzIHNtYWxsZXIgdGhhbiBvciBlcXVhbCB0byBpdHMgbWluaW11bSB2YWx1ZS4KICAgICAgSWYgdGhlIGluZm9ybWF0aW9uIGJlaW5nIG1vZGVsZWQgc3Vic2VxdWVudGx5IGRlY3JlYXNlcwogICAgICBiZWxvdyAoaW5jcmVhc2VzIGFib3ZlKSB0aGUgbWF4aW11bSAobWluaW11bSkgdmFsdWUsIHRoZQogICAgICBnYXVnZTMyIGFsc28gZGVjcmVhc2VzIChpbmNyZWFzZXMpLgoKICAgICAgSW4gdGhlIHZhbHVlIHNldCBhbmQgaXRzIHNlbWFudGljcywgdGhpcyB0eXBlIGlzIGVxdWl2YWxlbnQKICAgICAgdG8gdGhlIEdhdWdlMzIgdHlwZSBvZiB0aGUgU01JdjIuIjsKICAgIHJlZmVyZW5jZQogICAgICJSRkMgMjU3ODogU3RydWN0dXJlIG9mIE1hbmFnZW1lbnQgSW5mb3JtYXRpb24gVmVyc2lvbiAyCiAgICAgICAgICAgICAgICAoU01JdjIpIjsKICB9CgogIHR5cGVkZWYgZ2F1Z2U2NCB7CiAgICB0eXBlIHVpbnQ2NDsKICAgIGRlc2NyaXB0aW9uCiAgICAgIlRoZSBnYXVnZTY0IHR5cGUgcmVwcmVzZW50cyBhIG5vbi1uZWdhdGl2ZSBpbnRlZ2VyLCB3aGljaAogICAgICBtYXkgaW5jcmVhc2Ugb3IgZGVjcmVhc2UsIGJ1dCBzaGFsbCBuZXZlciBleGNlZWQgYSBtYXhpbXVtCiAgICAgIHZhbHVlLCBub3IgZmFsbCBiZWxvdyBhIG1pbmltdW0gdmFsdWUuICBUaGUgbWF4aW11bSB2YWx1ZQogICAgICBjYW5ub3QgYmUgZ3JlYXRlciB0aGFuIDJeNjQtMSAoMTg0NDY3NDQwNzM3MDk1NTE2MTUpLCBhbmQKICAgICAgdGhlIG1pbmltdW0gdmFsdWUgY2Fubm90IGJlIHNtYWxsZXIgdGhhbiAwLiAgVGhlIHZhbHVlIG9mCiAgICAgIGEgZ2F1Z2U2NCBoYXMgaXRzIG1heGltdW0gdmFsdWUgd2hlbmV2ZXIgdGhlIGluZm9ybWF0aW9uCiAgICAgIGJlaW5nIG1vZGVsZWQgaXMgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIGl0cyBtYXhpbXVtCiAgICAgIHZhbHVlLCBhbmQgaGFzIGl0cyBtaW5pbXVtIHZhbHVlIHdoZW5ldmVyIHRoZSBpbmZvcm1hdGlvbgogICAgICBiZWluZyBtb2RlbGVkIGlzIHNtYWxsZXIgdGhhbiBvciBlcXVhbCB0byBpdHMgbWluaW11bSB2YWx1ZS4KICAgICAgSWYgdGhlIGluZm9ybWF0aW9uIGJlaW5nIG1vZGVsZWQgc3Vic2VxdWVudGx5IGRlY3JlYXNlcwogICAgICBiZWxvdyAoaW5jcmVhc2VzIGFib3ZlKSB0aGUgbWF4aW11bSAobWluaW11bSkgdmFsdWUsIHRoZQogICAgICBnYXVnZTY0IGFsc28gZGVjcmVhc2VzIChpbmNyZWFzZXMpLgoKICAgICAgSW4gdGhlIHZhbHVlIHNldCBhbmQgaXRzIHNlbWFudGljcywgdGhpcyB0eXBlIGlzIGVxdWl2YWxlbnQKICAgICAgdG8gdGhlIENvdW50ZXJCYXNlZEdhdWdlNjQgU01JdjIgdGV4dHVhbCBjb252ZW50aW9uIGRlZmluZWQKICAgICAgaW4gUkZDIDI4NTYiOwogICAgcmVmZXJlbmNlCiAgICAgIlJGQyAyODU2OiBUZXh0dWFsIENvbnZlbnRpb25zIGZvciBBZGRpdGlvbmFsIEhpZ2ggQ2FwYWNpdHkKICAgICAgICAgICAgICAgIERhdGEgVHlwZXMiOwogIH0KCiAgLyoqKiBjb2xsZWN0aW9uIG9mIGlkZW50aWZpZXItcmVsYXRlZCB0eXBlcyAqKiovCgogIHR5cGVkZWYgb2JqZWN0LWlkZW50aWZpZXIgewogICAgdHlwZSBzdHJpbmcgewogICAgICBwYXR0ZXJuICcoKFswLTFdKFwuWzEtM10/WzAtOV0pKXwoMlwuKDB8KFsxLTldXGQqKSkpKScKICAgICAgICAgICAgKyAnKFwuKDB8KFsxLTldXGQqKSkpKic7CiAgICB9CiAgICBkZXNjcmlwdGlvbgogICAgICJUaGUgb2JqZWN0LWlkZW50aWZpZXIgdHlwZSByZXByZXNlbnRzIGFkbWluaXN0cmF0aXZlbHkKICAgICAgYXNzaWduZWQgbmFtZXMgaW4gYSByZWdpc3RyYXRpb24taGllcmFyY2hpY2FsLW5hbWUgdHJlZS4KCiAgICAgIFZhbHVlcyBvZiB0aGlzIHR5cGUgYXJlIGRlbm90ZWQgYXMgYSBzZXF1ZW5jZSBvZiBudW1lcmljYWwKICAgICAgbm9uLW5lZ2F0aXZlIHN1Yi1pZGVudGlmaWVyIHZhbHVlcy4gIEVhY2ggc3ViLWlkZW50aWZpZXIKICAgICAgdmFsdWUgTVVTVCBOT1QgZXhjZWVkIDJeMzItMSAoNDI5NDk2NzI5NSkuICBTdWItaWRlbnRpZmllcnMKICAgICAgYXJlIHNlcGFyYXRlZCBieSBzaW5nbGUgZG90cyBhbmQgd2l0aG91dCBhbnkgaW50ZXJtZWRpYXRlCiAgICAgIHdoaXRlc3BhY2UuCgogICAgICBUaGUgQVNOLjEgc3RhbmRhcmQgcmVzdHJpY3RzIHRoZSB2YWx1ZSBzcGFjZSBvZiB0aGUgZmlyc3QKICAgICAgc3ViLWlkZW50aWZpZXIgdG8gMCwgMSwgb3IgMi4gIEZ1cnRoZXJtb3JlLCB0aGUgdmFsdWUgc3BhY2UKICAgICAgb2YgdGhlIHNlY29uZCBzdWItaWRlbnRpZmllciBpcyByZXN0cmljdGVkIHRvIHRoZSByYW5nZQogICAgICAwIHRvIDM5IGlmIHRoZSBmaXJzdCBzdWItaWRlbnRpZmllciBpcyAwIG9yIDEuICBGaW5hbGx5LAogICAgICB0aGUgQVNOLjEgc3RhbmRhcmQgcmVxdWlyZXMgdGhhdCBhbiBvYmplY3QgaWRlbnRpZmllcgogICAgICBoYXMgYWx3YXlzIGF0IGxlYXN0IHR3byBzdWItaWRlbnRpZmllcnMuICBUaGUgcGF0dGVybgogICAgICBjYXB0dXJlcyB0aGVzZSByZXN0cmljdGlvbnMuCgogICAgICBBbHRob3VnaCB0aGUgbnVtYmVyIG9mIHN1Yi1pZGVudGlmaWVycyBpcyBub3QgbGltaXRlZCwKICAgICAgbW9kdWxlIGRlc2lnbmVycyBzaG91bGQgcmVhbGl6ZSB0aGF0IHRoZXJlIG1heSBiZQogICAgICBpbXBsZW1lbnRhdGlvbnMgdGhhdCBzdGljayB3aXRoIHRoZSBTTUl2MiBsaW1pdCBvZiAxMjgKICAgICAgc3ViLWlkZW50aWZpZXJzLgoKICAgICAgVGhpcyB0eXBlIGlzIGEgc3VwZXJzZXQgb2YgdGhlIFNNSXYyIE9CSkVDVCBJREVOVElGSUVSIHR5cGUKICAgICAgc2luY2UgaXQgaXMgbm90IHJlc3RyaWN0ZWQgdG8gMTI4IHN1Yi1pZGVudGlmaWVycy4gIEhlbmNlLAogICAgICB0aGlzIHR5cGUgU0hPVUxEIE5PVCBiZSB1c2VkIHRvIHJlcHJlc2VudCB0aGUgU01JdjIgT0JKRUNUCiAgICAgIElERU5USUZJRVIgdHlwZTsgdGhlIG9iamVjdC1pZGVudGlmaWVyLTEyOCB0eXBlIFNIT1VMRCBiZQogICAgICB1c2VkIGluc3RlYWQuIjsKICAgIHJlZmVyZW5jZQogICAgICJJU085ODM0LTE6IEluZm9ybWF0aW9uIHRlY2hub2xvZ3kgLS0gT3BlbiBTeXN0ZW1zCiAgICAgIEludGVyY29ubmVjdGlvbiAtLSBQcm9jZWR1cmVzIGZvciB0aGUgb3BlcmF0aW9uIG9mIE9TSQogICAgICBSZWdpc3RyYXRpb24gQXV0aG9yaXRpZXM6IEdlbmVyYWwgcHJvY2VkdXJlcyBhbmQgdG9wCiAgICAgIGFyY3Mgb2YgdGhlIEFTTi4xIE9iamVjdCBJZGVudGlmaWVyIHRyZWUiOwogIH0KCiAgdHlwZWRlZiBvYmplY3QtaWRlbnRpZmllci0xMjggewogICAgdHlwZSBvYmplY3QtaWRlbnRpZmllciB7CiAgICAgIHBhdHRlcm4gJ1xkKihcLlxkKil7MSwxMjd9JzsKICAgIH0KICAgIGRlc2NyaXB0aW9uCiAgICAgIlRoaXMgdHlwZSByZXByZXNlbnRzIG9iamVjdC1pZGVudGlmaWVycyByZXN0cmljdGVkIHRvIDEyOAogICAgICBzdWItaWRlbnRpZmllcnMuCgogICAgICBJbiB0aGUgdmFsdWUgc2V0IGFuZCBpdHMgc2VtYW50aWNzLCB0aGlzIHR5cGUgaXMgZXF1aXZhbGVudAogICAgICB0byB0aGUgT0JKRUNUIElERU5USUZJRVIgdHlwZSBvZiB0aGUgU01JdjIuIjsKICAgIHJlZmVyZW5jZQogICAgICJSRkMgMjU3ODogU3RydWN0dXJlIG9mIE1hbmFnZW1lbnQgSW5mb3JtYXRpb24gVmVyc2lvbiAyCiAgICAgICAgICAgICAgICAoU01JdjIpIjsKICB9CgogIHR5cGVkZWYgeWFuZy1pZGVudGlmaWVyIHsKICAgIHR5cGUgc3RyaW5nIHsKICAgICAgbGVuZ3RoICIxLi5tYXgiOwogICAgICBwYXR0ZXJuICdbYS16QS1aX11bYS16QS1aMC05XC1fLl0qJzsKICAgICAgcGF0dGVybiAnLnwuLnxbXnhYXS4qfC5bXm1NXS4qfC4uW15sTF0uKic7CiAgICB9CiAgICBkZXNjcmlwdGlvbgogICAgICAiQSBZQU5HIGlkZW50aWZpZXIgc3RyaW5nIGFzIGRlZmluZWQgYnkgdGhlICdpZGVudGlmaWVyJwogICAgICAgcnVsZSBpbiBTZWN0aW9uIDEyIG9mIFJGQyA2MDIwLiAgQW4gaWRlbnRpZmllciBtdXN0CiAgICAgICBzdGFydCB3aXRoIGFuIGFscGhhYmV0aWMgY2hhcmFjdGVyIG9yIGFuIHVuZGVyc2NvcmUKICAgICAgIGZvbGxvd2VkIGJ5IGFuIGFyYml0cmFyeSBzZXF1ZW5jZSBvZiBhbHBoYWJldGljIG9yCiAgICAgICBudW1lcmljIGNoYXJhY3RlcnMsIHVuZGVyc2NvcmVzLCBoeXBoZW5zLCBvciBkb3RzLgoKICAgICAgIEEgWUFORyBpZGVudGlmaWVyIE1VU1QgTk9UIHN0YXJ0IHdpdGggYW55IHBvc3NpYmxlCiAgICAgICBjb21iaW5hdGlvbiBvZiB0aGUgbG93ZXJjYXNlIG9yIHVwcGVyY2FzZSBjaGFyYWN0ZXIKICAgICAgIHNlcXVlbmNlICd4bWwnLiI7CiAgICByZWZlcmVuY2UKICAgICAgIlJGQyA2MDIwOiBZQU5HIC0gQSBEYXRhIE1vZGVsaW5nIExhbmd1YWdlIGZvciB0aGUgTmV0d29yawogICAgICAgICAgICAgICAgIENvbmZpZ3VyYXRpb24gUHJvdG9jb2wgKE5FVENPTkYpIjsKICB9CgogIC8qKiogY29sbGVjdGlvbiBvZiB0eXBlcyByZWxhdGVkIHRvIGRhdGUgYW5kIHRpbWUqKiovCgogIHR5cGVkZWYgZGF0ZS1hbmQtdGltZSB7CiAgICB0eXBlIHN0cmluZyB7CiAgICAgIHBhdHRlcm4gJ1xkezR9LVxkezJ9LVxkezJ9VFxkezJ9OlxkezJ9OlxkezJ9KFwuXGQrKT8nCiAgICAgICAgICAgICsgJyhafFtcK1wtXVxkezJ9OlxkezJ9KSc7CiAgICB9CiAgICBkZXNjcmlwdGlvbgogICAgICJUaGUgZGF0ZS1hbmQtdGltZSB0eXBlIGlzIGEgcHJvZmlsZSBvZiB0aGUgSVNPIDg2MDEKICAgICAgc3RhbmRhcmQgZm9yIHJlcHJlc2VudGF0aW9uIG9mIGRhdGVzIGFuZCB0aW1lcyB1c2luZyB0aGUKICAgICAgR3JlZ29yaWFuIGNhbGVuZGFyLiAgVGhlIHByb2ZpbGUgaXMgZGVmaW5lZCBieSB0aGUKICAgICAgZGF0ZS10aW1lIHByb2R1Y3Rpb24gaW4gU2VjdGlvbiA1LjYgb2YgUkZDIDMzMzkuCgogICAgICBUaGUgZGF0ZS1hbmQtdGltZSB0eXBlIGlzIGNvbXBhdGlibGUgd2l0aCB0aGUgZGF0ZVRpbWUgWE1MCiAgICAgIHNjaGVtYSB0eXBlIHdpdGggdGhlIGZvbGxvd2luZyBub3RhYmxlIGV4Y2VwdGlvbnM6CgogICAgICAoYSkgVGhlIGRhdGUtYW5kLXRpbWUgdHlwZSBkb2VzIG5vdCBhbGxvdyBuZWdhdGl2ZSB5ZWFycy4KCiAgICAgIChiKSBUaGUgZGF0ZS1hbmQtdGltZSB0aW1lLW9mZnNldCAtMDA6MDAgaW5kaWNhdGVzIGFuIHVua25vd24KICAgICAgICAgIHRpbWUgem9uZSAoc2VlIFJGQyAzMzM5KSB3aGlsZSAtMDA6MDAgYW5kICswMDowMCBhbmQgWgogICAgICAgICAgYWxsIHJlcHJlc2VudCB0aGUgc2FtZSB0aW1lIHpvbmUgaW4gZGF0ZVRpbWUuCgogICAgICAoYykgVGhlIGNhbm9uaWNhbCBmb3JtYXQgKHNlZSBiZWxvdykgb2YgZGF0YS1hbmQtdGltZSB2YWx1ZXMKICAgICAgICAgIGRpZmZlcnMgZnJvbSB0aGUgY2Fub25pY2FsIGZvcm1hdCB1c2VkIGJ5IHRoZSBkYXRlVGltZSBYTUwKICAgICAgICAgIHNjaGVtYSB0eXBlLCB3aGljaCByZXF1aXJlcyBhbGwgdGltZXMgdG8gYmUgaW4gVVRDIHVzaW5nCiAgICAgICAgICB0aGUgdGltZS1vZmZzZXQgJ1onLgoKICAgICAgVGhpcyB0eXBlIGlzIG5vdCBlcXVpdmFsZW50IHRvIHRoZSBEYXRlQW5kVGltZSB0ZXh0dWFsCiAgICAgIGNvbnZlbnRpb24gb2YgdGhlIFNNSXYyIHNpbmNlIFJGQyAzMzM5IHVzZXMgYSBkaWZmZXJlbnQKICAgICAgc2VwYXJhdG9yIGJldHdlZW4gZnVsbC1kYXRlIGFuZCBmdWxsLXRpbWUgYW5kIHByb3ZpZGVzCiAgICAgIGhpZ2hlciByZXNvbHV0aW9uIG9mIHRpbWUtc2VjZnJhYy4KCiAgICAgIFRoZSBjYW5vbmljYWwgZm9ybWF0IGZvciBkYXRlLWFuZC10aW1lIHZhbHVlcyB3aXRoIGEga25vd24gdGltZQogICAgICB6b25lIHVzZXMgYSBudW1lcmljIHRpbWUgem9uZSBvZmZzZXQgdGhhdCBpcyBjYWxjdWxhdGVkIHVzaW5nCiAgICAgIHRoZSBkZXZpY2UncyBjb25maWd1cmVkIGtub3duIG9mZnNldCB0byBVVEMgdGltZS4gIEEgY2hhbmdlIG9mCiAgICAgIHRoZSBkZXZpY2UncyBvZmZzZXQgdG8gVVRDIHRpbWUgd2lsbCBjYXVzZSBkYXRlLWFuZC10aW1lIHZhbHVlcwogICAgICB0byBjaGFuZ2UgYWNjb3JkaW5nbHkuICBTdWNoIGNoYW5nZXMgbWlnaHQgaGFwcGVuIHBlcmlvZGljYWxseQogICAgICBpbiBjYXNlIGEgc2VydmVyIGZvbGxvd3MgYXV0b21hdGljYWxseSBkYXlsaWdodCBzYXZpbmcgdGltZQogICAgICAoRFNUKSB0aW1lIHpvbmUgb2Zmc2V0IGNoYW5nZXMuICBUaGUgY2Fub25pY2FsIGZvcm1hdCBmb3IKICAgICAgZGF0ZS1hbmQtdGltZSB2YWx1ZXMgd2l0aCBhbiB1bmtub3duIHRpbWUgem9uZSAodXN1YWxseQogICAgICByZWZlcnJpbmcgdG8gdGhlIG5vdGlvbiBvZiBsb2NhbCB0aW1lKSB1c2VzIHRoZSB0aW1lLW9mZnNldAogICAgICAtMDA6MDAuIjsKICAgIHJlZmVyZW5jZQogICAgICJSRkMgMzMzOTogRGF0ZSBhbmQgVGltZSBvbiB0aGUgSW50ZXJuZXQ6IFRpbWVzdGFtcHMKICAgICAgUkZDIDI1Nzk6IFRleHR1YWwgQ29udmVudGlvbnMgZm9yIFNNSXYyCiAgICAgIFhTRC1UWVBFUzogWE1MIFNjaGVtYSBQYXJ0IDI6IERhdGF0eXBlcyBTZWNvbmQgRWRpdGlvbiI7CiAgfQoKICB0eXBlZGVmIHRpbWV0aWNrcyB7CiAgICB0eXBlIHVpbnQzMjsKICAgIGRlc2NyaXB0aW9uCiAgICAgIlRoZSB0aW1ldGlja3MgdHlwZSByZXByZXNlbnRzIGEgbm9uLW5lZ2F0aXZlIGludGVnZXIgdGhhdAogICAgICByZXByZXNlbnRzIHRoZSB0aW1lLCBtb2R1bG8gMl4zMiAoNDI5NDk2NzI5NiBkZWNpbWFsKSwgaW4KICAgICAgaHVuZHJlZHRocyBvZiBhIHNlY29uZCBiZXR3ZWVuIHR3byBlcG9jaHMuICBXaGVuIGEgc2NoZW1hCiAgICAgIG5vZGUgaXMgZGVmaW5lZCB0aGF0IHVzZXMgdGhpcyB0eXBlLCB0aGUgZGVzY3JpcHRpb24gb2YKICAgICAgdGhlIHNjaGVtYSBub2RlIGlkZW50aWZpZXMgYm90aCBvZiB0aGUgcmVmZXJlbmNlIGVwb2Nocy4KCiAgICAgIEluIHRoZSB2YWx1ZSBzZXQgYW5kIGl0cyBzZW1hbnRpY3MsIHRoaXMgdHlwZSBpcyBlcXVpdmFsZW50CiAgICAgIHRvIHRoZSBUaW1lVGlja3MgdHlwZSBvZiB0aGUgU01JdjIuIjsKICAgIHJlZmVyZW5jZQogICAgICJSRkMgMjU3ODogU3RydWN0dXJlIG9mIE1hbmFnZW1lbnQgSW5mb3JtYXRpb24gVmVyc2lvbiAyCiAgICAgICAgICAgICAgICAoU01JdjIpIjsKICB9CgogIHR5cGVkZWYgdGltZXN0YW1wIHsKICAgIHR5cGUgeWFuZzp0aW1ldGlja3M7CiAgICBkZXNjcmlwdGlvbgogICAgICJUaGUgdGltZXN0YW1wIHR5cGUgcmVwcmVzZW50cyB0aGUgdmFsdWUgb2YgYW4gYXNzb2NpYXRlZAogICAgICB0aW1ldGlja3Mgc2NoZW1hIG5vZGUgYXQgd2hpY2ggYSBzcGVjaWZpYyBvY2N1cnJlbmNlCiAgICAgIGhhcHBlbmVkLiAgVGhlIHNwZWNpZmljIG9jY3VycmVuY2UgbXVzdCBiZSBkZWZpbmVkIGluIHRoZQogICAgICBkZXNjcmlwdGlvbiBvZiBhbnkgc2NoZW1hIG5vZGUgZGVmaW5lZCB1c2luZyB0aGlzIHR5cGUuICBXaGVuCiAgICAgIHRoZSBzcGVjaWZpYyBvY2N1cnJlbmNlIG9jY3VycmVkIHByaW9yIHRvIHRoZSBsYXN0IHRpbWUgdGhlCiAgICAgIGFzc29jaWF0ZWQgdGltZXRpY2tzIGF0dHJpYnV0ZSB3YXMgemVybywgdGhlbiB0aGUgdGltZXN0YW1wCiAgICAgIHZhbHVlIGlzIHplcm8uICBOb3RlIHRoYXQgdGhpcyByZXF1aXJlcyBhbGwgdGltZXN0YW1wIHZhbHVlcwogICAgICB0byBiZSByZXNldCB0byB6ZXJvIHdoZW4gdGhlIHZhbHVlIG9mIHRoZSBhc3NvY2lhdGVkIHRpbWV0aWNrcwogICAgICBhdHRyaWJ1dGUgcmVhY2hlcyA0OTcrIGRheXMgYW5kIHdyYXBzIGFyb3VuZCB0byB6ZXJvLgoKICAgICAgVGhlIGFzc29jaWF0ZWQgdGltZXRpY2tzIHNjaGVtYSBub2RlIG11c3QgYmUgc3BlY2lmaWVkCiAgICAgIGluIHRoZSBkZXNjcmlwdGlvbiBvZiBhbnkgc2NoZW1hIG5vZGUgdXNpbmcgdGhpcyB0eXBlLgoKICAgICAgSW4gdGhlIHZhbHVlIHNldCBhbmQgaXRzIHNlbWFudGljcywgdGhpcyB0eXBlIGlzIGVxdWl2YWxlbnQKICAgICAgdG8gdGhlIFRpbWVTdGFtcCB0ZXh0dWFsIGNvbnZlbnRpb24gb2YgdGhlIFNNSXYyLiI7CiAgICByZWZlcmVuY2UKICAgICAiUkZDIDI1Nzk6IFRleHR1YWwgQ29udmVudGlvbnMgZm9yIFNNSXYyIjsKICB9CgogIC8qKiogY29sbGVjdGlvbiBvZiBnZW5lcmljIGFkZHJlc3MgdHlwZXMgKioqLwoKICB0eXBlZGVmIHBoeXMtYWRkcmVzcyB7CiAgICB0eXBlIHN0cmluZyB7CiAgICAgIHBhdHRlcm4gJyhbMC05YS1mQS1GXXsyfSg6WzAtOWEtZkEtRl17Mn0pKik/JzsKICAgIH0KCiAgICBkZXNjcmlwdGlvbgogICAgICJSZXByZXNlbnRzIG1lZGlhLSBvciBwaHlzaWNhbC1sZXZlbCBhZGRyZXNzZXMgcmVwcmVzZW50ZWQKICAgICAgYXMgYSBzZXF1ZW5jZSBvY3RldHMsIGVhY2ggb2N0ZXQgcmVwcmVzZW50ZWQgYnkgdHdvIGhleGFkZWNpbWFsCiAgICAgIG51bWJlcnMuICBPY3RldHMgYXJlIHNlcGFyYXRlZCBieSBjb2xvbnMuICBUaGUgY2Fub25pY2FsCiAgICAgIHJlcHJlc2VudGF0aW9uIHVzZXMgbG93ZXJjYXNlIGNoYXJhY3RlcnMuCgogICAgICBJbiB0aGUgdmFsdWUgc2V0IGFuZCBpdHMgc2VtYW50aWNzLCB0aGlzIHR5cGUgaXMgZXF1aXZhbGVudAogICAgICB0byB0aGUgUGh5c0FkZHJlc3MgdGV4dHVhbCBjb252ZW50aW9uIG9mIHRoZSBTTUl2Mi4iOwogICAgcmVmZXJlbmNlCiAgICAgIlJGQyAyNTc5OiBUZXh0dWFsIENvbnZlbnRpb25zIGZvciBTTUl2MiI7CiAgfQoKICB0eXBlZGVmIG1hYy1hZGRyZXNzIHsKICAgIHR5cGUgc3RyaW5nIHsKICAgICAgcGF0dGVybiAnWzAtOWEtZkEtRl17Mn0oOlswLTlhLWZBLUZdezJ9KXs1fSc7CiAgICB9CiAgICBkZXNjcmlwdGlvbgogICAgICJUaGUgbWFjLWFkZHJlc3MgdHlwZSByZXByZXNlbnRzIGFuIElFRUUgODAyIE1BQyBhZGRyZXNzLgogICAgICBUaGUgY2Fub25pY2FsIHJlcHJlc2VudGF0aW9uIHVzZXMgbG93ZXJjYXNlIGNoYXJhY3RlcnMuCgogICAgICBJbiB0aGUgdmFsdWUgc2V0IGFuZCBpdHMgc2VtYW50aWNzLCB0aGlzIHR5cGUgaXMgZXF1aXZhbGVudAogICAgICB0byB0aGUgTWFjQWRkcmVzcyB0ZXh0dWFsIGNvbnZlbnRpb24gb2YgdGhlIFNNSXYyLiI7CiAgICByZWZlcmVuY2UKICAgICAiSUVFRSA4MDI6IElFRUUgU3RhbmRhcmQgZm9yIExvY2FsIGFuZCBNZXRyb3BvbGl0YW4gQXJlYQogICAgICAgICAgICAgICAgTmV0d29ya3M6IE92ZXJ2aWV3IGFuZCBBcmNoaXRlY3R1cmUKICAgICAgUkZDIDI1Nzk6IFRleHR1YWwgQ29udmVudGlvbnMgZm9yIFNNSXYyIjsKICB9CgogIC8qKiogY29sbGVjdGlvbiBvZiBYTUwtc3BlY2lmaWMgdHlwZXMgKioqLwoKICB0eXBlZGVmIHhwYXRoMS4wIHsKICAgIHR5cGUgc3RyaW5nOwogICAgZGVzY3JpcHRpb24KICAgICAiVGhpcyB0eXBlIHJlcHJlc2VudHMgYW4gWFBBVEggMS4wIGV4cHJlc3Npb24uCgogICAgICBXaGVuIGEgc2NoZW1hIG5vZGUgaXMgZGVmaW5lZCB0aGF0IHVzZXMgdGhpcyB0eXBlLCB0aGUKICAgICAgZGVzY3JpcHRpb24gb2YgdGhlIHNjaGVtYSBub2RlIE1VU1Qgc3BlY2lmeSB0aGUgWFBhdGgKICAgICAgY29udGV4dCBpbiB3aGljaCB0aGUgWFBhdGggZXhwcmVzc2lvbiBpcyBldmFsdWF0ZWQuIjsKICAgIHJlZmVyZW5jZQogICAgICJYUEFUSDogWE1MIFBhdGggTGFuZ3VhZ2UgKFhQYXRoKSBWZXJzaW9uIDEuMCI7CiAgfQoKICAvKioqIGNvbGxlY3Rpb24gb2Ygc3RyaW5nIHR5cGVzICoqKi8KCiAgdHlwZWRlZiBoZXgtc3RyaW5nIHsKICAgIHR5cGUgc3RyaW5nIHsKICAgICAgcGF0dGVybiAnKFswLTlhLWZBLUZdezJ9KDpbMC05YS1mQS1GXXsyfSkqKT8nOwogICAgfQogICAgZGVzY3JpcHRpb24KICAgICAiQSBoZXhhZGVjaW1hbCBzdHJpbmcgd2l0aCBvY3RldHMgcmVwcmVzZW50ZWQgYXMgaGV4IGRpZ2l0cwogICAgICBzZXBhcmF0ZWQgYnkgY29sb25zLiAgVGhlIGNhbm9uaWNhbCByZXByZXNlbnRhdGlvbiB1c2VzCiAgICAgIGxvd2VyY2FzZSBjaGFyYWN0ZXJzLiI7CiAgfQoKICB0eXBlZGVmIHV1aWQgewogICAgdHlwZSBzdHJpbmcgewogICAgICBwYXR0ZXJuICdbMC05YS1mQS1GXXs4fS1bMC05YS1mQS1GXXs0fS1bMC05YS1mQS1GXXs0fS0nCiAgICAgICAgICAgICsgJ1swLTlhLWZBLUZdezR9LVswLTlhLWZBLUZdezEyfSc7CiAgICB9CiAgICBkZXNjcmlwdGlvbgogICAgICJBIFVuaXZlcnNhbGx5IFVuaXF1ZSBJRGVudGlmaWVyIGluIHRoZSBzdHJpbmcgcmVwcmVzZW50YXRpb24KICAgICAgZGVmaW5lZCBpbiBSRkMgNDEyMi4gIFRoZSBjYW5vbmljYWwgcmVwcmVzZW50YXRpb24gdXNlcwogICAgICBsb3dlcmNhc2UgY2hhcmFjdGVycy4KCiAgICAgIFRoZSBmb2xsb3dpbmcgaXMgYW4gZXhhbXBsZSBvZiBhIFVVSUQgaW4gc3RyaW5nIHJlcHJlc2VudGF0aW9uOgogICAgICBmODFkNGZhZS03ZGVjLTExZDAtYTc2NS0wMGEwYzkxZTZiZjYKICAgICAgIjsKICAgIHJlZmVyZW5jZQogICAgICJSRkMgNDEyMjogQSBVbml2ZXJzYWxseSBVbmlxdWUgSURlbnRpZmllciAoVVVJRCkgVVJOCiAgICAgICAgICAgICAgICBOYW1lc3BhY2UiOwogIH0KCiAgdHlwZWRlZiBkb3R0ZWQtcXVhZCB7CiAgICB0eXBlIHN0cmluZyB7CiAgICAgIHBhdHRlcm4KICAgICAgICAnKChbMC05XXxbMS05XVswLTldfDFbMC05XVswLTldfDJbMC00XVswLTldfDI1WzAtNV0pXC4pezN9JwogICAgICArICcoWzAtOV18WzEtOV1bMC05XXwxWzAtOV1bMC05XXwyWzAtNF1bMC05XXwyNVswLTVdKSc7CiAgICB9CiAgICBkZXNjcmlwdGlvbgogICAgICAiQW4gdW5zaWduZWQgMzItYml0IG51bWJlciBleHByZXNzZWQgaW4gdGhlIGRvdHRlZC1xdWFkCiAgICAgICBub3RhdGlvbiwgaS5lLiwgZm91ciBvY3RldHMgd3JpdHRlbiBhcyBkZWNpbWFsIG51bWJlcnMKICAgICAgIGFuZCBzZXBhcmF0ZWQgd2l0aCB0aGUgJy4nIChmdWxsIHN0b3ApIGNoYXJhY3Rlci4iOwogIH0KfQo=
-o-ran-smo-teiv-cloud urn:o-ran:smo-teiv-cloud CLOUD [] 2024-07-15 bW9kdWxlIG8tcmFuLXNtby10ZWl2LWNsb3VkIHsKICAgIHlhbmctdmVyc2lvbiAxLjE7CiAgICBuYW1lc3BhY2UgInVybjpvLXJhbjpzbW8tdGVpdi1jbG91ZCI7CiAgICBwcmVmaXggb3ItdGVpdi1jbG91ZDsKCiAgICBpbXBvcnQgby1yYW4tc21vLXRlaXYtY29tbW9uLXlhbmctdHlwZXMge3ByZWZpeCBvci10ZWl2LXR5cGVzOyB9CgogICAgaW1wb3J0IG8tcmFuLXNtby10ZWl2LWNvbW1vbi15YW5nLWV4dGVuc2lvbnMge3ByZWZpeCBvci10ZWl2LXlleHQ7IH0KCiAgICBpbXBvcnQgaWV0Zi1nZW8tbG9jYXRpb24gewogICAgICAgIHByZWZpeCBnZW87CiAgICAgICAgcmVmZXJlbmNlICJSRkMgOTE3OTogQSBZQU5HIEdyb3VwaW5nIGZvciBHZW9ncmFwaGljIExvY2F0aW9ucyI7CiAgICB9CgogICAgb3JnYW5pemF0aW9uICJPUkFOIjsKICAgIGNvbnRhY3QgIlRoZSBBdXRob3JzIjsKICAgIGRlc2NyaXB0aW9uCiAgICAgICAgIlJBTiBDbG91ZCB0b3BvbG9neSBtb2RlbC4KCiAgICAgICAgVGhpcyBtb2RlbCBjb250YWlucyB0aGUgdG9wb2xvZ3kgZW50aXRpZXMgYW5kIHJlbGF0aW9ucyBpbiB0aGUKICAgICAgICBSQU4gQ0xPVUQgZG9tYWluLCB3aGljaCBjb21wcmlzZXMgY2xvdWQgaW5mcmFzdHJ1Y3R1cmUgYW5kCiAgICAgICAgZGVwbG95bWVudCBhc3BlY3RzIHRoYXQgY2FuIGJlIHVzZWQgaW4gdGhlIHRvcG9sb2d5IG1vZGVsLgoKICAgICAgICBDb3B5cmlnaHQgKEMpIDIwMjQgRXJpY3Nzb24KICAgICAgICBNb2RpZmljYXRpb25zIENvcHlyaWdodCAoQykgMjAyNCBPcGVuSW5mcmEgRm91bmRhdGlvbiBFdXJvcGUKCiAgICAgICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTsKICAgICAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAgICAgICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CgogICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAoKICAgICAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAgICAgICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLAogICAgICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgogICAgICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKICAgICAgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KCiAgICAgICAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAiOwoKICAgIHJldmlzaW9uICIyMDI0LTA1LTAyIiB7CiAgICAgICAgZGVzY3JpcHRpb24gIkluaXRpYWwgcmV2aXNpb24uIjsKICAgICAgICBvci10ZWl2LXlleHQ6bGFiZWwgMC4zLjA7CiAgICB9CgogICAgcmV2aXNpb24gIjIwMjQtMDctMTUiIHsKICAgICAgICBkZXNjcmlwdGlvbiAiVGhpcyByZXZpc2lvbiBhbGlnbnMgTy1SQU4gV29yayBHcm91cCAxMCBTdGFnZSAyIFNwZWNpZmljYXRpb24gKE8tUkFOLldHMTAuVEUmSVYtQ0lNSS4wLVIwMDQudjAyLjAwKSI7CiAgICAgICAgb3ItdGVpdi15ZXh0OmxhYmVsIDAuNC4wOwogICAgfQoKICAgIG9yLXRlaXYteWV4dDpkb21haW4gQ0xPVUQ7CgogICAgbGlzdCBDbG91ZGlmaWVkTkYgewogICAgICAgIGRlc2NyaXB0aW9uICJBIFJBTiBOZXR3b3JrIEZ1bmN0aW9uIHNvZnR3YXJlIHRoYXQgaXMgZGVwbG95ZWQgaW4gdGhlIE8tQ2xvdWQgdmlhIG9uZSBvciBtb3JlIE5GIERlcGxveW1lbnRzLiI7CgogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICAgICAga2V5IGlkOwoKICAgICAgICBjb250YWluZXIgYXR0cmlidXRlcyB7CiAgICAgICAgICAgIGxlYWYgbmFtZSB7CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiTmFtZSBvZiBDbG91ZGlmaWVkIE5GIjsKICAgICAgICAgICAgICAgIHR5cGUgc3RyaW5nOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIGxpc3QgTkZEZXBsb3ltZW50IHsKICAgICAgICBkZXNjcmlwdGlvbiAiQSBzb2Z0d2FyZSBkZXBsb3ltZW50IG9uIE8tQ2xvdWQgcmVzb3VyY2VzIHRoYXQgcmVhbGl6ZXMsIGFsbCBvciBwYXJ0IG9mLCBhIENsb3VkaWZpZWQgTkYuIjsKCiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOlRvcF9HcnBfVHlwZTsKICAgICAgICBrZXkgaWQ7CgogICAgICAgIGNvbnRhaW5lciBhdHRyaWJ1dGVzIHsKICAgICAgICAgICAgbGVhZiBuYW1lIHsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJOYW1lIG9mIE5GIERlcGxveW1lbnQiOwogICAgICAgICAgICAgICAgdHlwZSBzdHJpbmc7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgbGlzdCBPQ2xvdWROYW1lc3BhY2UgewogICAgICAgIGRlc2NyaXB0aW9uICJPQ2xvdWROYW1lc3BhY2UgcHJvdmlkZSBhIG1lY2hhbmlzbSBmb3IgaXNvbGF0aW5nCiAgICAgICAgZ3JvdXBzIG9mIHJlc291cmNlcyB3aXRoaW4gYSBzaW5nbGUgY2x1c3Rlci4iOwoKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6VG9wX0dycF9UeXBlOwogICAgICAgIGtleSBpZDsKCiAgICAgICAgY29udGFpbmVyIGF0dHJpYnV0ZXMgewogICAgICAgICAgICBsZWFmIG5hbWUgewogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIk5hbWUgb2YgQ2xvdWQgTmFtZXNwYWNlIjsKICAgICAgICAgICAgICAgIHR5cGUgc3RyaW5nOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIGxpc3QgTm9kZUNsdXN0ZXIgewogICAgICAgIGRlc2NyaXB0aW9uICJBIE5vZGVDbHVzdGVyIG1hbmFnZXMgYSBjb2xsZWN0aW9uIG9mIE5vZGVzLiI7CgogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICAgICAga2V5IGlkOwoKICAgICAgICBjb250YWluZXIgYXR0cmlidXRlcyB7CiAgICAgICAgICAgIGxlYWYgbmFtZSB7CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiTmFtZSBvZiBOb2RlIENsdXN0ZXIiOwogICAgICAgICAgICAgICAgdHlwZSBzdHJpbmc7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgbGlzdCBPQ2xvdWRTaXRlIHsKICAgICAgICBkZXNjcmlwdGlvbiAiUmVwcmVzZW50cyB0aGUgaW5mcmFzdHJ1Y3R1cmUgdGhhdAogICAgICAgIGhvc3RzIHRoZSBORiBEZXBsb3ltZW50LiI7CgogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICAgICAga2V5IGlkOwoKICAgICAgICBjb250YWluZXIgYXR0cmlidXRlcyB7CiAgICAgICAgICAgIGxlYWYgbmFtZSB7CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiTmFtZSBvZiBDbG91ZCBTaXRlIjsKICAgICAgICAgICAgICAgIHR5cGUgc3RyaW5nOwogICAgICAgICAgICB9CgogICAgICAgICAgICB1c2VzIGdlbzpnZW8tbG9jYXRpb247CiAgICAgICAgfQogICAgfQoKCiAgICBvci10ZWl2LXlleHQ6YmlEaXJlY3Rpb25hbFRvcG9sb2d5UmVsYXRpb25zaGlwIENMT1VESUZJRURORl9DT01QUklTRVNfTkZERVBMT1lNRU5UIHsgLy8gMSB0byAxLi5uCgogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICAgICAga2V5IGlkOwoKICAgICAgICBsZWFmLWxpc3QgY29tcHJpc2VkLW5GRGVwbG95bWVudCB7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJDbG91ZGlmaWVkIE5GIGNvbXByaXNlcyBvZiB0aGVzZSBORiBEZXBsb3ltZW50LiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDphU2lkZSBDbG91ZGlmaWVkTkY7CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICAgICAgbWluLWVsZW1lbnRzIDE7CiAgICAgICAgfQoKICAgICAgICBsZWFmIGNvbXByaXNlZC1ieS1jbG91ZGlmaWVkTkYgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiTkYgRGVwbG95bWVudCBwYXJ0IG9mIENsb3VkaWZpZWQgTkYuIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmJTaWRlIE5GRGVwbG95bWVudDsKICAgICAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgICAgICBtYW5kYXRvcnkgdHJ1ZTsKICAgICAgICB9CiAgICB9CgogICAgb3ItdGVpdi15ZXh0OmJpRGlyZWN0aW9uYWxUb3BvbG9neVJlbGF0aW9uc2hpcCBORkRFUExPWU1FTlRfREVQTE9ZRURfT05fT0NMT1VETkFNRVNQQUNFIHsgLy8gMS4ubiB0byAxLi5uCgogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICAgICAga2V5IGlkOwoKICAgICAgICBsZWFmLWxpc3QgZGVwbG95ZWQtb24tb2Nsb3VkTmFtZXNwYWNlIHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIk5GIERlcGxveW1lbnQgZGVwbG95ZWQgb24gTy1DbG91ZCBOYW1lc3BhY2UuIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmFTaWRlIE5GRGVwbG95bWVudDsKICAgICAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgICAgICBtaW4tZWxlbWVudHMgMTsKICAgICAgICB9CgogICAgICAgIGxlYWYtbGlzdCBkZXBsb3llZC1uRkRlcGxveW1lbnQgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiT0Nsb3VkIE5hbWVzcGFjZSBkZXBsb3lzIE5GIERlcGxveW1lbnQuIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmJTaWRlIE9DbG91ZE5hbWVzcGFjZTsKICAgICAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgICAgICBtaW4tZWxlbWVudHMgMTsKICAgICAgICB9CiAgICB9CgogICAgb3ItdGVpdi15ZXh0OmJpRGlyZWN0aW9uYWxUb3BvbG9neVJlbGF0aW9uc2hpcCBPQ0xPVUROQU1FU1BBQ0VfREVQTE9ZRURfT05fTk9ERUNMVVNURVIgeyAvLyAxLi5uIHRvIDEKCiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOlRvcF9HcnBfVHlwZTsKICAgICAgICBrZXkgaWQ7CgogICAgICAgIGxlYWYgZGVwbG95ZWQtb24tbm9kZUNsdXN0ZXIgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiTy1DbG91ZCBOYW1lc3BhY2UgZGVwbG95ZWQgb24gTm9kZSBDbHVzdGVyLiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDphU2lkZSBPQ2xvdWROYW1lc3BhY2U7CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICAgICAgbWFuZGF0b3J5IHRydWU7CiAgICAgICAgfQoKICAgICAgICBsZWFmLWxpc3QgZGVwbG95ZWQtb2Nsb3VkTmFtZXNwYWNlIHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIk5vZGUgQ2x1c3RlciBkZXBsb3lzIE8tQ2xvdWQgTmFtZXNwYWNlLiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDpiU2lkZSBOb2RlQ2x1c3RlcjsKICAgICAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgICAgICBtaW4tZWxlbWVudHMgMTsKICAgICAgICB9CiAgICB9CgogICAgb3ItdGVpdi15ZXh0OmJpRGlyZWN0aW9uYWxUb3BvbG9neVJlbGF0aW9uc2hpcCBOT0RFQ0xVU1RFUl9MT0NBVEVEX0FUX09DTE9VRFNJVEUgeyAvLyAxLi5uIHRvIDEuLm4KCiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOlRvcF9HcnBfVHlwZTsKICAgICAgICBrZXkgaWQ7CgogICAgICAgIGxlYWYtbGlzdCBsb2NhdGVkLWF0LW9jbG91ZFNpdGUgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiTm9kZSBDbHVzdGVyIGxvY2F0ZWQgYXQgTy1DbG91ZCBTaXRlLiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDphU2lkZSBOb2RlQ2x1c3RlcjsKICAgICAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgICAgICBtaW4tZWxlbWVudHMgMTsKICAgICAgICB9CgogICAgICAgIGxlYWYtbGlzdCBsb2NhdGlvbi1vZi1vbm9kZUNsdXN0ZXIgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiTy1DbG91ZCBTaXRlIGlzIGxvY2F0aW9uIG9mIE5vZGUgQ2x1c3Rlci4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YlNpZGUgT0Nsb3VkU2l0ZTsKICAgICAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgICAgICBtaW4tZWxlbWVudHMgMTsKICAgICAgICB9CiAgICB9Cn0=
+o-ran-smo-teiv-cloud urn:o-ran:smo-teiv-cloud CLOUD [] 2024-07-15 bW9kdWxlIG8tcmFuLXNtby10ZWl2LWNsb3VkIHsKICAgIHlhbmctdmVyc2lvbiAxLjE7CiAgICBuYW1lc3BhY2UgInVybjpvLXJhbjpzbW8tdGVpdi1jbG91ZCI7CiAgICBwcmVmaXggb3ItdGVpdi1jbG91ZDsKCiAgICBpbXBvcnQgby1yYW4tc21vLXRlaXYtY29tbW9uLXlhbmctdHlwZXMge3ByZWZpeCBvci10ZWl2LXR5cGVzOyB9CgogICAgaW1wb3J0IG8tcmFuLXNtby10ZWl2LWNvbW1vbi15YW5nLWV4dGVuc2lvbnMge3ByZWZpeCBvci10ZWl2LXlleHQ7IH0KCiAgICBpbXBvcnQgaWV0Zi1nZW8tbG9jYXRpb24gewogICAgICAgIHByZWZpeCBnZW87CiAgICAgICAgcmVmZXJlbmNlICJSRkMgOTE3OTogQSBZQU5HIEdyb3VwaW5nIGZvciBHZW9ncmFwaGljIExvY2F0aW9ucyI7CiAgICB9CgogICAgb3JnYW5pemF0aW9uICJPUkFOIjsKICAgIGNvbnRhY3QgIlRoZSBBdXRob3JzIjsKICAgIGRlc2NyaXB0aW9uCiAgICAgICAgIlJBTiBDbG91ZCB0b3BvbG9neSBtb2RlbC4KCiAgICAgICAgVGhpcyBtb2RlbCBjb250YWlucyB0aGUgdG9wb2xvZ3kgZW50aXRpZXMgYW5kIHJlbGF0aW9ucyBpbiB0aGUKICAgICAgICBSQU4gQ0xPVUQgZG9tYWluLCB3aGljaCBjb21wcmlzZXMgY2xvdWQgaW5mcmFzdHJ1Y3R1cmUgYW5kCiAgICAgICAgZGVwbG95bWVudCBhc3BlY3RzIHRoYXQgY2FuIGJlIHVzZWQgaW4gdGhlIHRvcG9sb2d5IG1vZGVsLgoKICAgICAgICBDb3B5cmlnaHQgKEMpIDIwMjQgRXJpY3Nzb24KICAgICAgICBNb2RpZmljYXRpb25zIENvcHlyaWdodCAoQykgMjAyNCBPcGVuSW5mcmEgRm91bmRhdGlvbiBFdXJvcGUKCiAgICAgICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTsKICAgICAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAgICAgICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CgogICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAoKICAgICAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAgICAgICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLAogICAgICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgogICAgICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKICAgICAgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KCiAgICAgICAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAiOwoKICAgIHJldmlzaW9uICIyMDI0LTA1LTAyIiB7CiAgICAgICAgZGVzY3JpcHRpb24gIkluaXRpYWwgcmV2aXNpb24uIjsKICAgICAgICBvci10ZWl2LXlleHQ6bGFiZWwgMC4zLjA7CiAgICB9CgogICAgcmV2aXNpb24gIjIwMjQtMDctMTUiIHsKICAgICAgICBkZXNjcmlwdGlvbiAiVGhpcyByZXZpc2lvbiBhbGlnbnMgTy1SQU4gV29yayBHcm91cCAxMCBTdGFnZSAyIFNwZWNpZmljYXRpb24gKE8tUkFOLldHMTAuVEUmSVYtQ0lNSS4wLVIwMDQudjAyLjAwKSI7CiAgICAgICAgb3ItdGVpdi15ZXh0OmxhYmVsIDAuNC4wOwogICAgfQoKICAgIG9yLXRlaXYteWV4dDpkb21haW4gQ0xPVUQ7CgogICAgbGlzdCBDbG91ZGlmaWVkTkYgewogICAgICAgIGRlc2NyaXB0aW9uICJBIFJBTiBOZXR3b3JrIEZ1bmN0aW9uIHNvZnR3YXJlIHRoYXQgaXMgZGVwbG95ZWQgaW4gdGhlIE8tQ2xvdWQgdmlhIG9uZSBvciBtb3JlIE5GIERlcGxveW1lbnRzLiI7CgogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOk9yaWdpbl9FbnRpdHlfTWFwcGluZ19HcnA7CiAgICAgICAga2V5IGlkOwoKICAgICAgICBjb250YWluZXIgYXR0cmlidXRlcyB7CiAgICAgICAgICAgIGxlYWYgbmFtZSB7CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiTmFtZSBvZiBDbG91ZGlmaWVkIE5GIjsKICAgICAgICAgICAgICAgIHR5cGUgc3RyaW5nOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIGxpc3QgTkZEZXBsb3ltZW50IHsKICAgICAgICBkZXNjcmlwdGlvbiAiQSBzb2Z0d2FyZSBkZXBsb3ltZW50IG9uIE8tQ2xvdWQgcmVzb3VyY2VzIHRoYXQgcmVhbGl6ZXMsIGFsbCBvciBwYXJ0IG9mLCBhIENsb3VkaWZpZWQgTkYuIjsKCiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOlRvcF9HcnBfVHlwZTsKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6T3JpZ2luX0VudGl0eV9NYXBwaW5nX0dycDsKICAgICAgICBrZXkgaWQ7CgogICAgICAgIGNvbnRhaW5lciBhdHRyaWJ1dGVzIHsKICAgICAgICAgICAgbGVhZiBuYW1lIHsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJOYW1lIG9mIE5GIERlcGxveW1lbnQiOwogICAgICAgICAgICAgICAgdHlwZSBzdHJpbmc7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgbGlzdCBPQ2xvdWROYW1lc3BhY2UgewogICAgICAgIGRlc2NyaXB0aW9uICJPQ2xvdWROYW1lc3BhY2UgcHJvdmlkZSBhIG1lY2hhbmlzbSBmb3IgaXNvbGF0aW5nCiAgICAgICAgZ3JvdXBzIG9mIHJlc291cmNlcyB3aXRoaW4gYSBzaW5nbGUgY2x1c3Rlci4iOwoKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6VG9wX0dycF9UeXBlOwogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpPcmlnaW5fRW50aXR5X01hcHBpbmdfR3JwOwogICAgICAgIGtleSBpZDsKCiAgICAgICAgY29udGFpbmVyIGF0dHJpYnV0ZXMgewogICAgICAgICAgICBsZWFmIG5hbWUgewogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIk5hbWUgb2YgQ2xvdWQgTmFtZXNwYWNlIjsKICAgICAgICAgICAgICAgIHR5cGUgc3RyaW5nOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIGxpc3QgTm9kZUNsdXN0ZXIgewogICAgICAgIGRlc2NyaXB0aW9uICJBIE5vZGVDbHVzdGVyIG1hbmFnZXMgYSBjb2xsZWN0aW9uIG9mIE5vZGVzLiI7CgogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOk9yaWdpbl9FbnRpdHlfTWFwcGluZ19HcnA7CiAgICAgICAga2V5IGlkOwoKICAgICAgICBjb250YWluZXIgYXR0cmlidXRlcyB7CiAgICAgICAgICAgIGxlYWYgbmFtZSB7CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiTmFtZSBvZiBOb2RlIENsdXN0ZXIiOwogICAgICAgICAgICAgICAgdHlwZSBzdHJpbmc7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgbGlzdCBPQ2xvdWRTaXRlIHsKICAgICAgICBkZXNjcmlwdGlvbiAiUmVwcmVzZW50cyB0aGUgaW5mcmFzdHJ1Y3R1cmUgdGhhdAogICAgICAgIGhvc3RzIHRoZSBORiBEZXBsb3ltZW50LiI7CgogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOk9yaWdpbl9FbnRpdHlfTWFwcGluZ19HcnA7CiAgICAgICAga2V5IGlkOwoKICAgICAgICBjb250YWluZXIgYXR0cmlidXRlcyB7CiAgICAgICAgICAgIGxlYWYgbmFtZSB7CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiTmFtZSBvZiBDbG91ZCBTaXRlIjsKICAgICAgICAgICAgICAgIHR5cGUgc3RyaW5nOwogICAgICAgICAgICB9CgogICAgICAgICAgICB1c2VzIGdlbzpnZW8tbG9jYXRpb247CiAgICAgICAgfQogICAgfQoKCiAgICBvci10ZWl2LXlleHQ6YmlEaXJlY3Rpb25hbFRvcG9sb2d5UmVsYXRpb25zaGlwIENMT1VESUZJRURORl9DT01QUklTRVNfTkZERVBMT1lNRU5UIHsgLy8gMSB0byAxLi5uCgogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOk9yaWdpbl9FbnRpdHlfTWFwcGluZ19HcnA7CiAgICAgICAga2V5IGlkOwoKICAgICAgICBsZWFmLWxpc3QgY29tcHJpc2VkLW5GRGVwbG95bWVudCB7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJDbG91ZGlmaWVkIE5GIGNvbXByaXNlcyBvZiB0aGVzZSBORiBEZXBsb3ltZW50LiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDphU2lkZSBDbG91ZGlmaWVkTkY7CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICAgICAgbWluLWVsZW1lbnRzIDE7CiAgICAgICAgfQoKICAgICAgICBsZWFmIGNvbXByaXNlZC1ieS1jbG91ZGlmaWVkTkYgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiTkYgRGVwbG95bWVudCBwYXJ0IG9mIENsb3VkaWZpZWQgTkYuIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmJTaWRlIE5GRGVwbG95bWVudDsKICAgICAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgICAgICBtYW5kYXRvcnkgdHJ1ZTsKICAgICAgICB9CiAgICB9CgogICAgb3ItdGVpdi15ZXh0OmJpRGlyZWN0aW9uYWxUb3BvbG9neVJlbGF0aW9uc2hpcCBORkRFUExPWU1FTlRfREVQTE9ZRURfT05fT0NMT1VETkFNRVNQQUNFIHsgLy8gMS4ubiB0byAxLi5uCgogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOk9yaWdpbl9FbnRpdHlfTWFwcGluZ19HcnA7CiAgICAgICAga2V5IGlkOwoKICAgICAgICBsZWFmLWxpc3QgZGVwbG95ZWQtb24tb2Nsb3VkTmFtZXNwYWNlIHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIk5GIERlcGxveW1lbnQgZGVwbG95ZWQgb24gTy1DbG91ZCBOYW1lc3BhY2UuIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmFTaWRlIE5GRGVwbG95bWVudDsKICAgICAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgICAgICBtaW4tZWxlbWVudHMgMTsKICAgICAgICB9CgogICAgICAgIGxlYWYtbGlzdCBkZXBsb3llZC1uRkRlcGxveW1lbnQgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiT0Nsb3VkIE5hbWVzcGFjZSBkZXBsb3lzIE5GIERlcGxveW1lbnQuIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmJTaWRlIE9DbG91ZE5hbWVzcGFjZTsKICAgICAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgICAgICBtaW4tZWxlbWVudHMgMTsKICAgICAgICB9CiAgICB9CgogICAgb3ItdGVpdi15ZXh0OmJpRGlyZWN0aW9uYWxUb3BvbG9neVJlbGF0aW9uc2hpcCBPQ0xPVUROQU1FU1BBQ0VfREVQTE9ZRURfT05fTk9ERUNMVVNURVIgeyAvLyAxLi5uIHRvIDEKCiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOlRvcF9HcnBfVHlwZTsKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6T3JpZ2luX0VudGl0eV9NYXBwaW5nX0dycDsKICAgICAgICBrZXkgaWQ7CgogICAgICAgIGxlYWYgZGVwbG95ZWQtb24tbm9kZUNsdXN0ZXIgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiTy1DbG91ZCBOYW1lc3BhY2UgZGVwbG95ZWQgb24gTm9kZSBDbHVzdGVyLiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDphU2lkZSBPQ2xvdWROYW1lc3BhY2U7CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICAgICAgbWFuZGF0b3J5IHRydWU7CiAgICAgICAgfQoKICAgICAgICBsZWFmLWxpc3QgZGVwbG95ZWQtb2Nsb3VkTmFtZXNwYWNlIHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIk5vZGUgQ2x1c3RlciBkZXBsb3lzIE8tQ2xvdWQgTmFtZXNwYWNlLiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDpiU2lkZSBOb2RlQ2x1c3RlcjsKICAgICAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgICAgICBtaW4tZWxlbWVudHMgMTsKICAgICAgICB9CiAgICB9CgogICAgb3ItdGVpdi15ZXh0OmJpRGlyZWN0aW9uYWxUb3BvbG9neVJlbGF0aW9uc2hpcCBOT0RFQ0xVU1RFUl9MT0NBVEVEX0FUX09DTE9VRFNJVEUgeyAvLyAxLi5uIHRvIDEuLm4KCiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOlRvcF9HcnBfVHlwZTsKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6T3JpZ2luX0VudGl0eV9NYXBwaW5nX0dycDsKICAgICAgICBrZXkgaWQ7CgogICAgICAgIGxlYWYtbGlzdCBsb2NhdGVkLWF0LW9jbG91ZFNpdGUgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiTm9kZSBDbHVzdGVyIGxvY2F0ZWQgYXQgTy1DbG91ZCBTaXRlLiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDphU2lkZSBOb2RlQ2x1c3RlcjsKICAgICAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgICAgICBtaW4tZWxlbWVudHMgMTsKICAgICAgICB9CgogICAgICAgIGxlYWYtbGlzdCBsb2NhdGlvbi1vZi1vbm9kZUNsdXN0ZXIgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiTy1DbG91ZCBTaXRlIGlzIGxvY2F0aW9uIG9mIE5vZGUgQ2x1c3Rlci4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YlNpZGUgT0Nsb3VkU2l0ZTsKICAgICAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgICAgICBtaW4tZWxlbWVudHMgMTsKICAgICAgICB9CiAgICB9Cn0=
o-ran-smo-teiv-common-yang-extensions urn:o-ran:smo-teiv-common-yang-extensions \N [] 2024-05-24 bW9kdWxlIG8tcmFuLXNtby10ZWl2LWNvbW1vbi15YW5nLWV4dGVuc2lvbnMgewoKICB5YW5nLXZlcnNpb24gMS4xOwogIG5hbWVzcGFjZSAidXJuOm8tcmFuOnNtby10ZWl2LWNvbW1vbi15YW5nLWV4dGVuc2lvbnMiOwogIHByZWZpeCBvci10ZWl2LXlleHQ7CgogIG9yZ2FuaXphdGlvbiAiT1JBTiI7CiAgY29udGFjdCAiVGhlIEF1dGhvcnMiOwogIGRlc2NyaXB0aW9uCiAgIlRvcG9sb2d5IGFuZCBJbnZlbnRvcnkgWUFORyBleHRlbnNpb25zIG1vZGVsCgogIFRoaXMgbW9kZWwgY29udGFpbnMgZXh0ZW5zaW9ucyB0byB0aGUgWUFORyBsYW5ndWFnZSB0aGF0IHRvcG9sb2d5IGFuZAogIGludmVudG9yeSBtb2RlbHMgd2lsbCB1c2UgdG8gZGVmaW5lIGFuZCBhbm5vdGF0ZSB0eXBlcyBhbmQgcmVsYXRpb25zaGlwcy4KCiAgQ29weXJpZ2h0IChDKSAyMDI0IEVyaWNzc29uCiAgTW9kaWZpY2F0aW9ucyBDb3B5cmlnaHQgKEMpIDIwMjQgT3BlbkluZnJhIEZvdW5kYXRpb24gRXVyb3BlCgogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7CiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAoKICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKCiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUywKICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCgogIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIjsKCiAgICByZXZpc2lvbiAiMjAyNC0wNS0yNCIgewogICAgICAgIGRlc2NyaXB0aW9uICJJbml0aWFsIHJldmlzaW9uLiI7CiAgICAgICAgb3ItdGVpdi15ZXh0OmxhYmVsIDAuMy4wOwogICAgfQoKICAgIGV4dGVuc2lvbiBiaURpcmVjdGlvbmFsVG9wb2xvZ3lSZWxhdGlvbnNoaXAgewogICAgICAgIGRlc2NyaXB0aW9uCiAgICAgICAgICAgICJEZWZpbmVzIGEgYmktZGlyZWN0aW9uYWwgcmVsYXRpb25zaGlwIGluIHRoZSB0b3BvbG9neS4KCiAgICAgICAgICAgIEEgYmktZGlyZWN0aW9uYWwtYXNzb2NpYXRpb24gKEJEQSkgaXMgYSByZWxhdGlvbnNoaXAgY29tcHJpc2luZyBvZgogICAgICAgICAgICBhbiBBLXNpZGUgYW5kIGEgQi1zaWRlLiBUaGUgQS1zaWRlIGlzIGNvbnNpZGVyZWQgdGhlIG9yaWdpbmF0aW5nCiAgICAgICAgICAgIHNpZGUgb2YgdGhlIHJlbGF0aW9uc2hpcDsgdGhlIEItc2lkZSBpcyBjb25zaWRlcmVkIHRoZSB0ZXJtaW5hdGluZwogICAgICAgICAgICBzaWRlIG9mIHRoZSByZWxhdGlvbnNoaXAuIFRoZSBvcmRlciBvZiBBLXNpZGUgYW5kIEItc2lkZSBpcyBvZgogICAgICAgICAgICBpbXBvcnRhbmNlIGFuZCBNVVNUIE5PVCBiZSBjaGFuZ2VkIG9uY2UgZGVmaW5lZC4KCiAgICAgICAgICAgIEJvdGggQS1zaWRlIGFuZCBCLXNpZGUgYXJlIGRlZmluZWQgb24gYSB0eXBlLCBhbmQgYXJlIGdpdmVuIGEgcm9sZS4KICAgICAgICAgICAgQSB0eXBlIG1heSBoYXZlIG11bHRpcGxlIG9yaWdpbmF0aW5nIGFuZC9vciB0ZXJtaW5hdGluZyBzaWRlcyBvZiBhCiAgICAgICAgICAgIHJlbGF0aW9uc2hpcCwgYWxsIGRpc3Rpbmd1aXNoZWQgYnkgcm9sZSBuYW1lLgoKICAgICAgICAgICAgVGhlIHN0YXRlbWVudCBNVVNUIG9ubHkgYmUgYSBzdWJzdGF0ZW1lbnQgb2YgdGhlICdtb2R1bGUnIHN0YXRlbWVudC4KICAgICAgICAgICAgTXVsdGlwbGUgJ2JpLWRpcmVjdGlvbmFsLXRvcG9sb2d5LXJlbGF0aW9uc2hpcCcgc3RhdGVtZW50cyBhcmUKICAgICAgICAgICAgYWxsb3dlZCBwZXIgcGFyZW50IHN0YXRlbWVudC4KCiAgICAgICAgICAgIFN1YnN0YXRlbWVudHMgdG8gdGhlICdiaS1kaXJlY3Rpb25hbC10b3BvbG9neS1yZWxhdGlvbnNoaXAnIGRlZmluZQogICAgICAgICAgICB0aGUgQS1zaWRlIGFuZCB0aGUgQi1zaWRlLCByZXNwZWN0aXZlbHksIGFuZCBvcHRpb25hbGx5IHByb3BlcnRpZXMKICAgICAgICAgICAgb2YgdGhlIHJlbGF0aW9uc2hpcC4gRGF0YSBub2RlcyBvZiB0eXBlcyAnbGVhZicgYW5kICdsZWFmLWxpc3QnIGFyZQogICAgICAgICAgICB1c2VkIGZvciB0aGlzIHB1cnBvc2UuIE9uZSBvZiB0aGUgZGF0YSBub2RlcyBNVVNUIGJlIGFubm90YXRlZCB3aXRoCiAgICAgICAgICAgIHRoZSAnYS1zaWRlJyBleHRlbnNpb247IGFub3RoZXIgZGF0YSBub2RlIE1VU1QgYmUgYW5ub3RhdGVkIHdpdGggdGhlCiAgICAgICAgICAgICdiLXNpZGUnIGV4dGVuc2lvbi4gT3RoZXIgZGF0YSBub2RlcyBkZWZpbmUgcHJvcGVydGllcyBvZiB0aGUKICAgICAgICAgICAgcmVsYXRpb25zaGlwLgoKICAgICAgICAgICAgVGhlIGFyZ3VtZW50IGlzIHRoZSBuYW1lIG9mIHRoZSByZWxhdGlvbnNoaXAuIFRoZSByZWxhdGlvbnNoaXAgbmFtZQogICAgICAgICAgICBpcyBzY29wZWQgdG8gdGhlIG5hbWVzcGFjZSBvZiB0aGUgZGVjbGFyaW5nIG1vZHVsZSBhbmQgTVVTVCBiZQogICAgICAgICAgICB1bmlxdWUgd2l0aGluIHRoZSBzY29wZS4iOwoKICAgICAgICBhcmd1bWVudCByZWxhdGlvbnNoaXBOYW1lOwogICAgfQoKICAgIGV4dGVuc2lvbiBhU2lkZSB7CiAgICAgICAgZGVzY3JpcHRpb24KICAgICAgICAgICAgIkRlZmluZXMgdGhlIEEtc2lkZSBvZiBhIHJlbGF0aW9uc2hpcC4KCiAgICAgICAgICAgIFRoZSBzdGF0ZW1lbnQgTVVTVCBvbmx5IGJlIGEgc3Vic3RhdGVtZW50IG9mIGEgJ2xlYWYnIG9yICdsZWFmLWxpc3QnCiAgICAgICAgICAgIHN0YXRlbWVudCwgd2hpY2ggaXRzZWxmIG11c3QgYmUgYSBzdWJzdGF0ZW1lbnQgb2YgdGhlCiAgICAgICAgICAgICd1bmktZGlyZWN0aW9uYWwtdG9wb2xvZ3ktcmVsYXRpb25zaGlwJyBzdGF0ZW1lbnQuCgogICAgICAgICAgICBUaGUgZGF0YSB0eXBlIG9mIHRoZSBwYXJlbnQgJ2xlYWYnIG9yICdsZWFmLWxpc3QnIE1VU1QgYmUKICAgICAgICAgICAgJ2luc3RhbmNlLWlkZW50aWZpZXInLiBDb25zdHJhaW50cyBNQVkgYmUgdXNlZCBhcyBwYXJ0IG9mIHRoZSBwYXJlbnQKICAgICAgICAgICAgJ2xlYWYnIG9yICdsZWFmLWxpc3QnIHRvIGVuZm9yY2UgY2FyZGluYWxpdHkuCgogICAgICAgICAgICBUaGUgaWRlbnRpZmllciBvZiB0aGUgcGFyZW50ICdsZWFmJyBvciAnbGVhZi1saXN0JyBpcyB1c2VkIGFzIG5hbWUKICAgICAgICAgICAgb2YgdGhlIHJvbGUgb2YgdGhlIEEtc2lkZSBvZiB0aGUgcmVsYXRpb25zaGlwLiBUaGUgbmFtZSBvZiB0aGUgcm9sZQogICAgICAgICAgICBpcyBzY29wZWQgdG8gdGhlIHR5cGUgb24gd2hpY2ggdGhlIEEtc2lkZSBpcyBkZWZpbmVkIGFuZCBNVVNUIGJlCiAgICAgICAgICAgIHVuaXF1ZSB3aXRoaW4gdGhlIHNjb3BlLgoKICAgICAgICAgICAgV2hpbGUgdGhlIHBhcmVudCAnbGVhZicgb3IgJ2xlYWYtbGlzdCcgZG9lcyBub3QgcmVzdWx0IGluIGEgcHJvcGVydHkKICAgICAgICAgICAgb2YgdGhlIHJlbGF0aW9uc2hpcCwgaXQgaXMgUkVDT01NRU5ERUQgdG8gYXZvaWQgdXNpbmcgdGhlIG5hbWUgb2YgYW4KICAgICAgICAgICAgZXhpc3RpbmcgdHlwZSBwcm9wZXJ0eSBhcyByb2xlIG5hbWUgdG8gYXZvaWQgcG90ZW50aWFsIGFtYmlndWl0aWVzCiAgICAgICAgICAgIGJldHdlZW4gcHJvcGVydGllcyBvZiBhIHR5cGUsIGFuZCByb2xlcyBvZiBhIHJlbGF0aW9uc2hpcCBvbiB0aGUKICAgICAgICAgICAgdHlwZS4KCiAgICAgICAgICAgIFRoZSBhcmd1bWVudCBpcyB0aGUgbmFtZSBvZiB0aGUgdHlwZSBvbiB3aGljaCB0aGUgQS1zaWRlIHJlc2lkZXMuCiAgICAgICAgICAgIElmIHRoZSB0eXBlIGlzIGRlY2xhcmVkIGluIGFub3RoZXIgbW9kdWxlLCB0aGUgdHlwZSBtdXN0IGJlCiAgICAgICAgICAgIHByZWZpeGVkLCBhbmQgYSBjb3JyZXNwb25kaW5nICdpbXBvcnQnIHN0YXRlbWVudCBiZSB1c2VkIHRvIGRlY2xhcmUKICAgICAgICAgICAgdGhlIHByZWZpeC4iOwoKICAgICAgICBhcmd1bWVudCBhU2lkZVR5cGU7CiAgICB9CgogICAgZXh0ZW5zaW9uIGJTaWRlIHsKICAgICAgICBkZXNjcmlwdGlvbgogICAgICAgICAgICAiRGVmaW5lcyB0aGUgQi1zaWRlIG9mIGEgcmVsYXRpb25zaGlwLgoKICAgICAgICAgICAgVGhlIHN0YXRlbWVudCBNVVNUIG9ubHkgYmUgYSBzdWJzdGF0ZW1lbnQgb2YgYSAnbGVhZicgb3IgJ2xlYWYtbGlzdCcKICAgICAgICAgICAgc3RhdGVtZW50LCB3aGljaCBpdHNlbGYgbXVzdCBiZSBhIHN1YnN0YXRlbWVudCBvZiB0aGUKICAgICAgICAgICAgJ3VuaS1kaXJlY3Rpb25hbC10b3BvbG9neS1yZWxhdGlvbnNoaXAnIHN0YXRlbWVudC4KCiAgICAgICAgICAgIFRoZSBkYXRhIHR5cGUgb2YgdGhlIHBhcmVudCAnbGVhZicgb3IgJ2xlYWYtbGlzdCcgTVVTVCBiZQogICAgICAgICAgICAnaW5zdGFuY2UtaWRlbnRpZmllcicuIENvbnN0cmFpbnRzIE1BWSBiZSB1c2VkIGFzIHBhcnQgb2YgdGhlIHBhcmVudAogICAgICAgICAgICAnbGVhZicgb3IgJ2xlYWYtbGlzdCcgdG8gZW5mb3JjZSBjYXJkaW5hbGl0eS4KCiAgICAgICAgICAgIFRoZSBpZGVudGlmaWVyIG9mIHRoZSBwYXJlbnQgJ2xlYWYnIG9yICdsZWFmLWxpc3QnIGlzIHVzZWQgYXMgbmFtZQogICAgICAgICAgICBvZiB0aGUgcm9sZSBvZiB0aGUgQi1zaWRlIG9mIHRoZSByZWxhdGlvbnNoaXAuIFRoZSBuYW1lIG9mIHRoZSByb2xlCiAgICAgICAgICAgIGlzIHNjb3BlZCB0byB0aGUgdHlwZSBvbiB3aGljaCB0aGUgQi1zaWRlIGlzIGRlZmluZWQgYW5kIE1VU1QgYmUKICAgICAgICAgICAgdW5pcXVlIHdpdGhpbiB0aGUgc2NvcGUuCgogICAgICAgICAgICBXaGlsZSB0aGUgcGFyZW50ICdsZWFmJyBvciAnbGVhZi1saXN0JyBkb2VzIG5vdCByZXN1bHQgaW4gYSBwcm9wZXJ0eQogICAgICAgICAgICBvZiB0aGUgcmVsYXRpb25zaGlwLCBpdCBpcyBSRUNPTU1FTkRFRCB0byBhdm9pZCB1c2luZyB0aGUgbmFtZSBvZiBhbgogICAgICAgICAgICBleGlzdGluZyB0eXBlIHByb3BlcnR5IGFzIHJvbGUgbmFtZSB0byBhdm9pZCBwb3RlbnRpYWwgYW1iaWd1aXRpZXMKICAgICAgICAgICAgYmV0d2VlbiBwcm9wZXJ0aWVzIG9mIGEgdHlwZSwgYW5kIHJvbGVzIG9mIGEgcmVsYXRpb25zaGlwIG9uIHRoZQogICAgICAgICAgICB0eXBlLgoKICAgICAgICAgICAgVGhlIGFyZ3VtZW50IGlzIHRoZSBuYW1lIG9mIHRoZSB0eXBlIG9uIHdoaWNoIHRoZSBCLXNpZGUgcmVzaWRlcy4KICAgICAgICAgICAgSWYgdGhlIHR5cGUgaXMgZGVjbGFyZWQgaW4gYW5vdGhlciBtb2R1bGUsIHRoZSB0eXBlIG11c3QgYmUKICAgICAgICAgICAgcHJlZml4ZWQsIGFuZCBhIGNvcnJlc3BvbmRpbmcgJ2ltcG9ydCcgc3RhdGVtZW50IGJlIHVzZWQgdG8gZGVjbGFyZQogICAgICAgICAgICB0aGUgcHJlZml4LiI7CgogICAgICAgIGFyZ3VtZW50IGJTaWRlVHlwZTsKICAgIH0KCiAgICBleHRlbnNpb24gZG9tYWluIHsKICAgICAgICBkZXNjcmlwdGlvbiAiS2V5d29yZCB1c2VkIHRvIGNhcnJ5IGRvbWFpbiBpbmZvcm1hdGlvbi4iOwogICAgICAgIGFyZ3VtZW50IGRvbWFpbk5hbWU7CiAgICB9CgogICAgZXh0ZW5zaW9uIGxhYmVsIHsKICAgICAgICBkZXNjcmlwdGlvbgogICAgICAgICAgICAiVGhlIGxhYmVsIGNhbiBiZSB1c2VkIHRvIGdpdmUgbW9kdWxlcyBhbmQgc3VibW9kdWxlcyBhIHNlbWFudGljCiAgICAgICAgICAgIHZlcnNpb24sIGluIGFkZGl0aW9uIHRvIHRoZWlyIHJldmlzaW9uLgoKICAgICAgICAgICAgVGhlIGZvcm1hdCBvZiB0aGUgbGFiZWwgaXMgJ3gueS56JyAtIGV4cHJlc3NlZCBhcyBwYXR0ZXJuLCBpdCBpcwogICAgICAgICAgICBbMC05XStcXC5bMC05XStcXC5bMC05XSsKCiAgICAgICAgICAgIFRoZSBzdGF0ZW1lbnQgTVVTVCBvbmx5IGJlIGEgc3Vic3RhdGVtZW50IG9mIHRoZSByZXZpc2lvbiBzdGF0ZW1lbnQuCiAgICAgICAgICAgIFplcm8gb3Igb25lIHJldmlzaW9uIGxhYmVsIHN0YXRlbWVudHMgcGVyIHBhcmVudCBzdGF0ZW1lbnQgYXJlCiAgICAgICAgICAgIGFsbG93ZWQuCgogICAgICAgICAgICBSZXZpc2lvbiBsYWJlbHMgTVVTVCBiZSB1bmlxdWUgYW1vbmdzdCBhbGwgcmV2aXNpb25zIG9mIGEgbW9kdWxlIG9yCiAgICAgICAgICAgIHN1Ym1vZHVsZS4iOwoKICAgICAgICBhcmd1bWVudCBzZW12ZXJzaW9uOwogICAgfQp9
-o-ran-smo-teiv-common-yang-types urn:o-ran:smo-teiv-common-yang-types \N [] 2024-05-24 bW9kdWxlIG8tcmFuLXNtby10ZWl2LWNvbW1vbi15YW5nLXR5cGVzIHsKICAgIHlhbmctdmVyc2lvbiAxLjE7CiAgICBuYW1lc3BhY2UgInVybjpvLXJhbjpzbW8tdGVpdi1jb21tb24teWFuZy10eXBlcyI7CiAgICBwcmVmaXggb3ItdGVpdi10eXBlczsKCiAgICBpbXBvcnQgby1yYW4tc21vLXRlaXYtY29tbW9uLXlhbmctZXh0ZW5zaW9ucyB7IHByZWZpeCBvci10ZWl2LXlleHQ7IH0KCiAgICBpbXBvcnQgXzNncHAtY29tbW9uLXlhbmctdHlwZXMgeyBwcmVmaXggdHlwZXMzZ3BwOyB9CgogIG9yZ2FuaXphdGlvbiAiT1JBTiI7CiAgY29udGFjdCAiVGhlIEF1dGhvcnMiOwogIGRlc2NyaXB0aW9uCiAgIlRvcG9sb2d5IGFuZCBJbnZlbnRvcnkgY29tbW9uIHR5cGVzIG1vZGVsCgogIFRoaXMgbW9kZWwgY29udGFpbnMgcmUtdXNhYmxlIGRhdGEgdHlwZXMgdGhhdCB0b3BvbG9neSBhbmQgaW52ZW50b3J5IG1vZGVscwogIHdpbGwgZnJlcXVlbnRseSB1c2UgYXMgcGFydCBvZiB0eXBlcyBhbmQgcmVsYXRpb25zaGlwcy4KCiAgQ29weXJpZ2h0IChDKSAyMDI0IEVyaWNzc29uCiAgTW9kaWZpY2F0aW9ucyBDb3B5cmlnaHQgKEMpIDIwMjQgT3BlbkluZnJhIEZvdW5kYXRpb24gRXVyb3BlCgogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7CiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAoKICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKCiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUywKICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCgogIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIjsKCiAgICByZXZpc2lvbiAiMjAyNC0wNS0yNCIgewogICAgICAgIGRlc2NyaXB0aW9uICJJbml0aWFsIHJldmlzaW9uLiI7CiAgICAgICAgb3ItdGVpdi15ZXh0OmxhYmVsIDAuMy4wOwogICAgfQoKICAgIGdyb3VwaW5nIFRvcF9HcnBfVHlwZSB7CiAgICAgICAgZGVzY3JpcHRpb24gIkdyb3VwaW5nIGNvbnRhaW5pbmcgdGhlIGtleSBhdHRyaWJ1dGUgY29tbW9uIHRvIGFsbCB0eXBlcy4KICAgICAgICAgICAgQWxsIHR5cGVzIE1VU1QgdXNlIHRoaXMgZ3JvdXBpbmcuIjsKCiAgICAgICAgbGVhZiBpZCB7CiAgICAgICAgICAgIHR5cGUgc3RyaW5nOwogICAgICAgICAgICBkZXNjcmlwdGlvbiAiVW5pcXVlIGlkZW50aWZpZXIgb2YgdG9wb2xvZ3kgZW50aXRpZXMuIFJlcHJlc2VudHMgdGhlCiAgICAgICAgICAgICAgICBFbnRpdHkgSW5zdGFuY2UgSWRlbnRpZmllci4iOwogICAgICAgIH0KICAgIH0KCiAgICBjb250YWluZXIgZGVjb3JhdG9ycyB7CiAgICAgICAgZGVzY3JpcHRpb24KICAgICAgICAgICAgIlRoaXMgY29udGFpbmVyIHNlcnZlcyBhcyBleHRlbnNpb24gcG9pbnQgZm9yIGFwcGxpY2F0aW9ucyB3aXNoaW5nCiAgICAgICAgICAgIHRvIGRlZmluZSB0aGVpciBvd24gZGVjb3JhdG9ycy4gVGhpcyBpcyBkb25lIHZpYSBhdWdtZW50YXRpb25zLiBUaGV5CiAgICAgICAgICAgIGNhbiBvbmx5IGJlIGRlZmluZWQgaW4gbmFtZSB2YWx1ZSBwYWlyLgoKICAgICAgICAgICAgVGhpcyBpcyBhIGNvbnN1bWVyIGRhdGEgYW5kIGNhbiBiZSBhdHRhY2hlZCB0byBUb3BvbG9neSBFbnRpdHkgb3IKICAgICAgICAgICAgVG9wb2xvZ3kgUmVsYXRpb24gaW5zdGFuY2UsIG91dHNpZGUgb2YgdGhlIGRlY2xhcmVkIFRvcG9sb2d5IEVudGl0eQogICAgICAgICAgICBvciBUb3BvbG9neSBSZWxhdGlvbnNoaXAncyBhdHRyaWJ1dGVzLiBUaGlzIGNhbm5vdCBiZSBpbnN0YW50aWF0ZWQsCiAgICAgICAgICAgIGFuZCBpdCBNVVNUIE5PVCBiZSBhdWdtZW50ZWQgb3IgZGV2aWF0ZWQgaW4gYW55IHdheSwgdW5sZXNzIHN0YXRlZAogICAgICAgICAgICBvdGhlcndpc2UuIjsKICAgIH0KCiAgICBsZWFmLWxpc3QgY2xhc3NpZmllcnMgewogICAgICAgIGRlc2NyaXB0aW9uCiAgICAgICAgICAgICJDb25zdW1lciBkZWZpbmVkIHRhZ3MgdG8gdG9wb2xvZ3kgZW50aXRpZXMgYW5kIHJlbGF0aW9uc2hpcHMuCgogICAgICAgICAgICBUaGlzIGlzIGEgY29uc3VtZXIgZGF0YSBhbmQgY2FuIGJlIGF0dGFjaGVkIHRvIFRvcG9sb2d5IEVudGl0eSBvcgogICAgICAgICAgICBUb3BvbG9neSBSZWxhdGlvbiBpbnN0YW5jZSwgb3V0c2lkZSBvZiB0aGUgZGVjbGFyZWQgVG9wb2xvZ3kgRW50aXR5CiAgICAgICAgICAgIG9yIFRvcG9sb2d5IFJlbGF0aW9uc2hpcCdzIGF0dHJpYnV0ZXMuIFRoaXMgY2Fubm90IGJlIGluc3RhbnRpYXRlZCwKICAgICAgICAgICAgYW5kIGl0IE1VU1QgTk9UIGJlIGF1Z21lbnRlZCBvciBkZXZpYXRlZCBpbiBhbnkgd2F5LCB1bmxlc3Mgc3RhdGVkCiAgICAgICAgICAgIG90aGVyd2lzZS4iOwoKICAgICAgICB0eXBlIGlkZW50aXR5cmVmIHsgYmFzZSBjbGFzc2lmaWVyOyB9CiAgICB9CgogICAgbGVhZi1saXN0IHNvdXJjZUlkcyB7CiAgICAgICAgZGVzY3JpcHRpb24KICAgICAgICAgICAgIkFuIG9yZGVyZWQgbGlzdCBvZiBpZGVudGl0aWVzIHRoYXQgcmVwcmVzZW50IHRoZSBzZXQgb2YgbmF0aXZlCiAgICAgICAgICAgIHNvdXJjZSBpZGVudGlmaWVycyBmb3IgcGFydGljaXBhdGluZyBlbnRpdGllcy4KCiAgICAgICAgICAgIFRoaXMgaXMgYSBjb25zdW1lciBkYXRhIGFuZCBjYW4gYmUgYXR0YWNoZWQgdG8gVG9wb2xvZ3kgRW50aXR5IG9yCiAgICAgICAgICAgIFRvcG9sb2d5IFJlbGF0aW9uIGluc3RhbmNlLCBvdXRzaWRlIG9mIHRoZSBkZWNsYXJlZCBUb3BvbG9neSBFbnRpdHkKICAgICAgICAgICAgb3IgVG9wb2xvZ3kgUmVsYXRpb25zaGlwJ3MgYXR0cmlidXRlcy4gVGhpcyBjYW5ub3QgYmUgaW5zdGFudGlhdGVkLAogICAgICAgICAgICBhbmQgaXQgTVVTVCBOT1QgYmUgYXVnbWVudGVkIG9yIGRldmlhdGVkIGluIGFueSB3YXksIHVubGVzcyBzdGF0ZWQKICAgICAgICAgICAgb3RoZXJ3aXNlLiI7CgogICAgICAgIHR5cGUgc3RyaW5nOwogICAgICAgIG9yZGVyZWQtYnkgdXNlcjsKICAgIH0KCiAgICBjb250YWluZXIgbWV0YWRhdGEgewogICAgICAgIGRlc2NyaXB0aW9uCiAgICAgICAgICAgICJUaGlzIGNvbnRhaW5lciBzZXJ2ZXMgYXMgZXh0ZW5zaW9uIHBvaW50IHRvIGRlZmluZSBtZXRhZGF0YS4gVGhleQogICAgICAgICAgICBjYW4gb25seSBiZSBkZWZpbmVkIGluIG5hbWUgdmFsdWUgcGFpci4KCiAgICAgICAgICAgIFRoaXMgaXMgYSBjb25zdW1lciBkYXRhIGFuZCBjYW4gYmUgYXR0YWNoZWQgdG8gVG9wb2xvZ3kgRW50aXR5IG9yCiAgICAgICAgICAgIFRvcG9sb2d5IFJlbGF0aW9uIGluc3RhbmNlLCBvdXRzaWRlIG9mIHRoZSBkZWNsYXJlZCBUb3BvbG9neSBFbnRpdHkKICAgICAgICAgICAgb3IgVG9wb2xvZ3kgUmVsYXRpb25zaGlwJ3MgYXR0cmlidXRlcy4gVGhpcyBjYW5ub3QgYmUgaW5zdGFudGlhdGVkLAogICAgICAgICAgICBhbmQgaXQgTVVTVCBOT1QgYmUgYXVnbWVudGVkIG9yIGRldmlhdGVkIGluIGFueSB3YXksIHVubGVzcyBzdGF0ZWQKICAgICAgICAgICAgb3RoZXJ3aXNlLiI7CiAgICB9CgogICAgaWRlbnRpdHkgY2xhc3NpZmllcnsKICAgICAgICBkZXNjcmlwdGlvbiAiVGhlIGNsYXNzaWZpZXIgaXMgdXNlZCBhcyBhIGJhc2UgdG8gcHJvdmlkZSBhbGwgY2xhc3NpZmllcnMKICAgICAgICAgICAgd2l0aCBpZGVudGl0eS4gIjsKICAgIH0KfQ==
-o-ran-smo-teiv-equipment urn:o-ran:smo-teiv-equipment EQUIPMENT [] 2024-05-24 bW9kdWxlIG8tcmFuLXNtby10ZWl2LWVxdWlwbWVudCB7CiAgICB5YW5nLXZlcnNpb24gMS4xOwogICAgbmFtZXNwYWNlICJ1cm46by1yYW46c21vLXRlaXYtZXF1aXBtZW50IjsKICAgIHByZWZpeCBvci10ZWl2LWVxdWlwOwoKICAgIGltcG9ydCBvLXJhbi1zbW8tdGVpdi1jb21tb24teWFuZy10eXBlcyB7cHJlZml4IG9yLXRlaXYtdHlwZXM7IH0KCiAgICBpbXBvcnQgby1yYW4tc21vLXRlaXYtY29tbW9uLXlhbmctZXh0ZW5zaW9ucyB7cHJlZml4IG9yLXRlaXYteWV4dDsgfQoKICAgIGltcG9ydCBpZXRmLWdlby1sb2NhdGlvbiB7CiAgICAgICAgcHJlZml4IGdlbzsKICAgICAgICByZWZlcmVuY2UgIlJGQyA5MTc5OiBBIFlBTkcgR3JvdXBpbmcgZm9yIEdlb2dyYXBoaWMgTG9jYXRpb25zIjsKICAgIH0KCiAgICBvcmdhbml6YXRpb24gIk9SQU4iOwogICAgY29udGFjdCAiVGhlIEF1dGhvcnMiOwogICAgZGVzY3JpcHRpb24KICAgICJSQU4gRXF1aXBtZW50IHRvcG9sb2d5IG1vZGVsLgoKICAgIFRoaXMgbW9kZWwgY29udGFpbnMgdGhlIHRvcG9sb2d5IGVudGl0aWVzIGFuZCByZWxhdGlvbnMgaW4gdGhlCiAgICBSQU4gRXF1aXBtZW50IGRvbWFpbiwgd2hpY2ggaXMgbW9kZWxsZWQgdG8gdW5kZXJzdGFuZCB0aGUgcGh5c2ljYWwKICAgIGxvY2F0aW9uIG9mIGVxdWlwbWVudCBzdWNoIGFzIGFudGVubmFzIGFzc29jaWF0ZWQgd2l0aCBhIGNlbGwvY2FycmllcgogICAgYW5kIHRoZWlyIHJlbGV2YW50IHByb3BlcnRpZXMgZS5nLiB0aWx0LCBtYXggcG93ZXIgZXRjLgoKICAgIENvcHlyaWdodCAoQykgMjAyNCBFcmljc3NvbgogICAgTW9kaWZpY2F0aW9ucyBDb3B5cmlnaHQgKEMpIDIwMjQgT3BlbkluZnJhIEZvdW5kYXRpb24gRXVyb3BlCgogICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTsKICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KICAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAoKICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAoKICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUywKICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgogICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCI7CgogICAgcmV2aXNpb24gIjIwMjQtMDUtMjQiIHsKICAgICAgICBkZXNjcmlwdGlvbiAiSW5pdGlhbCByZXZpc2lvbi4iOwogICAgICAgIG9yLXRlaXYteWV4dDpsYWJlbCAwLjMuMDsKICAgIH0KCiAgICBvci10ZWl2LXlleHQ6ZG9tYWluIEVRVUlQTUVOVDsKCiAgICBsaXN0IEFudGVubmFNb2R1bGUgewogICAgICAgIGRlc2NyaXB0aW9uICJBbiBBbnRlbm5hIE1vZHVsZSByZXByZXNlbnRzIHRoZSBwaHlzaWNhbCBhc3BlY3Qgb2YgYW4KICAgICAgICAgICAgYW50ZW5uYS4iOwoKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6VG9wX0dycF9UeXBlOwogICAgICAgIGtleSBpZDsKCiAgICAgICAgY29udGFpbmVyIGF0dHJpYnV0ZXMgewogICAgICAgICAgICBsZWFmIGFudGVubmFNb2RlbE51bWJlciB7CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiVmVuZG9yLXNwZWNpZmljIGFudGVubmEgbW9kZWwgaWRlbnRpZmllci4gVGhpcwogICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSBpcyBwYXJ0IG9mIEFJU0cgdjMgQURCIFN0YW5kYXJkIGFuZCBoYXMgbm8KICAgICAgICAgICAgICAgICAgICBvcGVyYXRpb25hbCBpbXBhY3QuIjsKICAgICAgICAgICAgICAgIHR5cGUgc3RyaW5nOwogICAgICAgICAgICB9CgogICAgICAgICAgICBsZWFmIG1lY2hhbmljYWxBbnRlbm5hQmVhcmluZyB7CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiQW50ZW5uYSBiZWFyaW5nIG9uIGFudGVubmEgc3VidW5pdCB3aGVyZSBhbnRlbm5hCiAgICAgICAgICAgICAgICAgICAgdW5pdCBpcyBpbnN0YWxsZWQuIjsKICAgICAgICAgICAgICAgIHR5cGUgaW50MzI7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGxlYWYgbWVjaGFuaWNhbEFudGVubmFUaWx0IHsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJUaGUgZml4ZWQgYW50ZW5uYSB0aWx0IG9mIHRoZSBpbnN0YWxsYXRpb24sIGRlZmluZWQKICAgICAgICAgICAgICAgICAgICBhcyB0aGUgaW5jbGluYXRpb24gb2YgdGhlIGFudGVubmEgZWxlbWVudCByZXNwZWN0IHRvIHRoZQogICAgICAgICAgICAgICAgICAgIHZlcnRpY2FsIHBsYW5lLiBJdCBpcyBhIHNpZ25lZCB2YWx1ZS4gUG9zaXRpdmUgaW5kaWNhdGVzCiAgICAgICAgICAgICAgICAgICAgZG93bnRpbHQsIGFuZCBuZWdhdGl2ZSBpbmRpY2F0ZXMgdXB0aWx0LiI7CiAgICAgICAgICAgICAgICB0eXBlIGludDMyOwogICAgICAgICAgICB9CgogICAgICAgICAgICBsZWFmIHBvc2l0aW9uV2l0aGluU2VjdG9yIHsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJBbnRlbm5hIHVuaXQgcG9zaXRpb24gd2l0aGluIHNlY3Rvci4gVGhpcyBhdHRyaWJ1dGUKICAgICAgICAgICAgICAgICAgICBpcyBwYXJ0IG9mIEFJU0cgdjMgQURCIFN0YW5kYXJkIGFuZCBoYXMgbm8gb3BlcmF0aW9uYWwKICAgICAgICAgICAgICAgICAgICBpbXBhY3QuIjsKICAgICAgICAgICAgICAgIHR5cGUgc3RyaW5nOwogICAgICAgICAgICB9CgogICAgICAgICAgICBsZWFmIHRvdGFsVGlsdCB7CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiVG90YWwgYW50ZW5uYSBlbGV2YXRpb24gaW5jbHVkaW5nIHRoZSBpbnN0YWxsZWQKICAgICAgICAgICAgICAgICAgICB0aWx0IGFuZCB0aGUgdGlsdCBhcHBsaWVkIGJ5IHRoZSBSZW1vdGUgRWxlY3RyaWNhbAogICAgICAgICAgICAgICAgICAgIFRpbHQgKFJFVCkuIjsKICAgICAgICAgICAgICAgIHR5cGUgaW50MzI7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGxlYWYgZWxlY3RyaWNhbEFudGVubmFUaWx0IHsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJFbGVjdHJpY2FsbHktY29udHJvbGxlZCB0aWx0IG9mIG1haW4gYmVhbSBtYXhpbXVtCiAgICAgICAgICAgICAgICAgICAgd2l0aCByZXNwZWN0IHRvIGRpcmVjdGlvbiBvcnRob2dvbmFsIHRvIGFudGVubmEgZWxlbWVudAogICAgICAgICAgICAgICAgICAgIGF4aXMgKHNlZSAzR1BQIFRTIDI1LjQ2NikuIFZhbHVlIGlzIHNpZ25lZDsgdGlsdCBkb3duIGlzCiAgICAgICAgICAgICAgICAgICAgcG9zaXRpdmUsIHRpbHQgdXAgaXMgbmVnYXRpdmUuIjsKICAgICAgICAgICAgICAgIHR5cGUgaW50MzI7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGxlYWYtbGlzdCBhbnRlbm5hQmVhbVdpZHRoIHsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJUaGUgYW5ndWxhciBzcGFuIG9mIHRoZSBtYWluIGxvYmUgb2YgdGhlIGFudGVubmEKICAgICAgICAgICAgICAgICAgICByYWRpYXRpb24gcGF0dGVybiBpbiB0aGUgaG9yaXpvbnRhbCBwbGFuZS4gTWVhc3VyZWQgaW4KICAgICAgICAgICAgICAgICAgICBkZWdyZWVzLiI7CiAgICAgICAgICAgICAgICB0eXBlIHVpbnQzMjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgdXNlcyBnZW86Z2VvLWxvY2F0aW9uOwogICAgICAgIH0KICAgIH0KCiAgICBsaXN0IFNpdGUgewogICAgICAgIGRlc2NyaXB0aW9uICJBIHNpdGUgaXMgYSBwaHlzaWNhbCBsb2NhdGlvbiB3aGVyZSBhbiBlcXVpcG1lbnQgY2FuIGJlCiAgICAgICAgICAgIGluc3RhbGxlZC4iOwoKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6VG9wX0dycF9UeXBlOwogICAgICAgIGtleSBpZDsKCiAgICAgICAgY29udGFpbmVyIGF0dHJpYnV0ZXMgewogICAgICAgICAgICBsZWFmIG5hbWUgewogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIk5hbWUgb2YgU2l0ZSI7CiAgICAgICAgICAgICAgICB0eXBlIHN0cmluZzsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgdXNlcyBnZW86Z2VvLWxvY2F0aW9uOwoKICAgICAgICB9CiAgICB9CgogICAgb3ItdGVpdi15ZXh0OmJpRGlyZWN0aW9uYWxUb3BvbG9neVJlbGF0aW9uc2hpcCBBTlRFTk5BTU9EVUxFX0lOU1RBTExFRF9BVF9TSVRFIHsgLy8gMC4ubiB0byAwLi4xCgogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICAgICAga2V5IGlkOwoKICAgICAgICBsZWFmIGluc3RhbGxlZC1hdC1zaXRlIHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIkFudGVubmEgTW9kdWxlIGluc3RhbGxlZCBhdCBTaXRlLiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDphU2lkZSBBbnRlbm5hTW9kdWxlOwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgfQoKICAgICAgICBsZWFmLWxpc3QgaW5zdGFsbGVkLWFudGVubmFNb2R1bGUgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiU2l0ZSB3aGVyZSBBbnRlbm5hIE1vZHVsZSBpcyBpbnN0YWxsZWQuIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmJTaWRlIFNpdGU7CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICB9CiAgICB9Cn0=
-o-ran-smo-teiv-oam urn:o-ran:smo-teiv-oam OAM [] 2024-05-24 bW9kdWxlIG8tcmFuLXNtby10ZWl2LW9hbSB7CiAgICB5YW5nLXZlcnNpb24gMS4xOwogICAgbmFtZXNwYWNlICJ1cm46by1yYW46c21vLXRlaXYtb2FtIjsKICAgIHByZWZpeCBvci10ZWl2LW9hbTsKCiAgICBpbXBvcnQgby1yYW4tc21vLXRlaXYtY29tbW9uLXlhbmctdHlwZXMgeyBwcmVmaXggb3ItdGVpdi10eXBlczsgfQoKICAgIGltcG9ydCBvLXJhbi1zbW8tdGVpdi1jb21tb24teWFuZy1leHRlbnNpb25zIHsgcHJlZml4IG9yLXRlaXYteWV4dDsgfQoKICAgIG9yZ2FuaXphdGlvbiAiT1JBTiI7CiAgICBjb250YWN0ICJUaGUgQXV0aG9ycyI7CiAgICBkZXNjcmlwdGlvbiAKICAgICJSQU4gTyZNIHRvcG9sb2d5IG1vZGVsLgoKICAgIFRoaXMgbW9kZWwgY29udGFpbnMgdGhlIHRvcG9sb2d5IGVudGl0aWVzIGFuZCByZWxhdGlvbnMgaW4gdGhlCiAgICBSQU4gTyZNIGRvbWFpbiwgd2hpY2ggYXJlIGludGVuZGVkIHRvIHJlcHJlc2VudCBtYW5hZ2VtZW50IHN5c3RlbXMKICAgIGFuZCBtYW5hZ2VtZW50IGludGVyZmFjZXMuCgogICAgQ29weXJpZ2h0IChDKSAyMDI0IEVyaWNzc29uCiAgICBNb2RpZmljYXRpb25zIENvcHlyaWdodCAoQykgMjAyNCBPcGVuSW5mcmEgRm91bmRhdGlvbiBFdXJvcGUKCiAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpOwogICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CgogICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCgogICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLAogICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCiAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCiAgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KCiAgICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCI7CgogICAgcmV2aXNpb24gIjIwMjQtMDUtMjQiIHsKICAgICAgICBkZXNjcmlwdGlvbiAiSW5pdGlhbCByZXZpc2lvbi4iOwogICAgICAgIG9yLXRlaXYteWV4dDpsYWJlbCAwLjMuMDsKICAgIH0KCiAgICBvci10ZWl2LXlleHQ6ZG9tYWluIE9BTTsKCiAgICBsaXN0IE1hbmFnZWRFbGVtZW50IHsKICAgICAgICBkZXNjcmlwdGlvbiAiQSBNYW5hZ2VkIEVsZW1lbnQgKE1FKSBpcyBhIG5vZGUgaW50byBhIHRlbGVjb21tdW5pY2F0aW9uCiAgICAgICAgICAgIG5ldHdvcmsgcHJvdmlkaW5nIHN1cHBvcnQgYW5kL29yIHNlcnZpY2UgdG8gc3Vic2NyaWJlcnMuIEFuIE1FCiAgICAgICAgICAgIGNvbW11bmljYXRlcyB3aXRoIGEgbWFuYWdlciBhcHBsaWNhdGlvbiAoZGlyZWN0bHkgb3IgaW5kaXJlY3RseSkKICAgICAgICAgICAgb3ZlciBvbmUgb3IgbW9yZSBpbnRlcmZhY2VzIGZvciB0aGUgcHVycG9zZSBvZiBiZWluZyBtb25pdG9yZWQKICAgICAgICAgICAgYW5kL29yIGNvbnRyb2xsZWQuIjsKCiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOlRvcF9HcnBfVHlwZTsKICAgICAgICBrZXkgaWQ7CiAgICB9Cn0=
-o-ran-smo-teiv-ran urn:o-ran:smo-teiv-ran RAN [] 2024-07-15 bW9kdWxlIG8tcmFuLXNtby10ZWl2LXJhbiB7CiAgICB5YW5nLXZlcnNpb24gMS4xOwogICAgbmFtZXNwYWNlICJ1cm46by1yYW46c21vLXRlaXYtcmFuIjsKICAgIHByZWZpeCBvci10ZWl2LXJhbjsKCiAgICBpbXBvcnQgby1yYW4tc21vLXRlaXYtY29tbW9uLXlhbmctdHlwZXMge3ByZWZpeCBvci10ZWl2LXR5cGVzOyB9CgogICAgaW1wb3J0IG8tcmFuLXNtby10ZWl2LWNvbW1vbi15YW5nLWV4dGVuc2lvbnMge3ByZWZpeCBvci10ZWl2LXlleHQ7IH0KCiAgICBpbXBvcnQgXzNncHAtY29tbW9uLXlhbmctdHlwZXMgeyBwcmVmaXggdHlwZXMzZ3BwOyB9CgogICAgaW1wb3J0IGlldGYtZ2VvLWxvY2F0aW9uIHsKICAgICAgICBwcmVmaXggZ2VvOwogICAgICAgIHJlZmVyZW5jZSAiUkZDIDkxNzk6IEEgWUFORyBHcm91cGluZyBmb3IgR2VvZ3JhcGhpYyBMb2NhdGlvbnMiOwogICAgfQoKICAgIG9yZ2FuaXphdGlvbiAiT1JBTiI7CiAgICBjb250YWN0ICJUaGUgQXV0aG9ycyI7CiAgICBkZXNjcmlwdGlvbgogICAgICAgICJSQU4gTG9naWNhbCB0b3BvbG9neSBtb2RlbC4KCiAgICAgICAgVGhpcyBtb2RlbCBjb250YWlucyB0aGUgdG9wb2xvZ3kgZW50aXRpZXMgYW5kIHJlbGF0aW9ucyBpbiB0aGUKICAgICAgICBSQU4gTG9naWNhbCBkb21haW4sIHdoaWNoIHJlcHJlc2VudHMgdGhlIGZ1bmN0aW9uYWwgY2FwYWJpbGl0eQogICAgICAgIG9mIHRoZSBkZXBsb3llZCBSQU4gdGhhdCBhcmUgcmVsZXZhbnQgdG8gckFwcHMgdXNlIGNhc2VzLgoKICAgICAgICBDb3B5cmlnaHQgKEMpIDIwMjQgRXJpY3Nzb24KICAgICAgICBNb2RpZmljYXRpb25zIENvcHlyaWdodCAoQykgMjAyNCBPcGVuSW5mcmEgRm91bmRhdGlvbiBFdXJvcGUKCiAgICAgICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTsKICAgICAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAgICAgICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CgogICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAoKICAgICAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAgICAgICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLAogICAgICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgogICAgICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKICAgICAgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KCiAgICAgICAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAiOwoKICAgIHJldmlzaW9uICIyMDI0LTA1LTI0IiB7CiAgICAgICAgZGVzY3JpcHRpb24gIkluaXRpYWwgcmV2aXNpb24uIjsKICAgICAgICBvci10ZWl2LXlleHQ6bGFiZWwgMC4zLjA7CiAgICB9CgogICAgcmV2aXNpb24gIjIwMjQtMDctMTUiIHsKICAgICAgICBkZXNjcmlwdGlvbiAiVGhpcyByZXZpc2lvbiBhbGlnbnMgTy1SQU4gV29yayBHcm91cCAxMCBTdGFnZSAyIFNwZWNpZmljYXRpb24gKE8tUkFOLldHMTAuVEUmSVYtQ0lNSS4wLVIwMDQudjAyLjAwKSI7CiAgICAgICAgb3ItdGVpdi15ZXh0OmxhYmVsIDAuNC4wOwogICAgfQoKICAgIG9yLXRlaXYteWV4dDpkb21haW4gUkFOOwoKICAgIGxpc3QgT1JVRnVuY3Rpb24gewogICAgICAgIGRlc2NyaXB0aW9uICJPLVJBTiBSYWRpbyBVbml0IChPLVJVKS4KCiAgICAgICAgQSBsb2dpY2FsIG5vZGUgaG9zdGluZyBMb3ctUEhZIGxheWVyIGFuZCBSRiBwcm9jZXNzaW5nIGJhc2VkIG9uIGEKICAgICAgICBsb3dlciBsYXllciBmdW5jdGlvbmFsIHNwbGl0LiAgVGhpcyBpcyBzaW1pbGFyIHRvIDNHUFDigJlzIOKAnFRSUOKAnSBvcgogICAgICAgIOKAnFJSSOKAnSBidXQgbW9yZSBzcGVjaWZpYyBpbiBpbmNsdWRpbmcgdGhlIExvdy1QSFkgbGF5ZXIgKEZGVC9pRkZULAogICAgICAgIFBSQUNIIGV4dHJhY3Rpb24pLiBUaGUgTy1SVSB0ZXJtaW5hdGVzIHRoZSBPcGVuIEZyb250aGF1bCBpbnRlcmZhY2UKICAgICAgICAoYWxzbyBrbm93biBhcyBMTFMgaW50ZXJmYWNlKSBhcyB3ZWxsIGFzIExvdy1QSFkgZnVuY3Rpb25zIG9mIHRoZQogICAgICAgIHJhZGlvIGludGVyZmFjZSB0b3dhcmRzIHRoZSBVRS4gVGhpcyBpcyBkZXBsb3llZCBhcyBhIFBORi4gVGhlIE8tUlUKICAgICAgICB0ZXJtaW5hdGVzIHRoZSBPcGVuIEZyb250aGF1bCBNLVBsYW5lIGludGVyZmFjZSB0b3dhcmRzIHRoZSBPLURVCiAgICAgICAgYW5kIFNNTy4KCiAgICAgICAgTm90ZTogSW4gVG9wb2xvZ3ksIHlvdSBjYW4gY3JlYXRlLCByZWFkLCB1cGRhdGUsIGFuZCBkZWxldGUKICAgICAgICB0aGUgTy1SVSBvYmplY3QuIjsKCiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOlRvcF9HcnBfVHlwZTsKICAgICAgICBrZXkgaWQ7CgogICAgICAgIGNvbnRhaW5lciBhdHRyaWJ1dGVzIHsKICAgICAgICAgICAgbGVhZiBvcnVJZCB7CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiVW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBPLVJVIHdpdGhpbiBhIE9SVUZ1bmN0aW9uIjsKICAgICAgICAgICAgICAgIHR5cGUgaW50NjQ7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgbGlzdCBOZWFyUlRSSUNGdW5jdGlvbiB7CiAgICAgICAgZGVzY3JpcHRpb24gIk5lYXItUmVhbC1UaW1lIFJBTiBJbnRlbGxpZ2VudCBDb250cm9sbGVyIChOZWFyLVJUIFJJQykuCgogICAgICAgIEFuIE8tUkFOIE5ldHdvcmsgRnVuY3Rpb24gKE5GKSB0aGF0IGVuYWJsZXMgbmVhci1yZWFsLXRpbWUgY29udHJvbAogICAgICAgIGFuZCBvcHRpbWl6YXRpb24gb2YgUkFOIGVsZW1lbnRzIGFuZCByZXNvdXJjZXMgdmlhIGZpbmUtZ3JhaW5lZAogICAgICAgIGRhdGEgY29sbGVjdGlvbiBhbmQgYWN0aW9ucyBvdmVyIEUyIGludGVyZmFjZS4gSXQgbWF5IGluY2x1ZGUKICAgICAgICBBSS9NTCAoQXJ0aWZpY2lhbCBJbnRlbGxpZ2VuY2UgLyBNYWNoaW5lIExlYXJuaW5nKSB3b3JrZmxvdwogICAgICAgIGluY2x1ZGluZyBtb2RlbCB0cmFpbmluZywgaW5mZXJlbmNlLCBhbmQgdXBkYXRlcy4KCiAgICAgICAgTm90ZTogSW4gVG9wb2xvZ3ksIHlvdSBjYW4gY3JlYXRlLCByZWFkLCB1cGRhdGUsIGFuZCBkZWxldGUKICAgICAgICB0aGUgTmVhci1SVCBSSUMgb2JqZWN0LiI7CgogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICAgICAga2V5IGlkOwoKICAgICAgICBjb250YWluZXIgYXR0cmlidXRlcyB7CiAgICAgICAgICAgIGxlYWYgbmVhclJ0UmljSWQgewogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIlVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgTmVhci1SVCBSSUMgd2l0aGluIGEgTmVhclJUUklDRnVuY3Rpb24iOwogICAgICAgICAgICAgICAgdHlwZSBpbnQ2NDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgY29udGFpbmVyIHBMTU5JZCB7CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiUExNTiBpZGVudGlmaWVyIHRvIGJlIHVzZWQgYXMgcGFydCBvZiBnbG9iYWwgUkFOCiAgICAgICAgICAgICAgICBub2RlIGlkZW50aXR5IjsKICAgICAgICAgICAgICAgIHVzZXMgdHlwZXMzZ3BwOlBMTU5JZDsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBsaXN0IE9EVUZ1bmN0aW9uIHsKICAgICAgICBkZXNjcmlwdGlvbiAiTy1SQU4gRGlzdHJpYnV0ZWQgVW5pdCAoTy1EVSkuCgogICAgICAgIFRoZSBPLURVIGlzIGFuIE8tUkFOIE5GIGluIHRoZSBPLVJBTiBBcmNoaXRlY3R1cmUuIEFuIE8tRFUsIGNvbWJpbmVkCiAgICAgICAgd2l0aCBvbmUgb3IgbW9yZSBPLVJVKHMpIGNvbm5lY3RlZCB0byBpdCwgc3VwcG9ydHMgYW5kIGlzIGZ1bGx5CiAgICAgICAgY29tcGF0aWJsZSB3aXRoIHRoZSBmdW5jdGlvbnMgb2YgYSBnTkItRFUgYXMgZGVmaW5lZCBieSAzR1BQIFRTIDM4LjQwMS4KCiAgICAgICAgVGhlIGZvbGxvd2luZyBpcyB0cnVlIGZvciBhIE8tRFU6CiAgICAgICAgSXMgY29ubmVjdGVkIHRvIHRoZSBPLUNVLUNQIHRocm91Z2ggdGhlIEYxLUMgaW50ZXJmYWNlLiBJcwogICAgICAgIGNvbm5lY3RlZCB0byB0aGUgTy1DVS1VUCB0aHJvdWdoIHRoZSBGMS1VIGludGVyZmFjZS4gT25lIE8tRFUgaXMKICAgICAgICBjb25uZWN0ZWQgdG8gb25seSBvbmUgTy1DVS1DUC4gT25lIE8tRFUgY2FuIGJlIGNvbm5lY3RlZCB0bwogICAgICAgIG11bHRpcGxlIE8tQ1UtVVBzIHVuZGVyIHRoZSBjb250cm9sIG9mIHRoZSBzYW1lIE8tQ1UtQ1AuCgogICAgICAgIE5vdGU6IEEgZ05CIG1heSBjb25zaXN0IG9mIGEgTy1DVS1DUCwgbXVsdGlwbGUgTy1DVS1VUHMgYW5kCiAgICAgICAgbXVsdGlwbGUgTy1EVXMuIE8tRFUgaXMgYSBjb25jcmV0ZSBjbGFzcyB0aGF0IGV4dGVuZHMgdGhlIE5HLVJBTgogICAgICAgIG5vZGUgb2JqZWN0LiBJbiBUb3BvbG9neSwgeW91IGNhbiBjcmVhdGUsIHJlYWQsIHVwZGF0ZSwgYW5kIGRlbGV0ZQogICAgICAgIHRoZSBnTkItRFUgb2JqZWN0LiI7CgogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICAgICAga2V5IGlkOwoKICAgICAgICBjb250YWluZXIgYXR0cmlidXRlcyB7CiAgICAgICAgICAgIGxlYWYgZ05CRFVJZCB7CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiVW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBEVSB3aXRoaW4gYSBnTm9kZUIiOwogICAgICAgICAgICAgICAgdHlwZSBpbnQ2NDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbGVhZiBnTkJJZCB7CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiSWRlbnRpdHkgb2YgZ05vZGVCIHdpdGhpbiBhIFBMTU4iOwogICAgICAgICAgICAgICAgdHlwZSBpbnQ2NDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbGVhZiBnTkJJZExlbmd0aCB7CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiTGVuZ3RoIG9mIGdOQklkIGJpdCBzdHJpbmcgcmVwcmVzZW50YXRpb24iOwogICAgICAgICAgICAgICAgdHlwZSBpbnQzMjsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBsaXN0IE9DVUNQRnVuY3Rpb24gewogICAgICAgIGRlc2NyaXB0aW9uICJPLVJBTiBDZW50cmFsaXplZCBVbml0IENvbnRyb2wgUGxhbmUgKE8tQ1UtQ1ApCgogICAgICAgIFRoaXMgaXMgYSBsb2dpY2FsIG5vZGUgaG9zdGluZyB0aGUgUmFkaW8gUmVzb3VyY2UgQ29udHJvbCAoUlJDKSBhbmQKICAgICAgICB0aGUgY29udHJvbCBwbGFuZSBwYXJ0IG9mIHRoZSBQYWNrZXQgRGF0YSBDb252ZXJnZW5jZSBQcm90b2NvbAogICAgICAgIChQRENQKS4gVGhlIE8tQ1UtQ1AgdGVybWluYXRlcyB0aGUgRTEgaW50ZXJmYWNlIGNvbm5lY3RlZCB3aXRoCiAgICAgICAgdGhlIE8tQ1UtVVAgYW5kIHRoZSBGMS1DIGludGVyZmFjZSBjb25uZWN0ZWQgd2l0aCB0aGUgTy1SQU4KICAgICAgICBEaXN0cmlidXRlZCBVbml0IChPLURVKS4KCiAgICAgICAgVGhlIGZvbGxvd2luZyBpcyB0cnVlIGZvciBhIE8tQ1UtQ1A6CiAgICAgICAgSXMgY29ubmVjdGVkIHRvIHRoZSBPLURVIHRocm91Z2ggdGhlIEYxLUMgaW50ZXJmYWNlLiBJcyBjb25uZWN0ZWQKICAgICAgICB0byB0aGUgTy1DVS1VUCB0aHJvdWdoIHRoZSBFMSBpbnRlcmZhY2UuIE9ubHkgb25lIE8tQ1UtQ1AgaXMKICAgICAgICBjb25uZWN0ZWQgdG8gb25lIE8tRFUuIE9ubHkgb25lIE8tQ1UtQ1AgaXMgY29ubmVjdGVkIHRvIG9uZQogICAgICAgIE8tQ1UtVVAuIE9uZSBPLURVIGNhbiBiZSBjb25uZWN0ZWQgdG8gbXVsdGlwbGUgTy1DVS1VUHMgdW5kZXIKICAgICAgICB0aGUgY29udHJvbCBvZiB0aGUgc2FtZSBPLUNVLUNQLiBPbmUgTy1DVS1VUCBjYW4gYmUgY29ubmVjdGVkIHRvCiAgICAgICAgbXVsdGlwbGUgRFVzIHVuZGVyIHRoZSBjb250cm9sIG9mIHRoZSBzYW1lIE8tQ1UtQ1AuCgogICAgICAgIE5vdGU6IEEgZ05CIG1heSBjb25zaXN0IG9mIGEgTy1DVS1DUCwgbXVsdGlwbGUgTy1DVS1VUHMgYW5kCiAgICAgICAgbXVsdGlwbGUgTy1EVXMuIEFuIE8tQ1UtQ1AgaXMgYSBjb25jcmV0ZSBjbGFzcyB0aGF0IGV4dGVuZHMgdGhlCiAgICAgICAgTkctUkFOIG5vZGUgb2JqZWN0LiBJbiBUb3BvbG9neSwgeW91IGNhbiBjcmVhdGUsIHJlYWQsIHVwZGF0ZSwgYW5kCiAgICAgICAgZGVsZXRlIHRoZSBPLUNVLUNQIG9iamVjdC4iOwoKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6VG9wX0dycF9UeXBlOwogICAgICAgIGtleSBpZDsKCiAgICAgICAgY29udGFpbmVyIGF0dHJpYnV0ZXMgewogICAgICAgICAgICBsZWFmIGdOQkNVTmFtZSB7CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiTmFtZSBvZiBnTm9kZUItQ1UiOwogICAgICAgICAgICAgICAgdHlwZSBzdHJpbmc7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGxlYWYgZ05CSWQgewogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIklkZW50aXR5IG9mIGdOb2RlQiB3aXRoaW4gYSBQTE1OIjsKICAgICAgICAgICAgICAgIHR5cGUgaW50NjQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGxlYWYgZ05CSWRMZW5ndGggewogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIkxlbmd0aCBvZiBnTkJJZCBiaXQgc3RyaW5nIHJlcHJlc2VudGF0aW9uIjsKICAgICAgICAgICAgICAgIHR5cGUgaW50MzI7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGNvbnRhaW5lciBwTE1OSWQgewogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIlBMTU4gaWRlbnRpZmllciB0byBiZSB1c2VkIGFzIHBhcnQgb2YgZ2xvYmFsIFJBTgogICAgICAgICAgICAgICAgbm9kZSBpZGVudGl0eSI7CiAgICAgICAgICAgICAgICB1c2VzIHR5cGVzM2dwcDpQTE1OSWQ7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgbGlzdCBPQ1VVUEZ1bmN0aW9uIHsKICAgICAgICBkZXNjcmlwdGlvbiAiTy1SQU4gQ2VudHJhbGl6ZWQgVW5pdCBVc2VyIFBsYW5lIChPLUNVLVVQKQoKICAgICAgICBBbiBPLUNVLVVQIGlzIGEgbG9naWNhbCBub2RlIGhvc3RpbmcgdGhlIFVzZXIgUGxhbmUgcGFydCBvZiB0aGUKICAgICAgICBQYWNrZXQgRGF0YSBDb252ZXJnZW5jZSBQcm90b2NvbCAoUERDUCkgYW5kIHRoZSBTZXJ2aWNlIERhdGEKICAgICAgICBBZGFwdGF0aW9uIFByb3RvY29sIChTREFQKS4gVGhlIE8tQ1UtVVAgdGVybWluYXRlcyB0aGUgRTEgaW50ZXJmYWNlCiAgICAgICAgY29ubmVjdGVkIHdpdGggdGhlIE8tQ1UtQ1AgYW5kIHRoZSBGMS1VIGludGVyZmFjZSBjb25uZWN0ZWQgd2l0aAogICAgICAgIHRoZSBPLVJBTiBEaXN0cmlidXRlZCBVbml0IChPLURVKS4KCiAgICAgICAgVGhlIGZvbGxvd2luZyBpcyB0cnVlIGZvciBhIE8tQ1UtVVA6CiAgICAgICAgSXMgY29ubmVjdGVkIHRvIHRoZSBPLURVIHRocm91Z2ggdGhlIEYxLVUgaW50ZXJmYWNlLiBJcyBjb25uZWN0ZWQKICAgICAgICB0byB0aGUgTy1DVS1DUCB0aHJvdWdoIHRoZSBFMSBpbnRlcmZhY2UuIE9uZSBPLUNVLVVQIGlzCiAgICAgICAgY29ubmVjdGVkIHRvIG9ubHkgb25lIE8tQ1UtQ1AuIE9uZSBPLURVIGNhbiBiZSBjb25uZWN0ZWQgdG8KICAgICAgICBtdWx0aXBsZSBPLUNVLVVQcyB1bmRlciB0aGUgY29udHJvbCBvZiB0aGUgc2FtZSBPLUNVLUNQLiBPbmUKICAgICAgICBPLUNVLVVQIGNhbiBiZSBjb25uZWN0ZWQgdG8gbXVsdGlwbGUgRFVzIHVuZGVyIHRoZSBjb250cm9sIG9mIHRoZQogICAgICAgIHNhbWUgTy1DVS1DUC4KCiAgICAgICAgTm90ZTogQSBnTkIgbWF5IGNvbnNpc3Qgb2YgYW4gTy1DVS1DUCwgbXVsdGlwbGUgTy1DVS1VUHMgYW5kCiAgICAgICAgbXVsdGlwbGUgTy1EVXMuIEFuIE8tQ1UtVVAgaXMgYSBjb25jcmV0ZSBjbGFzcyB0aGF0IGV4dGVuZHMgdGhlCiAgICAgICAgTkctUkFOIG5vZGUgb2JqZWN0LiBJbiBUb3BvbG9neSwgeW91IGNhbiBjcmVhdGUsIHJlYWQsIHVwZGF0ZSwgYW5kCiAgICAgICAgZGVsZXRlIHRoZSBPLUNVLVVQIG9iamVjdC4iOwoKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6VG9wX0dycF9UeXBlOwogICAgICAgIGtleSBpZDsKCiAgICAgICAgY29udGFpbmVyIGF0dHJpYnV0ZXMgewogICAgICAgICAgICBsZWFmIGdOQklkIHsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJJZGVudGl0eSBvZiBnTm9kZUIgd2l0aGluIGEgUExNTiI7CiAgICAgICAgICAgICAgICB0eXBlIGludDY0OwogICAgICAgICAgICB9CgogICAgICAgICAgICBsZWFmIGdOQklkTGVuZ3RoIHsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJMZW5ndGggb2YgZ05CSWQgYml0IHN0cmluZyByZXByZXNlbnRhdGlvbiI7CiAgICAgICAgICAgICAgICB0eXBlIGludDMyOwogICAgICAgICAgICB9CgogICAgICAgICAgICBsaXN0IHBMTU5JZExpc3QgewogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIkxpc3Qgb2YgUExNTiBpZGVudGlmaWVyIHRvIGJlIHVzZWQgYXMgcGFydCBvZiBnbG9iYWwgUkFOIG5vZGUgaWRlbnRpdHkiOwogICAgICAgICAgICAgICAgdXNlcyB0eXBlczNncHA6UExNTklkOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIGxpc3QgTlJDZWxsQ1UgewogICAgICAgIGRlc2NyaXB0aW9uICJSZXByZXNlbnRzIGFuIE5SIENlbGwgaW4gZ05vZGVCLUNVLgoKICAgICAgICA1RyBOUiBpcyBhIG5ldyByYWRpbyBhY2Nlc3MgdGVjaG5vbG9neSAoUkFUKSBkZXZlbG9wZWQgYnkgM0dQUCBmb3IKICAgICAgICB0aGUgNUcgKGZpZnRoIGdlbmVyYXRpb24pIG1vYmlsZSBuZXR3b3JrLiBJdCBpcyBkZXNpZ25lZCB0byBiZSB0aGUKICAgICAgICBnbG9iYWwgc3RhbmRhcmQgZm9yIHRoZSBhaXIgaW50ZXJmYWNlIG9mIDVHIG5ldHdvcmtzLgoKICAgICAgICA1RyBOUiBoYXMgc3luY2hyb25pemF0aW9uIHNpZ25hbCB0aGF0IGlzIGtub3duIGFzIFByaW1hcnkKICAgICAgICBTeW5jaHJvbml6YXRpb24gU2lnbmFsIChQU1MpIGFuZCBTZWNvbmRhcnkgU3luY2hyb25pemF0aW9uCiAgICAgICAgU2lnbmFsIChTU1MpLiBUaGVzZSBzaWduYWxzIGFyZSBzcGVjaWZpYyB0byBOUiBwaHlzaWNhbCBsYXllciBhbmQKICAgICAgICBwcm92aWRlIHRoZSBmb2xsb3dpbmcgaW5mb3JtYXRpb24gcmVxdWlyZWQgYnkgVUUgZm9yIGRvd25saW5rCiAgICAgICAgc3luY2hyb25pemF0aW9uOiBQU1MgcHJvdmlkZXMgUmFkaW8gRnJhbWUgQm91bmRhcnkgKFBvc2l0aW9uIG9mIDFzdAogICAgICAgIFN5bWJvbCBpbiBhIFJhZGlvIGZyYW1lKSBTU1MgcHJvdmlkZXMgU3ViZnJhbWUgQm91bmRhcnkgKFBvc2l0aW9uIG9mCiAgICAgICAgMXN0IFN5bWJvbCBpbiBhIFN1YmZyYW1lKSBQaHlzaWNhbCBMYXllciBDZWxsIElEIChQQ0kpIGluZm9ybWF0aW9uCiAgICAgICAgdXNpbmcgYm90aCBQU1MgYW5kIFNTUy4iOwoKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6VG9wX0dycF9UeXBlOwogICAgICAgIGtleSBpZDsKCiAgICAgICAgY29udGFpbmVyIGF0dHJpYnV0ZXMgewogICAgICAgICAgICBsZWFmIGNlbGxMb2NhbElkIHsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJVc2VkIHRvZ2V0aGVyIHdpdGggZ05vZGVCIGlkZW50aWZpZXIgdG8gaWRlbnRpZnkgTlIKICAgICAgICAgICAgICAgIGNlbGwgaW4gUExNTi4gVXNlZCB0b2dldGhlciB3aXRoIGdOQklkIHRvIGZvcm0gTkNJLiI7CiAgICAgICAgICAgICAgICB0eXBlIGludDMyOwogICAgICAgICAgICB9CgogICAgICAgICAgICBjb250YWluZXIgcGxtbklkIHsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJQTE1OIElEIGZvciBOUiBDR0kuIElmIGVtcHR5LAogICAgICAgICAgICAgICAgR05CQ1VDUEZ1bmN0aW9uOjpwTE1OSWQgaXMgdXNlZCBmb3IgUExNTiBJRCBpbiBOUiBDR0kiOwogICAgICAgICAgICAgICAgdXNlcyB0eXBlczNncHA6UExNTklkOwogICAgICAgICAgICB9CgogICAgICAgICAgICBsZWFmIG5DSSB7CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiTlIgQ2VsbCBJZGVudGl0eSI7CiAgICAgICAgICAgICAgICB0eXBlIGludDY0OwogICAgICAgICAgICB9CgogICAgICAgICAgICBsZWFmIG5SVEFDIHsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJOUiBUcmFja2luZyBBcmVhIENvZGUgKFRBQykiOwogICAgICAgICAgICAgICAgdHlwZSBpbnQzMjsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBsaXN0IE5SQ2VsbERVIHsKICAgICAgICBkZXNjcmlwdGlvbiAiUmVwcmVzZW50cyBhbiBOUiBDZWxsIGluIGdOb2RlQi1EVS4KCiAgICAgICAgNUcgTlIgaXMgYSBuZXcgcmFkaW8gYWNjZXNzIHRlY2hub2xvZ3kgKFJBVCkgZGV2ZWxvcGVkIGJ5IDNHUFAgZm9yCiAgICAgICAgdGhlIDVHIChmaWZ0aCBnZW5lcmF0aW9uKSBtb2JpbGUgbmV0d29yay4gSXQgaXMgZGVzaWduZWQgdG8gYmUgdGhlCiAgICAgICAgZ2xvYmFsIHN0YW5kYXJkIGZvciB0aGUgYWlyIGludGVyZmFjZSBvZiA1RyBuZXR3b3Jrcy4KCiAgICAgICAgNUcgTlIgaGFzIHN5bmNocm9uaXphdGlvbiBzaWduYWwgdGhhdCBpcyBrbm93biBhcyBQcmltYXJ5CiAgICAgICAgU3luY2hyb25pemF0aW9uIHNpZ25hbCAoUFNTKSBhbmQgU2Vjb25kYXJ5IFN5bmNocm9uaXphdGlvbiBzaWduYWwKICAgICAgICAoU1NTKS4gVGhlc2Ugc2lnbmFscyBhcmUgc3BlY2lmaWMgdG8gTlIgcGh5c2ljYWwgbGF5ZXIgYW5kIHByb3ZpZGUKICAgICAgICB0aGUgZm9sbG93aW5nIGluZm9ybWF0aW9uIHJlcXVpcmVkIGJ5IFVFIGZvciBkb3dubGluawogICAgICAgIHN5bmNocm9uaXphdGlvbjogUFNTIHByb3ZpZGVzIFJhZGlvIEZyYW1lIEJvdW5kYXJ5IChQb3NpdGlvbiBvZiAxc3QKICAgICAgICBTeW1ib2wgaW4gYSBSYWRpbyBmcmFtZSkgU1NTIHByb3ZpZGVzIFN1YmZyYW1lIEJvdW5kYXJ5IChQb3NpdGlvbiBvZgogICAgICAgIDFzdCBTeW1ib2wgaW4gYSBTdWJmcmFtZSkgUGh5c2ljYWwgTGF5ZXIgQ2VsbCBJRCAoUENJKSBpbmZvcm1hdGlvbgogICAgICAgIHVzaW5nIGJvdGggUFNTIGFuZCBTU1MuIjsKCiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOlRvcF9HcnBfVHlwZTsKICAgICAgICBrZXkgaWQ7CgogICAgICAgIGNvbnRhaW5lciBhdHRyaWJ1dGVzIHsKICAgICAgICAgICAgbGVhZiBjZWxsTG9jYWxJZCB7CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiVXNlZCB0b2dldGhlciB3aXRoIGdOb2RlQiBpZGVudGlmaWVyIHRvIGlkZW50aWZ5IE5SCiAgICAgICAgICAgICAgICBjZWxsIGluIFBMTU4uIFVzZWQgdG9nZXRoZXIgd2l0aCBnTkJJZCB0byBmb3JtIE5DSS4iOwogICAgICAgICAgICAgICAgdHlwZSBpbnQzMjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbGVhZiBuQ0kgewogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIk5SIENlbGwgSWRlbnRpdHkuIjsKICAgICAgICAgICAgICAgIHR5cGUgaW50NjQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGxlYWYgblJQQ0kgewogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIlRoZSBQaHlzaWNhbCBDZWxsIElkZW50aXR5IChQQ0kpIG9mIHRoZSBOUiBjZWxsLiI7CiAgICAgICAgICAgICAgICB0eXBlIGludDMyOwogICAgICAgICAgICB9CgogICAgICAgICAgICBsZWFmIG5SVEFDIHsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJOUiBUcmFja2luZyBBcmVhIENvZGUgKFRBQykuIjsKICAgICAgICAgICAgICAgIHR5cGUgaW50MzI7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgbGlzdCBOUlNlY3RvckNhcnJpZXIgewogICAgICAgIGRlc2NyaXB0aW9uICJUaGUgTlIgU2VjdG9yIENhcnJpZXIgb2JqZWN0IHByb3ZpZGVzIHRoZSBhdHRyaWJ1dGVzIGZvcgogICAgICAgIGRlZmluaW5nIHRoZSBsb2dpY2FsIGNoYXJhY3RlcmlzdGljcyBvZiBhIGNhcnJpZXIgKGNlbGwpIGluIGEKICAgICAgICBzZWN0b3IuIEEgc2VjdG9yIGlzIGEgY292ZXJhZ2UgYXJlYSBhc3NvY2lhdGVkIHdpdGggYSBiYXNlIHN0YXRpb24KICAgICAgICBoYXZpbmcgaXRzIG93biBhbnRlbm5hcywgcmFkaW8gcG9ydHMsIGFuZCBjb250cm9sIGNoYW5uZWxzLiBUaGUKICAgICAgICBjb25jZXB0IG9mIHNlY3RvcnMgd2FzIGRldmVsb3BlZCB0byBpbXByb3ZlIGNvLWNoYW5uZWwgaW50ZXJmZXJlbmNlCiAgICAgICAgaW4gY2VsbHVsYXIgc3lzdGVtcywgYW5kIG1vc3Qgd2lyZWxlc3Mgc3lzdGVtcyB1c2UgdGhyZWUgc2VjdG9yCiAgICAgICAgY2VsbHMuIjsKCiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOlRvcF9HcnBfVHlwZTsKICAgICAgICBrZXkgaWQ7CgogICAgICAgIGNvbnRhaW5lciBhdHRyaWJ1dGVzIHsKICAgICAgICAgICAgbGVhZiBhcmZjbkRMIHsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJOUiBBYnNvbHV0ZSBSYWRpbyBGcmVxdWVuY3kgQ2hhbm5lbCBOdW1iZXIKICAgICAgICAgICAgICAgIChOUi1BUkZDTikgZm9yIGRvd25saW5rIjsKICAgICAgICAgICAgICAgIHR5cGUgaW50MzI7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGxlYWYgYXJmY25VTCB7CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiTlIgQWJzb2x1dGUgUmFkaW8gZnJlcXVlbmN5IENoYW5uZWwgTnVtYmVyCiAgICAgICAgICAgICAgICAoTlItQVJGQ04pIGZvciB1cGxpbmsuIjsKICAgICAgICAgICAgICAgIHR5cGUgaW50MzI7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGxlYWYgZnJlcXVlbmN5REwgewogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIlJGIFJlZmVyZW5jZSBGcmVxdWVuY3kgb2YgZG93bmxpbmsgY2hhbm5lbCI7CiAgICAgICAgICAgICAgICB0eXBlIGludDMyOwogICAgICAgICAgICB9CgogICAgICAgICAgICBsZWFmIGZyZXF1ZW5jeVVMIHsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJSRiBSZWZlcmVuY2UgRnJlcXVlbmN5IG9mIHVwbGluayBjaGFubmVsIjsKICAgICAgICAgICAgICAgIHR5cGUgaW50MzI7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGxlYWYgYlNDaGFubmVsQndETCB7CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiQlMgQ2hhbm5lbCBiYW5kd2lkdGggaW4gTUh6IGZvciBkb3dubGluay4iOwogICAgICAgICAgICAgICAgdHlwZSBpbnQzMjsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBsaXN0IEFudGVubmFDYXBhYmlsaXR5IHsKICAgICAgICBkZXNjcmlwdGlvbiAiVGhpcyBNTyBzZXJ2ZXMgYXMgYSBtYXBwaW5nIGJldHdlZW4gdGhlIGNlbGwgYW5kIHRoZSBSQlMKICAgICAgICBlcXVpcG1lbnQgdXNlZCB0byBwcm92aWRlIGNvdmVyYWdlIGluIGEgY2VydGFpbiBnZW9ncmFwaGljYWwgYXJlYS4KICAgICAgICBUaGUgTU8gYWxzbyBjb250cm9scyB0aGUgbWF4aW11bSBvdXRwdXQgcG93ZXIgb2YgdGhlIHNlY3Rvci4iOwoKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6VG9wX0dycF9UeXBlOwogICAgICAgIGtleSBpZDsKCiAgICAgICAgY29udGFpbmVyIGF0dHJpYnV0ZXMgewogICAgICAgICAgICBsZWFmLWxpc3QgZVV0cmFuRnFCYW5kcyB7CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiTGlzdCBvZiBMVEUgZnJlcXVlbmN5IGJhbmRzIHRoYXQgYXNzb2NpYXRlZAogICAgICAgICAgICAgICAgaGFyZHdhcmUgc3VwcG9ydHMiOwogICAgICAgICAgICAgICAgdHlwZSBzdHJpbmc7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGxlYWYtbGlzdCBnZXJhbkZxQmFuZHMgewogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIkxpc3Qgb2YgR0VSQU4gZnJlcXVlbmN5IGJhbmRzIHRoYXQgYXNzb2NpYXRlZAogICAgICAgICAgICAgICAgaGFyZHdhcmUgc3VwcG9ydHMiOwogICAgICAgICAgICAgICAgdHlwZSBzdHJpbmc7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGxlYWYtbGlzdCBuUkZxQmFuZHMgewogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIkxpc3Qgb2YgTlIgZnJlcXVlbmN5IGJhbmRzIGFzc29jaWF0ZWQgaGFyZHdhcmUKICAgICAgICAgICAgICAgIHN1cHBvcnRzIjsKICAgICAgICAgICAgICAgIHR5cGUgc3RyaW5nOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIGxpc3QgU2VjdG9yIHsKICAgICAgICBkZXNjcmlwdGlvbiAiQSBncm91cCBvZiBjby1sb2NhdGVkIENlbGxzIHRoYXQgaGF2ZSBhIHNoYXJlZAogICAgICAgIGNvdmVyYWdlIGFyZWEuIjsKCiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOlRvcF9HcnBfVHlwZTsKICAgICAgICBrZXkgaWQ7CgogICAgICAgIGNvbnRhaW5lciBhdHRyaWJ1dGVzIHsKICAgICAgICAgICAgbGVhZiBzZWN0b3JJZCB7CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiVW5pdmVyc2FsbHkgdW5pcXVlIElEIGdlbmVyYXRlZCBieSB0aGUgc2VjdG9yJ3MKICAgICAgICAgICAgICAgIGRpc2NvdmVyeSBtZWNoYW5pc20uIjsKICAgICAgICAgICAgICAgIHR5cGUgdWludDY0OwogICAgICAgICAgICB9CgogICAgICAgICAgICB1c2VzIGdlbzpnZW8tbG9jYXRpb247CgogICAgICAgICAgICBsZWFmIGF6aW11dGggewogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIkF2ZXJhZ2UgdmFsdWUgb2YgdGhlIGF6aW11dGhzIG9mIHRoZSBjZWxscwogICAgICAgICAgICAgICAgY29tcHJpc2luZyB0aGUgc2VjdG9yLCBkZXRlcm1pbmVkIGR1cmluZyBzZWN0b3IgZGlzY292ZXJ5LiI7CiAgICAgICAgICAgICAgICB0eXBlIGRlY2ltYWw2NHsKICAgICAgICAgICAgICAgICAgICBmcmFjdGlvbi1kaWdpdHMgNjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHVuaXRzICJkZWdyZWVzIjsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCgogICAgb3ItdGVpdi15ZXh0OmJpRGlyZWN0aW9uYWxUb3BvbG9neVJlbGF0aW9uc2hpcCBPRFVGVU5DVElPTl9QUk9WSURFU19OUkNFTExEVSB7IC8vIDEgdG8gMC4ubgoKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6VG9wX0dycF9UeXBlOwogICAgICAgIGtleSBpZDsKCiAgICAgICAgbGVhZi1saXN0IHByb3ZpZGVkLW5yQ2VsbER1IHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIk8tRFUgRnVuY3Rpb24gcHJvdmlkZXMgTlIgQ2VsbC1EVS4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YVNpZGUgT0RVRnVuY3Rpb247CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICB9CgogICAgICAgIGxlYWYgcHJvdmlkZWQtYnktb2R1RnVuY3Rpb24gewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiTlIgQ2VsbC1EVSBwcm92aWRlZCBieSBPLURVIEZ1bmN0aW9uLiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDpiU2lkZSBOUkNlbGxEVTsKICAgICAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgICAgICBtYW5kYXRvcnkgdHJ1ZTsKICAgICAgICB9CiAgICB9CgogICAgb3ItdGVpdi15ZXh0OmJpRGlyZWN0aW9uYWxUb3BvbG9neVJlbGF0aW9uc2hpcCBPRFVGVU5DVElPTl9QUk9WSURFU19OUlNFQ1RPUkNBUlJJRVIgeyAvLyAxIHRvIDAuLm4KCiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOlRvcF9HcnBfVHlwZTsKICAgICAgICBrZXkgaWQ7CgogICAgICAgIGxlYWYtbGlzdCBwcm92aWRlZC1uclNlY3RvckNhcnJpZXIgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiTy1EVSBGdW5jdGlvbiBwcm92aWRlcyBOUiBTZWN0b3IgQ2Fycmllci4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YVNpZGUgT0RVRnVuY3Rpb247CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICB9CgogICAgICAgIGxlYWYgcHJvdmlkZWQtYnktb2R1RnVuY3Rpb24gewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiTlIgU2VjdG9yIENhcnJpZXIgcHJvdmlkZWQgYnkgTy1EVSBGdW5jdGlvbi4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YlNpZGUgTlJTZWN0b3JDYXJyaWVyOwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgICAgIG1hbmRhdG9yeSB0cnVlOwogICAgICAgIH0KICAgIH0KCiAgICBvci10ZWl2LXlleHQ6YmlEaXJlY3Rpb25hbFRvcG9sb2d5UmVsYXRpb25zaGlwIE9DVUNQRlVOQ1RJT05fUFJPVklERVNfTlJDRUxMQ1UgeyAvLyAxIHRvIDAuLm4KCiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOlRvcF9HcnBfVHlwZTsKICAgICAgICBrZXkgaWQ7CgogICAgICAgIGxlYWYtbGlzdCBwcm92aWRlZC1uckNlbGxDdSB7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJPLUNVLUNQIEZ1bmN0aW9uIHByb3ZpZGVzIE5SIENlbGwtQ1UuIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmFTaWRlIE9DVUNQRnVuY3Rpb247CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICB9CgogICAgICAgIGxlYWYgcHJvdmlkZWQtYnktb2N1Y3BGdW5jdGlvbiB7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJOUiBDZWxsLUNVIHByb3ZpZGVkIGJ5IE8tQ1UtQ1AgRnVuY3Rpb24uIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmJTaWRlIE5SQ2VsbENVOwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgICAgIG1hbmRhdG9yeSB0cnVlOwogICAgICAgIH0KICAgIH0KCiAgICBvci10ZWl2LXlleHQ6YmlEaXJlY3Rpb25hbFRvcG9sb2d5UmVsYXRpb25zaGlwIE5SQ0VMTERVX1VTRVNfTlJTRUNUT1JDQVJSSUVSIHsgLy8gMC4uMSB0byAwLi5uCgogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICAgICAga2V5IGlkOwoKICAgICAgICBsZWFmLWxpc3QgdXNlZC1uclNlY3RvckNhcnJpZXIgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiTlIgQ2VsbC1EVSB1c2VzIE5SIFNlY3RvciBDYXJyaWVyLiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDphU2lkZSBOUkNlbGxEVTsKICAgICAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgIH0KCiAgICAgICAgbGVhZiB1c2VkLWJ5LW5yQ2VsbER1IHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIk5SIFNlY3RvciBDYXJyaWVyIHVzZWQgYnkgTlIgQ2VsbC1EVS4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YlNpZGUgTlJTZWN0b3JDYXJyaWVyOwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgfQogICAgfQoKICAgIG9yLXRlaXYteWV4dDpiaURpcmVjdGlvbmFsVG9wb2xvZ3lSZWxhdGlvbnNoaXAgTlJTRUNUT1JDQVJSSUVSX1VTRVNfQU5URU5OQUNBUEFCSUxJVFkgeyAvLyAwLi5uIHRvIDAuLjEKCiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOlRvcF9HcnBfVHlwZTsKICAgICAgICBrZXkgaWQ7CgogICAgICAgIGxlYWYgdXNlZC1hbnRlbm5hQ2FwYWJpbGl0eSB7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJOUiBTZWN0b3IgQ2FycmllciB1c2VzIEFudGVubmEgQ2FwYWJpbGl0eS4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YVNpZGUgTlJTZWN0b3JDYXJyaWVyOwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgfQoKICAgICAgICBsZWFmLWxpc3QgdXNlZC1ieS1uclNlY3RvckNhcnJpZXIgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiQW50ZW5uYSBDYXBhYmlsaXR5IHVzZWQgYnkgTlIgU2VjdG9yIENhcnJpZXIuIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmJTaWRlIEFudGVubmFDYXBhYmlsaXR5OwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgfQogICAgfQoKICAgIG9yLXRlaXYteWV4dDpiaURpcmVjdGlvbmFsVG9wb2xvZ3lSZWxhdGlvbnNoaXAgU0VDVE9SX0dST1VQU19OUkNFTExEVSB7IC8vIDAuLjEgdG8gMC4ubgoKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6VG9wX0dycF9UeXBlOwogICAgICAgIGtleSBpZDsKCiAgICAgICAgbGVhZi1saXN0IGdyb3VwZWQtbnJDZWxsRHUgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiU2VjdG9yIGdyb3VwcyBOUiBDZWxsLURVLiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDphU2lkZSBTZWN0b3I7CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICB9CgogICAgICAgIGxlYWYgZ3JvdXBlZC1ieS1zZWN0b3IgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiTlIgQ2VsbC1EVSBncm91cGVkIGJ5IFNlY3Rvci4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YlNpZGUgTlJDZWxsRFU7CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICB9CiAgICB9Cn0=
-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-07-15 bW9kdWxlIG8tcmFuLXNtby10ZWl2LXJlbC1jbG91ZC1yYW4gewogICAgeWFuZy12ZXJzaW9uIDEuMTsKICAgIG5hbWVzcGFjZSAidXJuOm8tcmFuOnNtby10ZWl2LXJlbC1jbG91ZC1yYW4iOwogICAgcHJlZml4IG9yLXRlaXYtY2xvdWR0b3JhbjsKCiAgICBpbXBvcnQgby1yYW4tc21vLXRlaXYtY29tbW9uLXlhbmctdHlwZXMge3ByZWZpeCBvci10ZWl2LXR5cGVzOyB9CgogICAgaW1wb3J0IG8tcmFuLXNtby10ZWl2LWNvbW1vbi15YW5nLWV4dGVuc2lvbnMge3ByZWZpeCBvci10ZWl2LXlleHQ7IH0KCiAgICBpbXBvcnQgby1yYW4tc21vLXRlaXYtY2xvdWQge3ByZWZpeCBvci10ZWl2LWNsb3VkOyB9CgogICAgaW1wb3J0IG8tcmFuLXNtby10ZWl2LXJhbiB7cHJlZml4IG9yLXRlaXYtcmFuOyB9CgogICAgb3JnYW5pemF0aW9uICJPUkFOIjsKICAgIGNvbnRhY3QgIlRoZSBBdXRob3JzIjsKICAgIGRlc2NyaXB0aW9uCiAgICAgICAgIlJBTiBDbG91ZCB0byBSQU4gTG9naWNhbCB0b3BvbG9neSBtb2RlbC4KCiAgICAgICAgVGhpcyBtb2RlbCBjb250YWlucyB0aGUgUkFOIENsb3VkIHRvIFJBTiBMb2dpY2FsIHRvcG9sb2d5IHJlbGF0aW9ucy4KCiAgICAgICAgQ29weXJpZ2h0IChDKSAyMDI0IEVyaWNzc29uCiAgICAgICAgTW9kaWZpY2F0aW9ucyBDb3B5cmlnaHQgKEMpIDIwMjQgT3BlbkluZnJhIEZvdW5kYXRpb24gRXVyb3BlCgogICAgICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7CiAgICAgICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogICAgICAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAoKICAgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKCiAgICAgICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogICAgICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUywKICAgICAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KICAgICAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCiAgICAgICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCgogICAgICAgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIjsKCiAgICByZXZpc2lvbiAiMjAyNC0wNS0wMiIgewogICAgICAgIGRlc2NyaXB0aW9uICJJbml0aWFsIHJldmlzaW9uLiI7CiAgICAgICAgb3ItdGVpdi15ZXh0OmxhYmVsIDAuMy4wOwogICAgfQoKICAgIHJldmlzaW9uICIyMDI0LTA3LTE1IiB7CiAgICAgICAgZGVzY3JpcHRpb24gIlRoaXMgcmV2aXNpb24gYWxpZ25zIE8tUkFOIFdvcmsgR3JvdXAgMTAgU3RhZ2UgMiBTcGVjaWZpY2F0aW9uIChPLVJBTi5XRzEwLlRFJklWLUNJTUkuMC1SMDA0LnYwMi4wMCkiOwogICAgICAgIG9yLXRlaXYteWV4dDpsYWJlbCAwLjQuMDsKICAgIH0KCiAgICBvci10ZWl2LXlleHQ6ZG9tYWluIFJFTF9DTE9VRF9SQU47CgogICAgb3ItdGVpdi15ZXh0OmJpRGlyZWN0aW9uYWxUb3BvbG9neVJlbGF0aW9uc2hpcCBORkRFUExPWU1FTlRfU0VSVkVTX09EVUZVTkNUSU9OIHsgLy8gMC4ubiB0byAwLi5tCgogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICAgICAga2V5IGlkOwoKICAgICAgICBsZWFmLWxpc3Qgc2VydmljZWQtb2R1RnVuY3Rpb24gewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiTy1EVSBGdW5jdGlvbiBzZXJ2aWNlZCBieSB0aGlzIE5GIERlcGxveW1lbnQuIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmFTaWRlIG9yLXRlaXYtY2xvdWQ6TkZEZXBsb3ltZW50OwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgfQoKICAgICAgICBsZWFmLWxpc3Qgc2VydmluZy1uRkRlcGxveW1lbnQgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiTkYgRGVwbG95bWVudCB0aGF0IHNlcnZlcyB0aGlzIE8tRFUgRnVuY3Rpb24uIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmJTaWRlIG9yLXRlaXYtcmFuOk9EVUZ1bmN0aW9uOwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgfQogICAgfQoKICAgIG9yLXRlaXYteWV4dDpiaURpcmVjdGlvbmFsVG9wb2xvZ3lSZWxhdGlvbnNoaXAgTkZERVBMT1lNRU5UX1NFUlZFU19PQ1VDUEZVTkNUSU9OIHsgLy8gMC4ubiB0byAwLi5tCgogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICAgICAga2V5IGlkOwoKICAgICAgICBsZWFmLWxpc3Qgc2VydmljZWQtb2N1Y3BGdW5jdGlvbiB7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJPLUNVLUNQIEZ1bmN0aW9uIHNlcnZpY2VkIGJ5IHRoaXMgTkYgRGVwbG95bWVudC4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YVNpZGUgb3ItdGVpdi1jbG91ZDpORkRlcGxveW1lbnQ7CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICB9CgogICAgICAgIGxlYWYtbGlzdCBzZXJ2aW5nLW5GRGVwbG95bWVudCB7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJORiBEZXBsb3ltZW50IHRoYXQgc2VydmVzIHRoaXMgTy1DVS1DUCBGdW5jdGlvbi4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YlNpZGUgb3ItdGVpdi1yYW46T0NVQ1BGdW5jdGlvbjsKICAgICAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgIH0KICAgIH0KCiAgICBvci10ZWl2LXlleHQ6YmlEaXJlY3Rpb25hbFRvcG9sb2d5UmVsYXRpb25zaGlwIE5GREVQTE9ZTUVOVF9TRVJWRVNfT0NVVVBGVU5DVElPTiB7IC8vIDAuLm4gdG8gMC4ubQoKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6VG9wX0dycF9UeXBlOwogICAgICAgIGtleSBpZDsKCiAgICAgICAgbGVhZi1saXN0IHNlcnZpY2VkLWduYmN1dXBGdW5jdGlvbiB7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJPLUNVLVVQIEZ1bmN0aW9uIHNlcnZpY2VkIGJ5IHRoaXMgTkYgRGVwbG95bWVudC4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YVNpZGUgb3ItdGVpdi1jbG91ZDpORkRlcGxveW1lbnQ7CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICB9CgogICAgICAgIGxlYWYtbGlzdCBzZXJ2aW5nLW5GRGVwbG95bWVudCB7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJORiBEZXBsb3ltZW50IHRoYXQgc2VydmVzIHRoaXMgTy1DVS1VUCBGdW5jdGlvbi4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YlNpZGUgb3ItdGVpdi1yYW46T0NVVVBGdW5jdGlvbjsKICAgICAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgIH0KICAgIH0KCiAgICBvci10ZWl2LXlleHQ6YmlEaXJlY3Rpb25hbFRvcG9sb2d5UmVsYXRpb25zaGlwIE5GREVQTE9ZTUVOVF9TRVJWRVNfTkVBUlJUUklDRlVOQ1RJT04geyAvLyAwLi5uIHRvIDAuLm0KCiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOlRvcF9HcnBfVHlwZTsKICAgICAgICBrZXkgaWQ7CgogICAgICAgIGxlYWYtbGlzdCBzZXJ2aWNlZC1uZWFyUlRSSUNGdW5jdGlvbiB7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJOZWFyUlRSSUNGdW5jdGlvbiBzZXJ2aWNlZCBieSB0aGlzIE5GIERlcGxveW1lbnQuIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmFTaWRlIG9yLXRlaXYtY2xvdWQ6TkZEZXBsb3ltZW50OwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgfQoKICAgICAgICBsZWFmLWxpc3Qgc2VydmluZy1uRkRlcGxveW1lbnQgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiTkYgRGVwbG95bWVudCB0aGF0IHNlcnZlcyB0aGlzIE5lYXJSVFJJQ0Z1bmN0aW9uLiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDpiU2lkZSBvci10ZWl2LXJhbjpOZWFyUlRSSUNGdW5jdGlvbjsKICAgICAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgIH0KICAgIH0KfQ==
-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 bW9kdWxlIG8tcmFuLXNtby10ZWl2LXJlbC1lcXVpcG1lbnQtcmFuIHsKICAgIHlhbmctdmVyc2lvbiAxLjE7CiAgICBuYW1lc3BhY2UgInVybjpvLXJhbjpzbW8tdGVpdi1yZWwtZXF1aXBtZW50LXJhbiI7CiAgICBwcmVmaXggb3ItdGVpdi1yZWwtZXF1aXByYW47CgogICAgaW1wb3J0IG8tcmFuLXNtby10ZWl2LWNvbW1vbi15YW5nLXR5cGVzIHsgcHJlZml4IG9yLXRlaXYtdHlwZXM7IH0KCiAgICBpbXBvcnQgby1yYW4tc21vLXRlaXYtY29tbW9uLXlhbmctZXh0ZW5zaW9ucyB7IHByZWZpeCBvci10ZWl2LXlleHQ7IH0KCiAgICBpbXBvcnQgby1yYW4tc21vLXRlaXYtZXF1aXBtZW50IHsgcHJlZml4IG9yLXRlaXYtZXF1aXA7IH0KCiAgICBpbXBvcnQgby1yYW4tc21vLXRlaXYtcmFuIHsgcHJlZml4IG9yLXRlaXYtcmFuOyB9CgoKICAgIG9yZ2FuaXphdGlvbiAiT1JBTiI7CiAgICBjb250YWN0ICJUaGUgQXV0aG9ycyI7CiAgICBkZXNjcmlwdGlvbiAKICAgICJSQU4gRXF1aXBtZW50IHRvIExvZ2ljYWwgdG9wb2xvZ3kgbW9kZWwuCgogICAgVGhpcyBtb2RlbCBjb250YWlucyB0aGUgUkFOIEVxdWlwbWVudCB0byBMb2dpY2FsIHRvcG9sb2d5CiAgICBlbnRpdGllcyBhbmQgcmVsYXRpb25zLgoKICAgIENvcHlyaWdodCAoQykgMjAyNCBFcmljc3NvbgogICAgTW9kaWZpY2F0aW9ucyBDb3B5cmlnaHQgKEMpIDIwMjQgT3BlbkluZnJhIEZvdW5kYXRpb24gRXVyb3BlCgogICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTsKICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KICAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAoKICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAoKICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUywKICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgogICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAogICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCgogICAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAiOwoKICAgIHJldmlzaW9uICIyMDI0LTA1LTI0IiB7CiAgICAgICAgZGVzY3JpcHRpb24gIkluaXRpYWwgcmV2aXNpb24uIjsKICAgICAgICBvci10ZWl2LXlleHQ6bGFiZWwgMC4zLjA7CiAgICB9CgogICAgb3ItdGVpdi15ZXh0OmRvbWFpbiBSRUxfRVFVSVBNRU5UX1JBTjsKCiAgICBvci10ZWl2LXlleHQ6YmlEaXJlY3Rpb25hbFRvcG9sb2d5UmVsYXRpb25zaGlwIEFOVEVOTkFNT0RVTEVfU0VSVkVTX0FOVEVOTkFDQVBBQklMSVRZIHsgLy8gMC4ubiB0byAwLi5tCgogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICAgICAga2V5IGlkOwoKICAgICAgICBsZWFmLWxpc3Qgc2VydmljZWQtYW50ZW5uYUNhcGFiaWxpdHkgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiQW50ZW5uYSBDYXBhYmlsaXR5IHNlcnZpY2VkIGJ5IHRoaXMgQW50ZW5uYSBNb2R1bGUuIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmFTaWRlIG9yLXRlaXYtZXF1aXA6QW50ZW5uYU1vZHVsZTsKICAgICAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgIH0KCiAgICAgICAgbGVhZi1saXN0IHNlcnZpbmctYW50ZW5uYU1vZHVsZSB7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJBbnRlbm5hIE1vZHVsZSBzZXJ2ZXMgdGhpcyBBbnRlbm5hIENhcGFiaWxpdHkuIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmJTaWRlIG9yLXRlaXYtcmFuOkFudGVubmFDYXBhYmlsaXR5OwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgfQogICAgfQoKICAgIG9yLXRlaXYteWV4dDpiaURpcmVjdGlvbmFsVG9wb2xvZ3lSZWxhdGlvbnNoaXAgU0VDVE9SX0dST1VQU19BTlRFTk5BTU9EVUxFIHsgLy8gMC4uMSB0byAwLi5uCgogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICAgICAga2V5IGlkOwoKICAgICAgICBsZWFmLWxpc3QgZ3JvdXBlZC1hbnRlbm5hTW9kdWxlIHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIlNlY3RvciBncm91cHMgQW50ZW5uYSBNb2R1bGUuIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmFTaWRlIG9yLXRlaXYtcmFuOlNlY3RvcjsKICAgICAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgIH0KCiAgICAgICAgbGVhZiBncm91cGVkLWJ5LXNlY3RvciB7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJBbnRlbm5hIE1vZHVsZSBncm91cGVkIGJ5IFNlY3Rvci4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YlNpZGUgb3ItdGVpdi1lcXVpcDpBbnRlbm5hTW9kdWxlOwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgfQogICAgfQp9
-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-07-15 bW9kdWxlIG8tcmFuLXNtby10ZWl2LXJlbC1vYW0tY2xvdWQgewogICAgeWFuZy12ZXJzaW9uIDEuMTsKICAgIG5hbWVzcGFjZSAidXJuOm8tcmFuOnNtby10ZWl2LXJlbC1vYW0tY2xvdWQiOwogICAgcHJlZml4IG9yLXRlaXYtb2FtdG9jbG91ZDsKCiAgICBpbXBvcnQgby1yYW4tc21vLXRlaXYtY29tbW9uLXlhbmctdHlwZXMge3ByZWZpeCBvci10ZWl2LXR5cGVzOyB9CgogICAgaW1wb3J0IG8tcmFuLXNtby10ZWl2LWNvbW1vbi15YW5nLWV4dGVuc2lvbnMge3ByZWZpeCBvci10ZWl2LXlleHQ7IH0KCiAgICBpbXBvcnQgby1yYW4tc21vLXRlaXYtb2FtIHtwcmVmaXggb3ItdGVpdi1vYW07IH0KCiAgICBpbXBvcnQgby1yYW4tc21vLXRlaXYtY2xvdWQge3ByZWZpeCBvci10ZWl2LWNsb3VkOyB9CgogICAgb3JnYW5pemF0aW9uICJPUkFOIjsKICAgIGNvbnRhY3QgIlRoZSBBdXRob3JzIjsKICAgIGRlc2NyaXB0aW9uCiAgICAgICAgIlJBTiBPJk0gdG8gQ2xvdWQgdG9wb2xvZ3kgbW9kZWwuCgogICAgICAgIFRoaXMgbW9kZWwgY29udGFpbnMgdGhlIFJBTiBPJk0gdG8gQ2xvdWQgdG9wb2xvZ3kgcmVsYXRpb25zCgogICAgICAgIENvcHlyaWdodCAoQykgMjAyNCBFcmljc3NvbgogICAgICAgIE1vZGlmaWNhdGlvbnMgQ29weXJpZ2h0IChDKSAyMDI0IE9wZW5JbmZyYSBGb3VuZGF0aW9uIEV1cm9wZQoKICAgICAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpOwogICAgICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KICAgICAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKCiAgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCgogICAgICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKICAgICAgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsCiAgICAgICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCiAgICAgICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAogICAgICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgoKICAgICAgICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCI7CgogICAgcmV2aXNpb24gIjIwMjQtMDUtMDIiIHsKICAgICAgICBkZXNjcmlwdGlvbiAiSW5pdGlhbCByZXZpc2lvbi4iOwogICAgICAgIG9yLXRlaXYteWV4dDpsYWJlbCAwLjMuMDsKICAgIH0KCiAgICByZXZpc2lvbiAiMjAyNC0wNy0xNSIgewogICAgICAgIGRlc2NyaXB0aW9uICJUaGlzIHJldmlzaW9uIGFsaWducyBPLVJBTiBXb3JrIEdyb3VwIDEwIFN0YWdlIDIgU3BlY2lmaWNhdGlvbiAoTy1SQU4uV0cxMC5URSZJVi1DSU1JLjAtUjAwNC52MDIuMDApIjsKICAgICAgICBvci10ZWl2LXlleHQ6bGFiZWwgMC40LjA7CiAgICB9CgogICAgb3ItdGVpdi15ZXh0OmRvbWFpbiBSRUxfT0FNX0NMT1VEOwoKICAgIG9yLXRlaXYteWV4dDpiaURpcmVjdGlvbmFsVG9wb2xvZ3lSZWxhdGlvbnNoaXAgTUFOQUdFREVMRU1FTlRfREVQTE9ZRURfQVNfQ0xPVURJRklFRE5GIHsgIC8vIDAuLjEgdG8gMQoKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6VG9wX0dycF9UeXBlOwogICAgICAgIGtleSBpZDsKCiAgICAgICAgbGVhZiBkZXBsb3llZC1hcy1jbG91ZGlmaWVkTkYgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiTWFuYWdlZCBFbGVtZW50IGRlcGxveWVkIGFzIENsb3VkaWZpZWQgTkYuIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmFTaWRlIG9yLXRlaXYtb2FtOk1hbmFnZWRFbGVtZW50OwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgfQoKICAgICAgICBsZWFmIGRlcGxveWVkLW1hbmFnZWRFbGVtZW50IHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIkNsb3VkaWZpZWQgTkYgZGVwbG95cyBNYW5hZ2VkIEVsZW1lbnQuIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmJTaWRlIG9yLXRlaXYtY2xvdWQ6Q2xvdWRpZmllZE5GOwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgICAgIG1hbmRhdG9yeSB0cnVlOwogICAgICAgIH0KICAgIH0KCiAgICBvci10ZWl2LXlleHQ6YmlEaXJlY3Rpb25hbFRvcG9sb2d5UmVsYXRpb25zaGlwIE5GREVQTE9ZTUVOVF9TRVJWRVNfTUFOQUdFREVMRU1FTlQgeyAvLyAxLi5uIHRvIDEKCiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOlRvcF9HcnBfVHlwZTsKICAgICAgICBrZXkgaWQ7CgogICAgICAgIGxlYWYgc2VydmljZWQtbWFuYWdlZEVsZW1lbnQgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiTWFuYWdlZCBFbGVtZW50IHNlcnZpY2VkIGJ5IHRoaXMgTkYgRGVwbG95bWVudC4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YVNpZGUgb3ItdGVpdi1jbG91ZDpORkRlcGxveW1lbnQ7CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICAgICAgbWFuZGF0b3J5IHRydWU7CiAgICAgICAgfQoKICAgICAgICBsZWFmLWxpc3Qgc2VydmluZy1uRkRlcGxveW1lbnQgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiTkYgRGVwbG95bWVudCB0aGF0IHNlcnZlcyB0aGlzIE1hbmFnZWQgRWxlbWVudC4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YlNpZGUgb3ItdGVpdi1vYW06TWFuYWdlZEVsZW1lbnQ7CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICAgICAgbWluLWVsZW1lbnRzIDE7CiAgICAgICAgfQogICAgfQp9
-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-07-15 bW9kdWxlIG8tcmFuLXNtby10ZWl2LXJlbC1vYW0tcmFuIHsKICAgIHlhbmctdmVyc2lvbiAxLjE7CiAgICBuYW1lc3BhY2UgInVybjpvLXJhbjpzbW8tdGVpdi1yZWwtb2FtLXJhbiI7CiAgICBwcmVmaXggb3ItdGVpdi1yZWwtb2FtcmFuOwoKICAgIGltcG9ydCBvLXJhbi1zbW8tdGVpdi1jb21tb24teWFuZy10eXBlcyB7IHByZWZpeCBvci10ZWl2LXR5cGVzOyB9CgogICAgaW1wb3J0IG8tcmFuLXNtby10ZWl2LWNvbW1vbi15YW5nLWV4dGVuc2lvbnMgeyBwcmVmaXggb3ItdGVpdi15ZXh0OyB9CgogICAgaW1wb3J0IG8tcmFuLXNtby10ZWl2LW9hbSB7IHByZWZpeCBvci10ZWl2LW9hbTsgfQoKICAgIGltcG9ydCBvLXJhbi1zbW8tdGVpdi1yYW4geyBwcmVmaXggb3ItdGVpdi1yYW47IH0KCiAgICBvcmdhbml6YXRpb24gIk9SQU4iOwogICAgY29udGFjdCAiVGhlIEF1dGhvcnMiOwogICAgZGVzY3JpcHRpb24KICAgICAgICAiUkFOIE8mTSB0byBMb2dpY2FsIHRvcG9sb2d5IG1vZGVsLgoKICAgICAgICBUaGlzIG1vZGVsIGNvbnRhaW5zIHRoZSBSQU4gTyZNIHRvIExvZ2ljYWwgdG9wb2xvZ3kgcmVsYXRpb25zCgogICAgICAgIENvcHlyaWdodCAoQykgMjAyNCBFcmljc3NvbgogICAgICAgIE1vZGlmaWNhdGlvbnMgQ29weXJpZ2h0IChDKSAyMDI0IE9wZW5JbmZyYSBGb3VuZGF0aW9uIEV1cm9wZQoKICAgICAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpOwogICAgICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KICAgICAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKCiAgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCgogICAgICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKICAgICAgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsCiAgICAgICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCiAgICAgICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAogICAgICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgoKICAgICAgICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCI7CgogICAgcmV2aXNpb24gIjIwMjQtMDUtMjQiIHsKICAgICAgICBkZXNjcmlwdGlvbiAiSW5pdGlhbCByZXZpc2lvbi4iOwogICAgICAgIG9yLXRlaXYteWV4dDpsYWJlbCAwLjMuMDsKICAgIH0KCiAgICByZXZpc2lvbiAiMjAyNC0wNy0xNSIgewogICAgICAgIGRlc2NyaXB0aW9uICJUaGlzIHJldmlzaW9uIGFsaWducyBPLVJBTiBXb3JrIEdyb3VwIDEwIFN0YWdlIDIgU3BlY2lmaWNhdGlvbiAoTy1SQU4uV0cxMC5URSZJVi1DSU1JLjAtUjAwNC52MDIuMDApIjsKICAgICAgICBvci10ZWl2LXlleHQ6bGFiZWwgMC40LjA7CiAgICB9CgogICAgb3ItdGVpdi15ZXh0OmRvbWFpbiBSRUxfT0FNX1JBTjsKCiAgICBvci10ZWl2LXlleHQ6YmlEaXJlY3Rpb25hbFRvcG9sb2d5UmVsYXRpb25zaGlwIE1BTkFHRURFTEVNRU5UX01BTkFHRVNfT0RVRlVOQ1RJT04geyAgICAvLyAxIHRvIDAuLm4KCiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOlRvcF9HcnBfVHlwZTsKICAgICAgICBrZXkgaWQ7CgogICAgICAgIGxlYWYtbGlzdCBtYW5hZ2VkLW9kdUZ1bmN0aW9uIHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIk1hbmFnZWQgRWxlbWVudCBtYW5hZ2VzIE8tRFUgRnVuY3Rpb24uIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmFTaWRlIG9yLXRlaXYtb2FtOk1hbmFnZWRFbGVtZW50OwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgfQoKICAgICAgICBsZWFmIG1hbmFnZWQtYnktbWFuYWdlZEVsZW1lbnQgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiTy1EVSBGdW5jdGlvbiBtYW5hZ2VkIGJ5IE1hbmFnZWQgRWxlbWVudC4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YlNpZGUgb3ItdGVpdi1yYW46T0RVRnVuY3Rpb247CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICAgICAgbWFuZGF0b3J5IHRydWU7CiAgICAgICAgfQogICAgfQoKICAgIG9yLXRlaXYteWV4dDpiaURpcmVjdGlvbmFsVG9wb2xvZ3lSZWxhdGlvbnNoaXAgTUFOQUdFREVMRU1FTlRfTUFOQUdFU19PQ1VDUEZVTkNUSU9OIHsgICAgLy8gMSB0byAwLi5uCgogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICAgICAga2V5IGlkOwoKICAgICAgICBsZWFmLWxpc3QgbWFuYWdlZC1vY3VjcEZ1bmN0aW9uIHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIk1hbmFnZWQgRWxlbWVudCBtYW5hZ2VzIE8tQ1UtQ1AgRnVuY3Rpb24uIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmFTaWRlIG9yLXRlaXYtb2FtOk1hbmFnZWRFbGVtZW50OwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgfQoKICAgICAgICBsZWFmIG1hbmFnZWQtYnktbWFuYWdlZEVsZW1lbnQgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiTy1DVS1DUCBGdW5jdGlvbiBtYW5hZ2VkIGJ5IE1hbmFnZWQgRWxlbWVudC4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YlNpZGUgb3ItdGVpdi1yYW46T0NVQ1BGdW5jdGlvbjsKICAgICAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgICAgICBtYW5kYXRvcnkgdHJ1ZTsKICAgICAgICB9CiAgICB9CgogICAgb3ItdGVpdi15ZXh0OmJpRGlyZWN0aW9uYWxUb3BvbG9neVJlbGF0aW9uc2hpcCBNQU5BR0VERUxFTUVOVF9NQU5BR0VTX09DVVVQRlVOQ1RJT04geyAgICAvLyAxIHRvIDAuLm4KCiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOlRvcF9HcnBfVHlwZTsKICAgICAgICBrZXkgaWQ7CgogICAgICAgIGxlYWYtbGlzdCBtYW5hZ2VkLW9jdXVwRnVuY3Rpb24gewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiTWFuYWdlZCBFbGVtZW50IG1hbmFnZXMgTy1DVS1VUCBGdW5jdGlvbi4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YVNpZGUgb3ItdGVpdi1vYW06TWFuYWdlZEVsZW1lbnQ7CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICB9CgogICAgICAgIGxlYWYgbWFuYWdlZC1ieS1tYW5hZ2VkRWxlbWVudCB7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJPLUNVLVVQIEZ1bmN0aW9uIG1hbmFnZWQgYnkgTWFuYWdlZCBFbGVtZW50LiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDpiU2lkZSBvci10ZWl2LXJhbjpPQ1VVUEZ1bmN0aW9uOwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgICAgIG1hbmRhdG9yeSB0cnVlOwogICAgICAgIH0KICAgIH0KCiAgICBvci10ZWl2LXlleHQ6YmlEaXJlY3Rpb25hbFRvcG9sb2d5UmVsYXRpb25zaGlwIE1BTkFHRURFTEVNRU5UX01BTkFHRVNfT1JVRlVOQ1RJT04geyAgICAvLyAxIHRvIDAuLm4KCiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOlRvcF9HcnBfVHlwZTsKICAgICAgICBrZXkgaWQ7CgogICAgICAgIGxlYWYtbGlzdCBtYW5hZ2VkLW9ydUZ1bmN0aW9uIHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIk1hbmFnZWQgRWxlbWVudCBtYW5hZ2VzIE8tUlUgRnVuY3Rpb24uIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmFTaWRlIG9yLXRlaXYtb2FtOk1hbmFnZWRFbGVtZW50OwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgfQoKICAgICAgICBsZWFmIG1hbmFnZWQtYnktbWFuYWdlZEVsZW1lbnQgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiTy1SVSBGdW5jdGlvbiBtYW5hZ2VkIGJ5IE1hbmFnZWQgRWxlbWVudC4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YlNpZGUgb3ItdGVpdi1yYW46T1JVRnVuY3Rpb247CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICAgICAgbWFuZGF0b3J5IHRydWU7CiAgICAgICAgfQogICAgfQoKICAgIG9yLXRlaXYteWV4dDpiaURpcmVjdGlvbmFsVG9wb2xvZ3lSZWxhdGlvbnNoaXAgTUFOQUdFREVMRU1FTlRfTUFOQUdFU19ORUFSUlRSSUNGVU5DVElPTiB7ICAgIC8vIDEgdG8gMC4ubgoKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6VG9wX0dycF9UeXBlOwogICAgICAgIGtleSBpZDsKCiAgICAgICAgbGVhZi1saXN0IG1hbmFnZWQtbmVhclJUUklDRnVuY3Rpb24gewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiTWFuYWdlZCBFbGVtZW50IG1hbmFnZXMgTmVhciBSVCBSSUMgRnVuY3Rpb24uIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmFTaWRlIG9yLXRlaXYtb2FtOk1hbmFnZWRFbGVtZW50OwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgfQoKICAgICAgICBsZWFmIG1hbmFnZWQtYnktbWFuYWdlZEVsZW1lbnQgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiTmVhciBSVCBSSUMgRnVuY3Rpb24gbWFuYWdlZCBieSBNYW5hZ2VkIEVsZW1lbnQuIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmJTaWRlIG9yLXRlaXYtcmFuOk5lYXJSVFJJQ0Z1bmN0aW9uOwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgICAgIG1hbmRhdG9yeSB0cnVlOwogICAgICAgIH0KICAgIH0KfQ==
+o-ran-smo-teiv-common-yang-types urn:o-ran:smo-teiv-common-yang-types \N [] 2024-10-04 bW9kdWxlIG8tcmFuLXNtby10ZWl2LWNvbW1vbi15YW5nLXR5cGVzIHsKICAgIHlhbmctdmVyc2lvbiAxLjE7CiAgICBuYW1lc3BhY2UgInVybjpvLXJhbjpzbW8tdGVpdi1jb21tb24teWFuZy10eXBlcyI7CiAgICBwcmVmaXggb3ItdGVpdi10eXBlczsKCiAgICBpbXBvcnQgby1yYW4tc21vLXRlaXYtY29tbW9uLXlhbmctZXh0ZW5zaW9ucyB7IHByZWZpeCBvci10ZWl2LXlleHQ7IH0KCiAgICBpbXBvcnQgXzNncHAtY29tbW9uLXlhbmctdHlwZXMgeyBwcmVmaXggdHlwZXMzZ3BwOyB9CgogICAgb3JnYW5pemF0aW9uICJPUkFOIjsKICAgIGNvbnRhY3QgIlRoZSBBdXRob3JzIjsKICAgIGRlc2NyaXB0aW9uCiAgICAiVG9wb2xvZ3kgYW5kIEludmVudG9yeSBjb21tb24gdHlwZXMgbW9kZWwKCiAgICBUaGlzIG1vZGVsIGNvbnRhaW5zIHJlLXVzYWJsZSBkYXRhIHR5cGVzIHRoYXQgdG9wb2xvZ3kgYW5kIGludmVudG9yeSBtb2RlbHMKICAgIHdpbGwgZnJlcXVlbnRseSB1c2UgYXMgcGFydCBvZiB0eXBlcyBhbmQgcmVsYXRpb25zaGlwcy4KCiAgICBDb3B5cmlnaHQgKEMpIDIwMjQgRXJpY3Nzb24KICAgIE1vZGlmaWNhdGlvbnMgQ29weXJpZ2h0IChDKSAyMDI0IE9wZW5JbmZyYSBGb3VuZGF0aW9uIEV1cm9wZQoKICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7CiAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKCiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKCiAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsCiAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgoKICAgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIjsKCiAgICByZXZpc2lvbiAiMjAyNC0xMC0wNCIgewogICAgICAgIGRlc2NyaXB0aW9uICJBZGRlZCBPcmlnaW5fRW50aXR5X01hcHBpbmdfR3JwIGFuZCBPcmlnaW5fUmVsYXRpb25zaGlwX01hcHBpbmdfR3JwCiAgICAgICAgZm9yIHNvdXJjZUlkcyBhbmQgcmVsaWFiaWxpdHlJbmRpY2F0b3IgdG8gbWV0YWRhdGEuIjsKICAgICAgICBvci10ZWl2LXlleHQ6bGFiZWwgMC40LjA7CiAgICB9CgogICAgcmV2aXNpb24gIjIwMjQtMDUtMjQiIHsKICAgICAgICBkZXNjcmlwdGlvbiAiSW5pdGlhbCByZXZpc2lvbi4iOwogICAgICAgIG9yLXRlaXYteWV4dDpsYWJlbCAwLjMuMDsKICAgIH0KCiAgICBncm91cGluZyBUb3BfR3JwX1R5cGUgewogICAgICAgIGRlc2NyaXB0aW9uICJHcm91cGluZyBjb250YWluaW5nIHRoZSBrZXkgYXR0cmlidXRlIGNvbW1vbiB0byBhbGwgdHlwZXMuCiAgICAgICAgICAgIEFsbCB0eXBlcyBNVVNUIHVzZSB0aGlzIGdyb3VwaW5nLiI7CgogICAgICAgIGxlYWYgaWQgewogICAgICAgICAgICB0eXBlIHN0cmluZzsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIlVuaXF1ZSBpZGVudGlmaWVyIG9mIHRvcG9sb2d5IGVudGl0aWVzLiBSZXByZXNlbnRzIHRoZQogICAgICAgICAgICAgICAgRW50aXR5IEluc3RhbmNlIElkZW50aWZpZXIuIjsKICAgICAgICB9CiAgICB9CgogICAgY29udGFpbmVyIGRlY29yYXRvcnMgewogICAgICAgIGRlc2NyaXB0aW9uCiAgICAgICAgICAgICJUaGlzIGNvbnRhaW5lciBzZXJ2ZXMgYXMgZXh0ZW5zaW9uIHBvaW50IGZvciBhcHBsaWNhdGlvbnMgd2lzaGluZwogICAgICAgICAgICB0byBkZWZpbmUgdGhlaXIgb3duIGRlY29yYXRvcnMuIFRoaXMgaXMgZG9uZSB2aWEgYXVnbWVudGF0aW9ucy4gVGhleQogICAgICAgICAgICBjYW4gb25seSBiZSBkZWZpbmVkIGluIG5hbWUgdmFsdWUgcGFpci4KCiAgICAgICAgICAgIFRoaXMgaXMgYSBjb25zdW1lciBkYXRhIGFuZCBjYW4gYmUgYXR0YWNoZWQgdG8gVG9wb2xvZ3kgRW50aXR5IG9yCiAgICAgICAgICAgIFRvcG9sb2d5IFJlbGF0aW9uIGluc3RhbmNlLCBvdXRzaWRlIG9mIHRoZSBkZWNsYXJlZCBUb3BvbG9neSBFbnRpdHkKICAgICAgICAgICAgb3IgVG9wb2xvZ3kgUmVsYXRpb25zaGlwJ3MgYXR0cmlidXRlcy4gVGhpcyBjYW5ub3QgYmUgaW5zdGFudGlhdGVkLAogICAgICAgICAgICBhbmQgaXQgTVVTVCBOT1QgYmUgYXVnbWVudGVkIG9yIGRldmlhdGVkIGluIGFueSB3YXksIHVubGVzcyBzdGF0ZWQKICAgICAgICAgICAgb3RoZXJ3aXNlLiI7CiAgICB9CgogICAgbGVhZi1saXN0IGNsYXNzaWZpZXJzIHsKICAgICAgICBkZXNjcmlwdGlvbgogICAgICAgICAgICAiQ29uc3VtZXIgZGVmaW5lZCB0YWdzIHRvIHRvcG9sb2d5IGVudGl0aWVzIGFuZCByZWxhdGlvbnNoaXBzLgoKICAgICAgICAgICAgVGhpcyBpcyBhIGNvbnN1bWVyIGRhdGEgYW5kIGNhbiBiZSBhdHRhY2hlZCB0byBUb3BvbG9neSBFbnRpdHkgb3IKICAgICAgICAgICAgVG9wb2xvZ3kgUmVsYXRpb24gaW5zdGFuY2UsIG91dHNpZGUgb2YgdGhlIGRlY2xhcmVkIFRvcG9sb2d5IEVudGl0eQogICAgICAgICAgICBvciBUb3BvbG9neSBSZWxhdGlvbnNoaXAncyBhdHRyaWJ1dGVzLiBUaGlzIGNhbm5vdCBiZSBpbnN0YW50aWF0ZWQsCiAgICAgICAgICAgIGFuZCBpdCBNVVNUIE5PVCBiZSBhdWdtZW50ZWQgb3IgZGV2aWF0ZWQgaW4gYW55IHdheSwgdW5sZXNzIHN0YXRlZAogICAgICAgICAgICBvdGhlcndpc2UuIjsKCiAgICAgICAgdHlwZSBpZGVudGl0eXJlZiB7IGJhc2UgY2xhc3NpZmllcjsgfQogICAgfQoKICAgIGdyb3VwaW5nIE9yaWdpbl9FbnRpdHlfTWFwcGluZ19HcnAgewogICAgICAgIGRlc2NyaXB0aW9uICJHcm91cGluZyB0byBpZGVudGlmeSBzb3VyY2VJZHMgb24gYSB0b3BvbG9neSBlbnRpdHkuIjsKCiAgICAgICAgbGVhZi1saXN0IHNvdXJjZUlkcyB7CgogICAgICAgICAgICBkZXNjcmlwdGlvbgogICAgICAgICAgICAgICAgIkFuIG9yZGVyZWQgbGlzdCBvZiBpZGVudGl0aWVzIHRoYXQgcmVwcmVzZW50IHRoZSBzZXQgb2YgbmF0aXZlCiAgICAgICAgICAgICAgICBzb3VyY2UgaWRlbnRpZmllcnMgZm9yIHBhcnRpY2lwYXRpbmcgZW50aXRpZXMuCgogICAgICAgICAgICAgICAgVGhpcyBtdXN0IGJlIGF0dGFjaGVkIHRvIHRoZSBUb3BvbG9neSBFbnRpdHkgaW5zdGFuY2UsIG91dHNpZGUgb2YgdGhlCiAgICAgICAgICAgICAgICBkZWNsYXJlZCBUb3BvbG9neSBFbnRpdHkncyBhdHRyaWJ1dGVzLiBUaGlzIGlzIGV4cG9zZWQgdG8gdGhlCiAgICAgICAgICAgICAgICBjb25zdW1lcnMgYW5kIGNhbiBvbmx5IGJlIHNldCBieSB0aGUgcmVzcG9uc2libGUgYWRhcHRlci4gVGhpcwogICAgICAgICAgICAgICAgY2Fubm90IGJlIGluc3RhbnRpYXRlZCwgYW5kIGl0IE1VU1QgTk9UIGJlIGF1Z21lbnRlZCBvciBkZXZpYXRlZAogICAgICAgICAgICAgICAgaW4gYW55IHdheSwgdW5sZXNzIHN0YXRlZCBvdGhlcndpc2UuIjsKCiAgICAgICAgICAgIHR5cGUgc291cmNlSWQ7CiAgICAgICAgICAgIG9yZGVyZWQtYnkgdXNlcjsKICAgICAgICAgICAgbWluLWVsZW1lbnRzIDE7CiAgICAgICAgfQogICAgfQoKICAgIGdyb3VwaW5nIE9yaWdpbl9SZWxhdGlvbnNoaXBfTWFwcGluZ19HcnAgewogICAgICAgIGRlc2NyaXB0aW9uICJHcm91cGluZyB0byBpZGVudGlmeSBzb3VyY2VJZHMgb24gYSB0b3BvbG9neSByZWxhdGlvbnNoaXAuIjsKCiAgICAgICAgbGVhZi1saXN0IHNvdXJjZUlkcyB7CgogICAgICAgICAgICBkZXNjcmlwdGlvbgogICAgICAgICAgICAgICAgIkFuIG9yZGVyZWQgbGlzdCBvZiBpZGVudGl0aWVzIHRoYXQgcmVwcmVzZW50IHRoZSBzZXQgb2YgbmF0aXZlCiAgICAgICAgICAgICAgICBzb3VyY2UgaWRlbnRpZmllcnMgZm9yIHBhcnRpY2lwYXRpbmcgZW50aXRpZXMgaW4gdGhlIHJlbGF0aW9uc2hpcC4KCiAgICAgICAgICAgICAgICBUaGlzIG11c3QgYmUgYXR0YWNoZWQgdG8gdGhlIFRvcG9sb2d5IFJlbGF0aW9uIGluc3RhbmNlLCBvdXRzaWRlIG9mIHRoZQogICAgICAgICAgICAgICAgZGVjbGFyZWQgVG9wb2xvZ3kgUmVsYXRpb25zaGlwJ3MgYXR0cmlidXRlcy4gVGhpcyBpcyBleHBvc2VkIHRvIHRoZQogICAgICAgICAgICAgICAgY29uc3VtZXJzIGFuZCBjYW4gb25seSBiZSBzZXQgYnkgdGhlIHJlc3BvbnNpYmxlIGFkYXB0ZXIuIFRoaXMKICAgICAgICAgICAgICAgIGNhbm5vdCBiZSBpbnN0YW50aWF0ZWQsIGFuZCBpdCBNVVNUIE5PVCBiZSBhdWdtZW50ZWQgb3IgZGV2aWF0ZWQgaW4KICAgICAgICAgICAgICAgIGFueSB3YXksIHVubGVzcyBzdGF0ZWQgb3RoZXJ3aXNlLiI7CgogICAgICAgICAgICB0eXBlIHNvdXJjZUlkOwogICAgICAgICAgICBvcmRlcmVkLWJ5IHVzZXI7CiAgICAgICAgICAgIG1pbi1lbGVtZW50cyAyOwogICAgICAgIH0KICAgIH0KCiAgICBjb250YWluZXIgbWV0YWRhdGEgewogICAgICAgIGRlc2NyaXB0aW9uCiAgICAgICAgICAgICJUaGlzIGNvbnRhaW5lciBzZXJ2ZXMgYXMgYW4gZXh0ZW5zaW9uIHBvaW50IHRvIGRlZmluZSBtZXRhZGF0YS4gVGhleQogICAgICAgICAgICBjYW4gb25seSBiZSBkZWZpbmVkIGluIG5hbWUgdmFsdWUgcGFpcnMuCgogICAgICAgICAgICBUaGlzIG11c3QgYmUgYXR0YWNoZWQgdG8gdGhlIFRvcG9sb2d5IEVudGl0eSBvciBUb3BvbG9neSBSZWxhdGlvbiBpbnN0YW5jZSwKICAgICAgICAgICAgb3V0c2lkZSBvZiB0aGUgZGVjbGFyZWQgVG9wb2xvZ3kgRW50aXR5IG9yIFRvcG9sb2d5IFJlbGF0aW9uc2hpcCdzCiAgICAgICAgICAgIGF0dHJpYnV0ZXMuIFRoaXMgaXMgZXhwb3NlZCB0byB0aGUgY29uc3VtZXJzIGFuZCBjYW4gb25seSBiZSBzZXQgYnkKICAgICAgICAgICAgdGhlIHJlc3BvbnNpYmxlIGFkYXB0ZXIuIFRoaXMgY2Fubm90IGJlIGluc3RhbnRpYXRlZCwgYW5kIGl0IE1VU1QgTk9UIGJlCiAgICAgICAgICAgIGF1Z21lbnRlZCBvciBkZXZpYXRlZCBpbiBhbnkgd2F5LCB1bmxlc3Mgc3RhdGVkIG90aGVyd2lzZS4iOwoKICAgICAgICBsZWFmIHJlbGlhYmlsaXR5SW5kaWNhdG9yIHsKICAgICAgICAgICAgdHlwZSBlbnVtZXJhdGlvbiB7CiAgICAgICAgICAgICAgICBlbnVtIE9LIHsKICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiVGhlIGRhdGEgaXMgaW4gYWxpZ25tZW50IHdpdGggdGhlIHNvdXJjZSBvZiB0cnV0aCwKICAgICAgICAgICAgICAgICAgICBhcyBmYXIgYXMgVG9wb2xvZ3kgRXhwb3N1cmUgSGFuZGxpbmcgaXMgYXdhcmUuIjsKICAgICAgICAgICAgICAgICAgICB2YWx1ZSAwOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZW51bSBSRVNUT1JFRCB7CiAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIlRoZSBkYXRhIHdhcyByZXN0b3JlZCBmcm9tIGJhY2t1cCBhbmQgdGhlIHJlc3BvbnNpYmxlCiAgICAgICAgICAgICAgICAgICAgYWRhcHRlcnMgYXJlIGNoZWNraW5nIHRvIGVuc3VyZSB0aGUgZGF0YSBpcyBjdXJyZW50LiI7CiAgICAgICAgICAgICAgICAgICAgdmFsdWUgMTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVudW0gQURWSVNFRCB7CiAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIkVudGl0eSBpbXBsaWNpdGx5IGNyZWF0ZWQgYnkgVG9wb2xvZ3kgRXhwb3N1cmUgSGFuZGxpbmcgYW5kCiAgICAgICAgICAgICAgICAgICAgcG90ZW50aWFsbHkgbm90IGFsaWduZWQgd2l0aCB0aGUgc291cmNlIG9mIHRydXRoLiI7CiAgICAgICAgICAgICAgICAgICAgdmFsdWUgMjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBpZGVudGl0eSBjbGFzc2lmaWVyIHsKICAgICAgICBkZXNjcmlwdGlvbiAiVGhlIGNsYXNzaWZpZXIgaXMgdXNlZCBhcyBhIGJhc2UgdG8gcHJvdmlkZSBhbGwgY2xhc3NpZmllcnMKICAgICAgICB3aXRoIGlkZW50aXR5LiAiOwogICAgfQoKICAgIHR5cGVkZWYgc291cmNlSWQgewogICAgICAgIGRlc2NyaXB0aW9uICJBbiBpZGVudGl0eSB0aGF0IHJlcHJlc2VudHMgYSBuYXRpdmUgaWRlbnRpZmllciBvZiBhIHRvcG9sb2d5IGVudGl0eS4iOwogICAgICAgIHR5cGUgc3RyaW5nOwogICAgfQp9
+o-ran-smo-teiv-equipment urn:o-ran:smo-teiv-equipment EQUIPMENT [] 2024-10-21 bW9kdWxlIG8tcmFuLXNtby10ZWl2LWVxdWlwbWVudCB7CiAgICB5YW5nLXZlcnNpb24gMS4xOwogICAgbmFtZXNwYWNlICJ1cm46by1yYW46c21vLXRlaXYtZXF1aXBtZW50IjsKICAgIHByZWZpeCBvci10ZWl2LWVxdWlwOwoKICAgIGltcG9ydCBvLXJhbi1zbW8tdGVpdi1jb21tb24teWFuZy10eXBlcyB7cHJlZml4IG9yLXRlaXYtdHlwZXM7IH0KCiAgICBpbXBvcnQgby1yYW4tc21vLXRlaXYtY29tbW9uLXlhbmctZXh0ZW5zaW9ucyB7cHJlZml4IG9yLXRlaXYteWV4dDsgfQoKICAgIGltcG9ydCBpZXRmLWdlby1sb2NhdGlvbiB7CiAgICAgICAgcHJlZml4IGdlbzsKICAgICAgICByZWZlcmVuY2UgIlJGQyA5MTc5OiBBIFlBTkcgR3JvdXBpbmcgZm9yIEdlb2dyYXBoaWMgTG9jYXRpb25zIjsKICAgIH0KCiAgICBvcmdhbml6YXRpb24gIk9SQU4iOwogICAgY29udGFjdCAiVGhlIEF1dGhvcnMiOwogICAgZGVzY3JpcHRpb24KICAgICJSQU4gRXF1aXBtZW50IHRvcG9sb2d5IG1vZGVsLgoKICAgIFRoaXMgbW9kZWwgY29udGFpbnMgdGhlIHRvcG9sb2d5IGVudGl0aWVzIGFuZCByZWxhdGlvbnMgaW4gdGhlCiAgICBSQU4gRXF1aXBtZW50IGRvbWFpbiwgd2hpY2ggaXMgbW9kZWxsZWQgdG8gdW5kZXJzdGFuZCB0aGUgcGh5c2ljYWwKICAgIGxvY2F0aW9uIG9mIGVxdWlwbWVudCBzdWNoIGFzIGFudGVubmFzIGFzc29jaWF0ZWQgd2l0aCBhIGNlbGwvY2FycmllcgogICAgYW5kIHRoZWlyIHJlbGV2YW50IHByb3BlcnRpZXMgZS5nLiB0aWx0LCBtYXggcG93ZXIgZXRjLgoKICAgIENvcHlyaWdodCAoQykgMjAyNCBFcmljc3NvbgogICAgTW9kaWZpY2F0aW9ucyBDb3B5cmlnaHQgKEMpIDIwMjQgT3BlbkluZnJhIEZvdW5kYXRpb24gRXVyb3BlCgogICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTsKICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KICAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAoKICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAoKICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUywKICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgogICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCI7CgogICAgcmV2aXNpb24gIjIwMjQtMTAtMjEiIHsKICAgICAgICBkZXNjcmlwdGlvbiAiRGVwcmVjYXRlIEFudGVubmFNb2R1bGUgYXR0cmlidXRlIGFudGVubmFCZWFtV2lkdGguCiAgICAgICAgVG8gYmUgcmVwbGFjZWQgYnkgaG9yaXpvbnRhbEJlYW1XaWR0aCBhbmQgdmVydGljYWxCZWFtV2lkdGguIjsKICAgICAgICBvci10ZWl2LXlleHQ6bGFiZWwgMC42LjA7CiAgICB9CgogICAgcmV2aXNpb24gIjIwMjQtMTAtMDgiIHsKICAgICAgICBkZXNjcmlwdGlvbiAiQWRkZWQgYXppbXV0aCBhdHRyaWJ1dGUgZm9yIEFudGVubmFNb2R1bGUuIjsKICAgICAgICBvci10ZWl2LXlleHQ6bGFiZWwgMC41LjA7CiAgICB9CgogICAgcmV2aXNpb24gIjIwMjQtMTAtMDQiIHsKICAgICAgICBkZXNjcmlwdGlvbiAiQWRkZWQgZ3JvdXBpbmdzLCBPcmlnaW5fRW50aXR5X01hcHBpbmdfR3JwIG9yIE9yaWdpbl9SZWxhdGlvbnNoaXBfTWFwcGluZ19HcnAKICAgICAgICB0byB0aGUgY29ycmVzcG9uZGluZyB0b3BvbG9neSBvYmplY3RzLiI7CiAgICAgICAgb3ItdGVpdi15ZXh0OmxhYmVsIDAuNC4wOwogICAgfQoKICAgIHJldmlzaW9uICIyMDI0LTA1LTI0IiB7CiAgICAgICAgZGVzY3JpcHRpb24gIkluaXRpYWwgcmV2aXNpb24uIjsKICAgICAgICBvci10ZWl2LXlleHQ6bGFiZWwgMC4zLjA7CiAgICB9CgogICAgb3ItdGVpdi15ZXh0OmRvbWFpbiBFUVVJUE1FTlQ7CgogICAgbGlzdCBBbnRlbm5hTW9kdWxlIHsKICAgICAgICBkZXNjcmlwdGlvbiAiQW4gQW50ZW5uYSBNb2R1bGUgcmVwcmVzZW50cyB0aGUgcGh5c2ljYWwgYXNwZWN0IG9mIGFuCiAgICAgICAgYW50ZW5uYS4iOwoKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6VG9wX0dycF9UeXBlOwogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpPcmlnaW5fRW50aXR5X01hcHBpbmdfR3JwOwogICAgICAgIGtleSBpZDsKCiAgICAgICAgY29udGFpbmVyIGF0dHJpYnV0ZXMgewogICAgICAgICAgICBsZWFmIGFudGVubmFNb2RlbE51bWJlciB7CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiVmVuZG9yLXNwZWNpZmljIGFudGVubmEgbW9kZWwgaWRlbnRpZmllci4gVGhpcwogICAgICAgICAgICAgICAgYXR0cmlidXRlIGlzIHBhcnQgb2YgQUlTRyB2MyBBREIgU3RhbmRhcmQgYW5kIGhhcyBubwogICAgICAgICAgICAgICAgb3BlcmF0aW9uYWwgaW1wYWN0LiI7CiAgICAgICAgICAgICAgICB0eXBlIHN0cmluZzsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbGVhZiBtZWNoYW5pY2FsQW50ZW5uYUJlYXJpbmcgewogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIkFudGVubmEgYmVhcmluZyBvbiBhbnRlbm5hIHN1YnVuaXQgd2hlcmUgYW50ZW5uYQogICAgICAgICAgICAgICAgdW5pdCBpcyBpbnN0YWxsZWQuIjsKICAgICAgICAgICAgICAgIHR5cGUgaW50MzI7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGxlYWYgbWVjaGFuaWNhbEFudGVubmFUaWx0IHsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJUaGUgZml4ZWQgYW50ZW5uYSB0aWx0IG9mIHRoZSBpbnN0YWxsYXRpb24sIGRlZmluZWQKICAgICAgICAgICAgICAgIGFzIHRoZSBpbmNsaW5hdGlvbiBvZiB0aGUgYW50ZW5uYSBlbGVtZW50IHJlc3BlY3QgdG8gdGhlCiAgICAgICAgICAgICAgICB2ZXJ0aWNhbCBwbGFuZS4gSXQgaXMgYSBzaWduZWQgdmFsdWUuIFBvc2l0aXZlIGluZGljYXRlcwogICAgICAgICAgICAgICAgZG93bnRpbHQsIGFuZCBuZWdhdGl2ZSBpbmRpY2F0ZXMgdXB0aWx0LiI7CiAgICAgICAgICAgICAgICB0eXBlIGludDMyOwogICAgICAgICAgICB9CgogICAgICAgICAgICBsZWFmIHBvc2l0aW9uV2l0aGluU2VjdG9yIHsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJBbnRlbm5hIHVuaXQgcG9zaXRpb24gd2l0aGluIHNlY3Rvci4gVGhpcyBhdHRyaWJ1dGUKICAgICAgICAgICAgICAgIGlzIHBhcnQgb2YgQUlTRyB2MyBBREIgU3RhbmRhcmQgYW5kIGhhcyBubyBvcGVyYXRpb25hbAogICAgICAgICAgICAgICAgaW1wYWN0LiI7CiAgICAgICAgICAgICAgICB0eXBlIHN0cmluZzsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbGVhZiB0b3RhbFRpbHQgewogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIlRvdGFsIGFudGVubmEgZWxldmF0aW9uIGluY2x1ZGluZyB0aGUgaW5zdGFsbGVkCiAgICAgICAgICAgICAgICB0aWx0IGFuZCB0aGUgdGlsdCBhcHBsaWVkIGJ5IHRoZSBSZW1vdGUgRWxlY3RyaWNhbAogICAgICAgICAgICAgICAgVGlsdCAoUkVUKS4iOwogICAgICAgICAgICAgICAgdHlwZSBpbnQzMjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbGVhZiBlbGVjdHJpY2FsQW50ZW5uYVRpbHQgewogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIkVsZWN0cmljYWxseS1jb250cm9sbGVkIHRpbHQgb2YgbWFpbiBiZWFtIG1heGltdW0KICAgICAgICAgICAgICAgIHdpdGggcmVzcGVjdCB0byBkaXJlY3Rpb24gb3J0aG9nb25hbCB0byBhbnRlbm5hIGVsZW1lbnQKICAgICAgICAgICAgICAgIGF4aXMgKHNlZSAzR1BQIFRTIDI1LjQ2NikuIFZhbHVlIGlzIHNpZ25lZDsgdGlsdCBkb3duIGlzCiAgICAgICAgICAgICAgICBwb3NpdGl2ZSwgdGlsdCB1cCBpcyBuZWdhdGl2ZS4iOwogICAgICAgICAgICAgICAgdHlwZSBpbnQzMjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbGVhZi1saXN0IGFudGVubmFCZWFtV2lkdGggewogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIlRoZSBhbmd1bGFyIHNwYW4gb2YgdGhlIG1haW4gbG9iZSBvZiB0aGUgYW50ZW5uYQogICAgICAgICAgICAgICAgcmFkaWF0aW9uIHBhdHRlcm4gaW4gdGhlIGhvcml6b250YWwgcGxhbmUuIE1lYXN1cmVkIGluCiAgICAgICAgICAgICAgICBkZWdyZWVzLgoKICAgICAgICAgICAgICAgIERlcHJlY2F0ZWQ6IFNpbmNlIDI0LlE0LiBSZXBsYWNlZCBieSBBbnRlbm5hTW9kdWxlOjpob3Jpem9udGFsQmVhbVdpZHRoCiAgICAgICAgICAgICAgICBhbmQgQW50ZW5uYU1vZHVsZTo6dmVydGljYWxCZWFtV2lkdGguIFBsYW5uZWQgdG8gYmUgcmVtb3ZlZC4iOwogICAgICAgICAgICAgICAgdHlwZSB1aW50MzI7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGxlYWYgaG9yaXpvbnRhbEJlYW1XaWR0aCAgewogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIlRoZSBhbmd1bGFyIHNwYW4gb2YgdGhlIG1haW4gbG9iZSBvZiB0aGUgYW50ZW5uYQogICAgICAgICAgICAgICAgcmFkaWF0aW9uIHBhdHRlcm4gaW4gdGhlIGhvcml6b250YWwgcGxhbmUuIjsKICAgICAgICAgICAgICAgIHR5cGUgZGVjaW1hbDY0IHsKICAgICAgICAgICAgICAgICAgICBmcmFjdGlvbi1kaWdpdHMgMTsKICAgICAgICAgICAgICAgICAgICByYW5nZSAiMC4uMzYwIjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHVuaXRzICJkZWNpbWFsIGRlZ3JlZXMiOwogICAgICAgICAgICB9CgogICAgICAgICAgICBsZWFmIHZlcnRpY2FsQmVhbVdpZHRoICAgewogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIlRoZSBhbmd1bGFyIHNwYW4gb2YgdGhlIG1haW4gbG9iZSBvZiB0aGUgYW50ZW5uYQogICAgICAgICAgICAgICAgcmFkaWF0aW9uIHBhdHRlcm4gaW4gdGhlIHZlcnRpY2FsIHBsYW5lLiI7CiAgICAgICAgICAgICAgICB0eXBlIGRlY2ltYWw2NCB7CiAgICAgICAgICAgICAgICAgICAgZnJhY3Rpb24tZGlnaXRzIDE7CiAgICAgICAgICAgICAgICAgICAgcmFuZ2UgIjAuLjM2MCI7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB1bml0cyAiZGVjaW1hbCBkZWdyZWVzIjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbGVhZiBhemltdXRoIHsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJUaGUgdmFsdWUgb2YgdGhlIGF6aW11dGggb2YgdGhlIEFudGVubmEgTW9kdWxlLiI7CiAgICAgICAgICAgICAgICB0eXBlIGRlY2ltYWw2NCB7CiAgICAgICAgICAgICAgICAgICAgZnJhY3Rpb24tZGlnaXRzIDE7CiAgICAgICAgICAgICAgICAgICAgcmFuZ2UgIjAuLjM2MCI7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB1bml0cyAiZGVjaW1hbCBkZWdyZWVzIjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgdXNlcyBnZW86Z2VvLWxvY2F0aW9uOwogICAgICAgIH0KICAgIH0KCiAgICBsaXN0IFNpdGUgewogICAgICAgIGRlc2NyaXB0aW9uICJBIHNpdGUgaXMgYSBwaHlzaWNhbCBsb2NhdGlvbiB3aGVyZSBhbiBlcXVpcG1lbnQgY2FuIGJlCiAgICAgICAgaW5zdGFsbGVkLiI7CgogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOk9yaWdpbl9FbnRpdHlfTWFwcGluZ19HcnA7CiAgICAgICAga2V5IGlkOwoKICAgICAgICBjb250YWluZXIgYXR0cmlidXRlcyB7CiAgICAgICAgICAgIGxlYWYgbmFtZSB7CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiTmFtZSBvZiBTaXRlIjsKICAgICAgICAgICAgICAgIHR5cGUgc3RyaW5nOwogICAgICAgICAgICB9CgogICAgICAgICAgICB1c2VzIGdlbzpnZW8tbG9jYXRpb247CiAgICAgICAgfQogICAgfQoKICAgIG9yLXRlaXYteWV4dDpiaURpcmVjdGlvbmFsVG9wb2xvZ3lSZWxhdGlvbnNoaXAgQU5URU5OQU1PRFVMRV9JTlNUQUxMRURfQVRfU0lURSB7IC8vIDAuLm4gdG8gMC4uMQoKICAgICAgICBkZXNjcmlwdGlvbgogICAgICAgICAgICAiVGhlIGFTaWRlIG9mIHRoaXMgcmVsYXRpb25zaGlwIGlzIGFuIGluc3RhbmNlIG9mIHRoZSBBbnRlbm5hTW9kdWxlIHR5cGUuCiAgICAgICAgICAgIFRoZSBiU2lkZSBvZiB0aGlzIHJlbGF0aW9uc2hpcCBpcyBhbiBpbnN0YW5jZSBvZiB0aGUgU2l0ZSB0eXBlLgogICAgICAgICAgICBUaGUgU2l0ZSByZXByZXNlbnRzIHRoZSBwaHlzaWNhbCBsb2NhdGlvbiB3aGVyZSB0aGUgQW50ZW5uYU1vZHVsZSBpcyBpbnN0YWxsZWQuCiAgICAgICAgICAgIEFuIEFudGVubmFNb2R1bGUgaW5zdGFuY2UgY2FuIG9ubHkgYmUgaW5zdGFsbGVkIGF0IG9uZSBTaXRlLgogICAgICAgICAgICBBIFNpdGUgaW5zdGFuY2UgY2FuIGhhdmUgbWFueSBpbnN0YWxsZWQgQW50ZW5uYU1vZHVsZXMuCiAgICAgICAgICAgICI7CgogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOk9yaWdpbl9SZWxhdGlvbnNoaXBfTWFwcGluZ19HcnA7CiAgICAgICAga2V5IGlkOwoKICAgICAgICBsZWFmIGluc3RhbGxlZC1hdC1zaXRlIHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIkFudGVubmEgTW9kdWxlIGluc3RhbGxlZCBhdCBTaXRlLiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDphU2lkZSBBbnRlbm5hTW9kdWxlOwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgfQoKICAgICAgICBsZWFmLWxpc3QgaW5zdGFsbGVkLWFudGVubmFNb2R1bGUgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiU2l0ZSB3aGVyZSBBbnRlbm5hIE1vZHVsZSBpcyBpbnN0YWxsZWQuIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmJTaWRlIFNpdGU7CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICB9CiAgICB9Cn0=
+o-ran-smo-teiv-oam urn:o-ran:smo-teiv-oam OAM [] 2024-10-04 bW9kdWxlIG8tcmFuLXNtby10ZWl2LW9hbSB7CiAgICB5YW5nLXZlcnNpb24gMS4xOwogICAgbmFtZXNwYWNlICJ1cm46by1yYW46c21vLXRlaXYtb2FtIjsKICAgIHByZWZpeCBvci10ZWl2LW9hbTsKCiAgICBpbXBvcnQgby1yYW4tc21vLXRlaXYtY29tbW9uLXlhbmctdHlwZXMgeyBwcmVmaXggb3ItdGVpdi10eXBlczsgfQoKICAgIGltcG9ydCBvLXJhbi1zbW8tdGVpdi1jb21tb24teWFuZy1leHRlbnNpb25zIHsgcHJlZml4IG9yLXRlaXYteWV4dDsgfQoKICAgIG9yZ2FuaXphdGlvbiAiT1JBTiI7CiAgICBjb250YWN0ICJUaGUgQXV0aG9ycyI7CiAgICBkZXNjcmlwdGlvbiAKICAgICJSQU4gTyZNIHRvcG9sb2d5IG1vZGVsLgoKICAgIFRoaXMgbW9kZWwgY29udGFpbnMgdGhlIHRvcG9sb2d5IGVudGl0aWVzIGFuZCByZWxhdGlvbnMgaW4gdGhlCiAgICBSQU4gTyZNIGRvbWFpbiwgd2hpY2ggYXJlIGludGVuZGVkIHRvIHJlcHJlc2VudCBtYW5hZ2VtZW50IHN5c3RlbXMKICAgIGFuZCBtYW5hZ2VtZW50IGludGVyZmFjZXMuCgogICAgQ29weXJpZ2h0IChDKSAyMDI0IEVyaWNzc29uCiAgICBNb2RpZmljYXRpb25zIENvcHlyaWdodCAoQykgMjAyNCBPcGVuSW5mcmEgRm91bmRhdGlvbiBFdXJvcGUKCiAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpOwogICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CgogICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCgogICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLAogICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCiAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCiAgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KCiAgICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCI7CgogICAgcmV2aXNpb24gIjIwMjQtMTAtMDQiIHsKICAgICAgICBkZXNjcmlwdGlvbiAiQWRkZWQgZ3JvdXBpbmcsIE9yaWdpbl9FbnRpdHlfTWFwcGluZ19HcnAgdG8gdGhlIHRvcG9sb2d5IG9iamVjdC4iOwogICAgICAgIG9yLXRlaXYteWV4dDpsYWJlbCAwLjQuMDsKICAgIH0KCiAgICByZXZpc2lvbiAiMjAyNC0wNS0yNCIgewogICAgICAgIGRlc2NyaXB0aW9uICJJbml0aWFsIHJldmlzaW9uLiI7CiAgICAgICAgb3ItdGVpdi15ZXh0OmxhYmVsIDAuMy4wOwogICAgfQoKICAgIG9yLXRlaXYteWV4dDpkb21haW4gT0FNOwoKICAgIGxpc3QgTWFuYWdlZEVsZW1lbnQgewogICAgICAgIGRlc2NyaXB0aW9uICJBIE1hbmFnZWQgRWxlbWVudCAoTUUpIGlzIGEgbm9kZSBpbnRvIGEgdGVsZWNvbW11bmljYXRpb24KICAgICAgICBuZXR3b3JrIHByb3ZpZGluZyBzdXBwb3J0IGFuZC9vciBzZXJ2aWNlIHRvIHN1YnNjcmliZXJzLiBBbiBNRQogICAgICAgIGNvbW11bmljYXRlcyB3aXRoIGEgbWFuYWdlciBhcHBsaWNhdGlvbiAoZGlyZWN0bHkgb3IgaW5kaXJlY3RseSkKICAgICAgICBvdmVyIG9uZSBvciBtb3JlIGludGVyZmFjZXMgZm9yIHRoZSBwdXJwb3NlIG9mIGJlaW5nIG1vbml0b3JlZAogICAgICAgIGFuZC9vciBjb250cm9sbGVkLiI7CgogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOk9yaWdpbl9FbnRpdHlfTWFwcGluZ19HcnA7CiAgICAgICAga2V5IGlkOwogICAgfQp9
+o-ran-smo-teiv-ran urn:o-ran:smo-teiv-ran RAN [] 2024-10-08 bW9kdWxlIG8tcmFuLXNtby10ZWl2LXJhbiB7CiAgICB5YW5nLXZlcnNpb24gMS4xOwogICAgbmFtZXNwYWNlICJ1cm46by1yYW46c21vLXRlaXYtcmFuIjsKICAgIHByZWZpeCBvci10ZWl2LXJhbjsKCiAgICBpbXBvcnQgby1yYW4tc21vLXRlaXYtY29tbW9uLXlhbmctdHlwZXMge3ByZWZpeCBvci10ZWl2LXR5cGVzOyB9CgogICAgaW1wb3J0IG8tcmFuLXNtby10ZWl2LWNvbW1vbi15YW5nLWV4dGVuc2lvbnMge3ByZWZpeCBvci10ZWl2LXlleHQ7IH0KCiAgICBpbXBvcnQgXzNncHAtY29tbW9uLXlhbmctdHlwZXMgeyBwcmVmaXggdHlwZXMzZ3BwOyB9CgogICAgaW1wb3J0IGlldGYtZ2VvLWxvY2F0aW9uIHsKICAgICAgICBwcmVmaXggZ2VvOwogICAgICAgIHJlZmVyZW5jZSAiUkZDIDkxNzk6IEEgWUFORyBHcm91cGluZyBmb3IgR2VvZ3JhcGhpYyBMb2NhdGlvbnMiOwogICAgfQoKICAgIG9yZ2FuaXphdGlvbiAiT1JBTiI7CiAgICBjb250YWN0ICJUaGUgQXV0aG9ycyI7CiAgICBkZXNjcmlwdGlvbgogICAgICAgICJSQU4gTG9naWNhbCB0b3BvbG9neSBtb2RlbC4KCiAgICAgICAgVGhpcyBtb2RlbCBjb250YWlucyB0aGUgdG9wb2xvZ3kgZW50aXRpZXMgYW5kIHJlbGF0aW9ucyBpbiB0aGUKICAgICAgICBSQU4gTG9naWNhbCBkb21haW4sIHdoaWNoIHJlcHJlc2VudHMgdGhlIGZ1bmN0aW9uYWwgY2FwYWJpbGl0eQogICAgICAgIG9mIHRoZSBkZXBsb3llZCBSQU4gdGhhdCBhcmUgcmVsZXZhbnQgdG8gckFwcHMgdXNlIGNhc2VzLgoKICAgICAgICBDb3B5cmlnaHQgKEMpIDIwMjQgRXJpY3Nzb24KICAgICAgICBNb2RpZmljYXRpb25zIENvcHlyaWdodCAoQykgMjAyNCBPcGVuSW5mcmEgRm91bmRhdGlvbiBFdXJvcGUKCiAgICAgICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTsKICAgICAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAgICAgICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CgogICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAoKICAgICAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAgICAgICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLAogICAgICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgogICAgICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKICAgICAgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KCiAgICAgICAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAiOwoKICAgIHJldmlzaW9uICIyMDI0LTEwLTA4IiB7CiAgICAgICAgZGVzY3JpcHRpb24gIkFkZGVkIHJhbmdlIGZvciBhemltdXRoIGF0dHJpYnV0ZSBvZiBTZWN0b3IuIjsKICAgICAgICBvci10ZWl2LXlleHQ6bGFiZWwgMC42LjA7CiAgICB9CgogICAgcmV2aXNpb24gIjIwMjQtMTAtMDQiIHsKICAgICAgICBkZXNjcmlwdGlvbiAiQWRkZWQgZ3JvdXBpbmdzLCBPcmlnaW5fRW50aXR5X01hcHBpbmdfR3JwIG9yIE9yaWdpbl9SZWxhdGlvbnNoaXBfTWFwcGluZ19HcnAKICAgICAgICB0byB0aGUgY29ycmVzcG9uZGluZyB0b3BvbG9neSBvYmplY3QuIjsKICAgICAgICBvci10ZWl2LXlleHQ6bGFiZWwgMC41LjA7CiAgICB9CgogICAgcmV2aXNpb24gIjIwMjQtMDctMTUiIHsKICAgICAgICBkZXNjcmlwdGlvbiAiVGhpcyByZXZpc2lvbiBhbGlnbnMgTy1SQU4gV29yayBHcm91cCAxMCBTdGFnZSAyIFNwZWNpZmljYXRpb24gKE8tUkFOLldHMTAuVEUmSVYtQ0lNSS4wLVIwMDQudjAyLjAwKSI7CiAgICAgICAgb3ItdGVpdi15ZXh0OmxhYmVsIDAuNC4wOwogICAgfQoKICAgIHJldmlzaW9uICIyMDI0LTA1LTI0IiB7CiAgICAgICAgZGVzY3JpcHRpb24gIkluaXRpYWwgcmV2aXNpb24uIjsKICAgICAgICBvci10ZWl2LXlleHQ6bGFiZWwgMC4zLjA7CiAgICB9CgogICAgb3ItdGVpdi15ZXh0OmRvbWFpbiBSQU47CgogICAgbGlzdCBPUlVGdW5jdGlvbiB7CiAgICAgICAgZGVzY3JpcHRpb24gIk8tUkFOIFJhZGlvIFVuaXQgKE8tUlUpLgoKICAgICAgICBBIGxvZ2ljYWwgbm9kZSBob3N0aW5nIExvdy1QSFkgbGF5ZXIgYW5kIFJGIHByb2Nlc3NpbmcgYmFzZWQgb24gYQogICAgICAgIGxvd2VyIGxheWVyIGZ1bmN0aW9uYWwgc3BsaXQuICBUaGlzIGlzIHNpbWlsYXIgdG8gM0dQUOKAmXMg4oCcVFJQ4oCdIG9yCiAgICAgICAg4oCcUlJI4oCdIGJ1dCBtb3JlIHNwZWNpZmljIGluIGluY2x1ZGluZyB0aGUgTG93LVBIWSBsYXllciAoRkZUL2lGRlQsCiAgICAgICAgUFJBQ0ggZXh0cmFjdGlvbikuIFRoZSBPLVJVIHRlcm1pbmF0ZXMgdGhlIE9wZW4gRnJvbnRoYXVsIGludGVyZmFjZQogICAgICAgIChhbHNvIGtub3duIGFzIExMUyBpbnRlcmZhY2UpIGFzIHdlbGwgYXMgTG93LVBIWSBmdW5jdGlvbnMgb2YgdGhlCiAgICAgICAgcmFkaW8gaW50ZXJmYWNlIHRvd2FyZHMgdGhlIFVFLiBUaGlzIGlzIGRlcGxveWVkIGFzIGEgUE5GLiBUaGUgTy1SVQogICAgICAgIHRlcm1pbmF0ZXMgdGhlIE9wZW4gRnJvbnRoYXVsIE0tUGxhbmUgaW50ZXJmYWNlIHRvd2FyZHMgdGhlIE8tRFUKICAgICAgICBhbmQgU01PLgoKICAgICAgICBOb3RlOiBJbiBUb3BvbG9neSwgeW91IGNhbiBjcmVhdGUsIHJlYWQsIHVwZGF0ZSwgYW5kIGRlbGV0ZQogICAgICAgIHRoZSBPLVJVIG9iamVjdC4iOwoKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6VG9wX0dycF9UeXBlOwogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpPcmlnaW5fRW50aXR5X01hcHBpbmdfR3JwOwogICAgICAgIGtleSBpZDsKCiAgICAgICAgY29udGFpbmVyIGF0dHJpYnV0ZXMgewogICAgICAgICAgICBsZWFmIG9ydUlkIHsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJVbmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIE8tUlUgd2l0aGluIGEgT1JVRnVuY3Rpb24iOwogICAgICAgICAgICAgICAgdHlwZSBpbnQ2NDsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBsaXN0IE5lYXJSVFJJQ0Z1bmN0aW9uIHsKICAgICAgICBkZXNjcmlwdGlvbiAiTmVhci1SZWFsLVRpbWUgUkFOIEludGVsbGlnZW50IENvbnRyb2xsZXIgKE5lYXItUlQgUklDKS4KCiAgICAgICAgQW4gTy1SQU4gTmV0d29yayBGdW5jdGlvbiAoTkYpIHRoYXQgZW5hYmxlcyBuZWFyLXJlYWwtdGltZSBjb250cm9sCiAgICAgICAgYW5kIG9wdGltaXphdGlvbiBvZiBSQU4gZWxlbWVudHMgYW5kIHJlc291cmNlcyB2aWEgZmluZS1ncmFpbmVkCiAgICAgICAgZGF0YSBjb2xsZWN0aW9uIGFuZCBhY3Rpb25zIG92ZXIgRTIgaW50ZXJmYWNlLiBJdCBtYXkgaW5jbHVkZQogICAgICAgIEFJL01MIChBcnRpZmljaWFsIEludGVsbGlnZW5jZSAvIE1hY2hpbmUgTGVhcm5pbmcpIHdvcmtmbG93CiAgICAgICAgaW5jbHVkaW5nIG1vZGVsIHRyYWluaW5nLCBpbmZlcmVuY2UsIGFuZCB1cGRhdGVzLgoKICAgICAgICBOb3RlOiBJbiBUb3BvbG9neSwgeW91IGNhbiBjcmVhdGUsIHJlYWQsIHVwZGF0ZSwgYW5kIGRlbGV0ZQogICAgICAgIHRoZSBOZWFyLVJUIFJJQyBvYmplY3QuIjsKCiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOlRvcF9HcnBfVHlwZTsKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6T3JpZ2luX0VudGl0eV9NYXBwaW5nX0dycDsKICAgICAgICBrZXkgaWQ7CgogICAgICAgIGNvbnRhaW5lciBhdHRyaWJ1dGVzIHsKICAgICAgICAgICAgbGVhZiBuZWFyUnRSaWNJZCB7CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiVW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBOZWFyLVJUIFJJQyB3aXRoaW4gYSBOZWFyUlRSSUNGdW5jdGlvbiI7CiAgICAgICAgICAgICAgICB0eXBlIGludDY0OwogICAgICAgICAgICB9CgogICAgICAgICAgICBjb250YWluZXIgcExNTklkIHsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJQTE1OIGlkZW50aWZpZXIgdG8gYmUgdXNlZCBhcyBwYXJ0IG9mIGdsb2JhbCBSQU4KICAgICAgICAgICAgICAgIG5vZGUgaWRlbnRpdHkiOwogICAgICAgICAgICAgICAgdXNlcyB0eXBlczNncHA6UExNTklkOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIGxpc3QgT0RVRnVuY3Rpb24gewogICAgICAgIGRlc2NyaXB0aW9uICJPLVJBTiBEaXN0cmlidXRlZCBVbml0IChPLURVKS4KCiAgICAgICAgVGhlIE8tRFUgaXMgYW4gTy1SQU4gTkYgaW4gdGhlIE8tUkFOIEFyY2hpdGVjdHVyZS4gQW4gTy1EVSwgY29tYmluZWQKICAgICAgICB3aXRoIG9uZSBvciBtb3JlIE8tUlUocykgY29ubmVjdGVkIHRvIGl0LCBzdXBwb3J0cyBhbmQgaXMgZnVsbHkKICAgICAgICBjb21wYXRpYmxlIHdpdGggdGhlIGZ1bmN0aW9ucyBvZiBhIGdOQi1EVSBhcyBkZWZpbmVkIGJ5IDNHUFAgVFMgMzguNDAxLgoKICAgICAgICBUaGUgZm9sbG93aW5nIGlzIHRydWUgZm9yIGEgTy1EVToKICAgICAgICBJcyBjb25uZWN0ZWQgdG8gdGhlIE8tQ1UtQ1AgdGhyb3VnaCB0aGUgRjEtQyBpbnRlcmZhY2UuIElzCiAgICAgICAgY29ubmVjdGVkIHRvIHRoZSBPLUNVLVVQIHRocm91Z2ggdGhlIEYxLVUgaW50ZXJmYWNlLiBPbmUgTy1EVSBpcwogICAgICAgIGNvbm5lY3RlZCB0byBvbmx5IG9uZSBPLUNVLUNQLiBPbmUgTy1EVSBjYW4gYmUgY29ubmVjdGVkIHRvCiAgICAgICAgbXVsdGlwbGUgTy1DVS1VUHMgdW5kZXIgdGhlIGNvbnRyb2wgb2YgdGhlIHNhbWUgTy1DVS1DUC4KCiAgICAgICAgTm90ZTogQSBnTkIgbWF5IGNvbnNpc3Qgb2YgYSBPLUNVLUNQLCBtdWx0aXBsZSBPLUNVLVVQcyBhbmQKICAgICAgICBtdWx0aXBsZSBPLURVcy4gTy1EVSBpcyBhIGNvbmNyZXRlIGNsYXNzIHRoYXQgZXh0ZW5kcyB0aGUgTkctUkFOCiAgICAgICAgbm9kZSBvYmplY3QuIEluIFRvcG9sb2d5LCB5b3UgY2FuIGNyZWF0ZSwgcmVhZCwgdXBkYXRlLCBhbmQgZGVsZXRlCiAgICAgICAgdGhlIGdOQi1EVSBvYmplY3QuIjsKCiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOlRvcF9HcnBfVHlwZTsKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6T3JpZ2luX0VudGl0eV9NYXBwaW5nX0dycDsKICAgICAgICBrZXkgaWQ7CgogICAgICAgIGNvbnRhaW5lciBhdHRyaWJ1dGVzIHsKICAgICAgICAgICAgY29udGFpbmVyIGRVcExNTklkIHsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJQTE1OIGlkZW50aWZpZXIgdXNlZCBhcyBwYXJ0IG9mIFBNIEV2ZW50cyBkYXRhIjsKICAgICAgICAgICAgICAgIHVzZXMgdHlwZXMzZ3BwOlBMTU5JZDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbGVhZiBnTkJEVUlkIHsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJVbmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIERVIHdpdGhpbiBhIGdOb2RlQiI7CiAgICAgICAgICAgICAgICB0eXBlIGludDY0OwogICAgICAgICAgICB9CgogICAgICAgICAgICBsZWFmIGdOQklkIHsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJJZGVudGl0eSBvZiBnTm9kZUIgd2l0aGluIGEgUExNTiI7CiAgICAgICAgICAgICAgICB0eXBlIGludDY0OwogICAgICAgICAgICB9CgogICAgICAgICAgICBsZWFmIGdOQklkTGVuZ3RoIHsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJMZW5ndGggb2YgZ05CSWQgYml0IHN0cmluZyByZXByZXNlbnRhdGlvbiI7CiAgICAgICAgICAgICAgICB0eXBlIGludDMyOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIGxpc3QgT0NVQ1BGdW5jdGlvbiB7CiAgICAgICAgZGVzY3JpcHRpb24gIk8tUkFOIENlbnRyYWxpemVkIFVuaXQgQ29udHJvbCBQbGFuZSAoTy1DVS1DUCkKCiAgICAgICAgVGhpcyBpcyBhIGxvZ2ljYWwgbm9kZSBob3N0aW5nIHRoZSBSYWRpbyBSZXNvdXJjZSBDb250cm9sIChSUkMpIGFuZAogICAgICAgIHRoZSBjb250cm9sIHBsYW5lIHBhcnQgb2YgdGhlIFBhY2tldCBEYXRhIENvbnZlcmdlbmNlIFByb3RvY29sCiAgICAgICAgKFBEQ1ApLiBUaGUgTy1DVS1DUCB0ZXJtaW5hdGVzIHRoZSBFMSBpbnRlcmZhY2UgY29ubmVjdGVkIHdpdGgKICAgICAgICB0aGUgTy1DVS1VUCBhbmQgdGhlIEYxLUMgaW50ZXJmYWNlIGNvbm5lY3RlZCB3aXRoIHRoZSBPLVJBTgogICAgICAgIERpc3RyaWJ1dGVkIFVuaXQgKE8tRFUpLgoKICAgICAgICBUaGUgZm9sbG93aW5nIGlzIHRydWUgZm9yIGEgTy1DVS1DUDoKICAgICAgICBJcyBjb25uZWN0ZWQgdG8gdGhlIE8tRFUgdGhyb3VnaCB0aGUgRjEtQyBpbnRlcmZhY2UuIElzIGNvbm5lY3RlZAogICAgICAgIHRvIHRoZSBPLUNVLVVQIHRocm91Z2ggdGhlIEUxIGludGVyZmFjZS4gT25seSBvbmUgTy1DVS1DUCBpcwogICAgICAgIGNvbm5lY3RlZCB0byBvbmUgTy1EVS4gT25seSBvbmUgTy1DVS1DUCBpcyBjb25uZWN0ZWQgdG8gb25lCiAgICAgICAgTy1DVS1VUC4gT25lIE8tRFUgY2FuIGJlIGNvbm5lY3RlZCB0byBtdWx0aXBsZSBPLUNVLVVQcyB1bmRlcgogICAgICAgIHRoZSBjb250cm9sIG9mIHRoZSBzYW1lIE8tQ1UtQ1AuIE9uZSBPLUNVLVVQIGNhbiBiZSBjb25uZWN0ZWQgdG8KICAgICAgICBtdWx0aXBsZSBEVXMgdW5kZXIgdGhlIGNvbnRyb2wgb2YgdGhlIHNhbWUgTy1DVS1DUC4KCiAgICAgICAgTm90ZTogQSBnTkIgbWF5IGNvbnNpc3Qgb2YgYSBPLUNVLUNQLCBtdWx0aXBsZSBPLUNVLVVQcyBhbmQKICAgICAgICBtdWx0aXBsZSBPLURVcy4gQW4gTy1DVS1DUCBpcyBhIGNvbmNyZXRlIGNsYXNzIHRoYXQgZXh0ZW5kcyB0aGUKICAgICAgICBORy1SQU4gbm9kZSBvYmplY3QuIEluIFRvcG9sb2d5LCB5b3UgY2FuIGNyZWF0ZSwgcmVhZCwgdXBkYXRlLCBhbmQKICAgICAgICBkZWxldGUgdGhlIE8tQ1UtQ1Agb2JqZWN0LiI7CgogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOk9yaWdpbl9FbnRpdHlfTWFwcGluZ19HcnA7CiAgICAgICAga2V5IGlkOwoKICAgICAgICBjb250YWluZXIgYXR0cmlidXRlcyB7CiAgICAgICAgICAgIGxlYWYgZ05CQ1VOYW1lIHsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJOYW1lIG9mIGdOb2RlQi1DVSI7CiAgICAgICAgICAgICAgICB0eXBlIHN0cmluZzsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbGVhZiBnTkJJZCB7CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiSWRlbnRpdHkgb2YgZ05vZGVCIHdpdGhpbiBhIFBMTU4iOwogICAgICAgICAgICAgICAgdHlwZSBpbnQ2NDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbGVhZiBnTkJJZExlbmd0aCB7CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiTGVuZ3RoIG9mIGdOQklkIGJpdCBzdHJpbmcgcmVwcmVzZW50YXRpb24iOwogICAgICAgICAgICAgICAgdHlwZSBpbnQzMjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgY29udGFpbmVyIHBMTU5JZCB7CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiUExNTiBpZGVudGlmaWVyIHRvIGJlIHVzZWQgYXMgcGFydCBvZiBnbG9iYWwgUkFOCiAgICAgICAgICAgICAgICBub2RlIGlkZW50aXR5IjsKICAgICAgICAgICAgICAgIHVzZXMgdHlwZXMzZ3BwOlBMTU5JZDsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBsaXN0IE9DVVVQRnVuY3Rpb24gewogICAgICAgIGRlc2NyaXB0aW9uICJPLVJBTiBDZW50cmFsaXplZCBVbml0IFVzZXIgUGxhbmUgKE8tQ1UtVVApCgogICAgICAgIEFuIE8tQ1UtVVAgaXMgYSBsb2dpY2FsIG5vZGUgaG9zdGluZyB0aGUgVXNlciBQbGFuZSBwYXJ0IG9mIHRoZQogICAgICAgIFBhY2tldCBEYXRhIENvbnZlcmdlbmNlIFByb3RvY29sIChQRENQKSBhbmQgdGhlIFNlcnZpY2UgRGF0YQogICAgICAgIEFkYXB0YXRpb24gUHJvdG9jb2wgKFNEQVApLiBUaGUgTy1DVS1VUCB0ZXJtaW5hdGVzIHRoZSBFMSBpbnRlcmZhY2UKICAgICAgICBjb25uZWN0ZWQgd2l0aCB0aGUgTy1DVS1DUCBhbmQgdGhlIEYxLVUgaW50ZXJmYWNlIGNvbm5lY3RlZCB3aXRoCiAgICAgICAgdGhlIE8tUkFOIERpc3RyaWJ1dGVkIFVuaXQgKE8tRFUpLgoKICAgICAgICBUaGUgZm9sbG93aW5nIGlzIHRydWUgZm9yIGEgTy1DVS1VUDoKICAgICAgICBJcyBjb25uZWN0ZWQgdG8gdGhlIE8tRFUgdGhyb3VnaCB0aGUgRjEtVSBpbnRlcmZhY2UuIElzIGNvbm5lY3RlZAogICAgICAgIHRvIHRoZSBPLUNVLUNQIHRocm91Z2ggdGhlIEUxIGludGVyZmFjZS4gT25lIE8tQ1UtVVAgaXMKICAgICAgICBjb25uZWN0ZWQgdG8gb25seSBvbmUgTy1DVS1DUC4gT25lIE8tRFUgY2FuIGJlIGNvbm5lY3RlZCB0bwogICAgICAgIG11bHRpcGxlIE8tQ1UtVVBzIHVuZGVyIHRoZSBjb250cm9sIG9mIHRoZSBzYW1lIE8tQ1UtQ1AuIE9uZQogICAgICAgIE8tQ1UtVVAgY2FuIGJlIGNvbm5lY3RlZCB0byBtdWx0aXBsZSBEVXMgdW5kZXIgdGhlIGNvbnRyb2wgb2YgdGhlCiAgICAgICAgc2FtZSBPLUNVLUNQLgoKICAgICAgICBOb3RlOiBBIGdOQiBtYXkgY29uc2lzdCBvZiBhbiBPLUNVLUNQLCBtdWx0aXBsZSBPLUNVLVVQcyBhbmQKICAgICAgICBtdWx0aXBsZSBPLURVcy4gQW4gTy1DVS1VUCBpcyBhIGNvbmNyZXRlIGNsYXNzIHRoYXQgZXh0ZW5kcyB0aGUKICAgICAgICBORy1SQU4gbm9kZSBvYmplY3QuIEluIFRvcG9sb2d5LCB5b3UgY2FuIGNyZWF0ZSwgcmVhZCwgdXBkYXRlLCBhbmQKICAgICAgICBkZWxldGUgdGhlIE8tQ1UtVVAgb2JqZWN0LiI7CgogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOk9yaWdpbl9FbnRpdHlfTWFwcGluZ19HcnA7CiAgICAgICAga2V5IGlkOwoKICAgICAgICBjb250YWluZXIgYXR0cmlidXRlcyB7CiAgICAgICAgICAgIGxlYWYgZ05CSWQgewogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIklkZW50aXR5IG9mIGdOb2RlQiB3aXRoaW4gYSBQTE1OIjsKICAgICAgICAgICAgICAgIHR5cGUgaW50NjQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGxlYWYgZ05CSWRMZW5ndGggewogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIkxlbmd0aCBvZiBnTkJJZCBiaXQgc3RyaW5nIHJlcHJlc2VudGF0aW9uIjsKICAgICAgICAgICAgICAgIHR5cGUgaW50MzI7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGxpc3QgcExNTklkTGlzdCB7CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiTGlzdCBvZiBQTE1OIGlkZW50aWZpZXIgdG8gYmUgdXNlZCBhcyBwYXJ0IG9mIGdsb2JhbCBSQU4gbm9kZSBpZGVudGl0eSI7CiAgICAgICAgICAgICAgICB1c2VzIHR5cGVzM2dwcDpQTE1OSWQ7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgbGlzdCBOUkNlbGxDVSB7CiAgICAgICAgZGVzY3JpcHRpb24gIlJlcHJlc2VudHMgYW4gTlIgQ2VsbCBpbiBnTm9kZUItQ1UuCgogICAgICAgIDVHIE5SIGlzIGEgbmV3IHJhZGlvIGFjY2VzcyB0ZWNobm9sb2d5IChSQVQpIGRldmVsb3BlZCBieSAzR1BQIGZvcgogICAgICAgIHRoZSA1RyAoZmlmdGggZ2VuZXJhdGlvbikgbW9iaWxlIG5ldHdvcmsuIEl0IGlzIGRlc2lnbmVkIHRvIGJlIHRoZQogICAgICAgIGdsb2JhbCBzdGFuZGFyZCBmb3IgdGhlIGFpciBpbnRlcmZhY2Ugb2YgNUcgbmV0d29ya3MuCgogICAgICAgIDVHIE5SIGhhcyBzeW5jaHJvbml6YXRpb24gc2lnbmFsIHRoYXQgaXMga25vd24gYXMgUHJpbWFyeQogICAgICAgIFN5bmNocm9uaXphdGlvbiBTaWduYWwgKFBTUykgYW5kIFNlY29uZGFyeSBTeW5jaHJvbml6YXRpb24KICAgICAgICBTaWduYWwgKFNTUykuIFRoZXNlIHNpZ25hbHMgYXJlIHNwZWNpZmljIHRvIE5SIHBoeXNpY2FsIGxheWVyIGFuZAogICAgICAgIHByb3ZpZGUgdGhlIGZvbGxvd2luZyBpbmZvcm1hdGlvbiByZXF1aXJlZCBieSBVRSBmb3IgZG93bmxpbmsKICAgICAgICBzeW5jaHJvbml6YXRpb246IFBTUyBwcm92aWRlcyBSYWRpbyBGcmFtZSBCb3VuZGFyeSAoUG9zaXRpb24gb2YgMXN0CiAgICAgICAgU3ltYm9sIGluIGEgUmFkaW8gZnJhbWUpIFNTUyBwcm92aWRlcyBTdWJmcmFtZSBCb3VuZGFyeSAoUG9zaXRpb24gb2YKICAgICAgICAxc3QgU3ltYm9sIGluIGEgU3ViZnJhbWUpIFBoeXNpY2FsIExheWVyIENlbGwgSUQgKFBDSSkgaW5mb3JtYXRpb24KICAgICAgICB1c2luZyBib3RoIFBTUyBhbmQgU1NTLiI7CgogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOk9yaWdpbl9FbnRpdHlfTWFwcGluZ19HcnA7CiAgICAgICAga2V5IGlkOwoKICAgICAgICBjb250YWluZXIgYXR0cmlidXRlcyB7CiAgICAgICAgICAgIGxlYWYgY2VsbExvY2FsSWQgewogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIlVzZWQgdG9nZXRoZXIgd2l0aCBnTm9kZUIgaWRlbnRpZmllciB0byBpZGVudGlmeSBOUgogICAgICAgICAgICAgICAgY2VsbCBpbiBQTE1OLiBVc2VkIHRvZ2V0aGVyIHdpdGggZ05CSWQgdG8gZm9ybSBOQ0kuIjsKICAgICAgICAgICAgICAgIHR5cGUgaW50MzI7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGNvbnRhaW5lciBwbG1uSWQgewogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIlBMTU4gSUQgZm9yIE5SIENHSS4gSWYgZW1wdHksCiAgICAgICAgICAgICAgICBHTkJDVUNQRnVuY3Rpb246OnBMTU5JZCBpcyB1c2VkIGZvciBQTE1OIElEIGluIE5SIENHSSI7CiAgICAgICAgICAgICAgICB1c2VzIHR5cGVzM2dwcDpQTE1OSWQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGxlYWYgbkNJIHsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJOUiBDZWxsIElkZW50aXR5IjsKICAgICAgICAgICAgICAgIHR5cGUgaW50NjQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGxlYWYgblJUQUMgewogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIk5SIFRyYWNraW5nIEFyZWEgQ29kZSAoVEFDKSI7CiAgICAgICAgICAgICAgICB0eXBlIGludDMyOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIGxpc3QgTlJDZWxsRFUgewogICAgICAgIGRlc2NyaXB0aW9uICJSZXByZXNlbnRzIGFuIE5SIENlbGwgaW4gZ05vZGVCLURVLgoKICAgICAgICA1RyBOUiBpcyBhIG5ldyByYWRpbyBhY2Nlc3MgdGVjaG5vbG9neSAoUkFUKSBkZXZlbG9wZWQgYnkgM0dQUCBmb3IKICAgICAgICB0aGUgNUcgKGZpZnRoIGdlbmVyYXRpb24pIG1vYmlsZSBuZXR3b3JrLiBJdCBpcyBkZXNpZ25lZCB0byBiZSB0aGUKICAgICAgICBnbG9iYWwgc3RhbmRhcmQgZm9yIHRoZSBhaXIgaW50ZXJmYWNlIG9mIDVHIG5ldHdvcmtzLgoKICAgICAgICA1RyBOUiBoYXMgc3luY2hyb25pemF0aW9uIHNpZ25hbCB0aGF0IGlzIGtub3duIGFzIFByaW1hcnkKICAgICAgICBTeW5jaHJvbml6YXRpb24gc2lnbmFsIChQU1MpIGFuZCBTZWNvbmRhcnkgU3luY2hyb25pemF0aW9uIHNpZ25hbAogICAgICAgIChTU1MpLiBUaGVzZSBzaWduYWxzIGFyZSBzcGVjaWZpYyB0byBOUiBwaHlzaWNhbCBsYXllciBhbmQgcHJvdmlkZQogICAgICAgIHRoZSBmb2xsb3dpbmcgaW5mb3JtYXRpb24gcmVxdWlyZWQgYnkgVUUgZm9yIGRvd25saW5rCiAgICAgICAgc3luY2hyb25pemF0aW9uOiBQU1MgcHJvdmlkZXMgUmFkaW8gRnJhbWUgQm91bmRhcnkgKFBvc2l0aW9uIG9mIDFzdAogICAgICAgIFN5bWJvbCBpbiBhIFJhZGlvIGZyYW1lKSBTU1MgcHJvdmlkZXMgU3ViZnJhbWUgQm91bmRhcnkgKFBvc2l0aW9uIG9mCiAgICAgICAgMXN0IFN5bWJvbCBpbiBhIFN1YmZyYW1lKSBQaHlzaWNhbCBMYXllciBDZWxsIElEIChQQ0kpIGluZm9ybWF0aW9uCiAgICAgICAgdXNpbmcgYm90aCBQU1MgYW5kIFNTUy4iOwoKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6VG9wX0dycF9UeXBlOwogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpPcmlnaW5fRW50aXR5X01hcHBpbmdfR3JwOwogICAgICAgIGtleSBpZDsKCiAgICAgICAgY29udGFpbmVyIGF0dHJpYnV0ZXMgewogICAgICAgICAgICBsZWFmIGNlbGxMb2NhbElkIHsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJVc2VkIHRvZ2V0aGVyIHdpdGggZ05vZGVCIGlkZW50aWZpZXIgdG8gaWRlbnRpZnkgTlIKICAgICAgICAgICAgICAgIGNlbGwgaW4gUExNTi4gVXNlZCB0b2dldGhlciB3aXRoIGdOQklkIHRvIGZvcm0gTkNJLiI7CiAgICAgICAgICAgICAgICB0eXBlIGludDMyOwogICAgICAgICAgICB9CgogICAgICAgICAgICBsZWFmIG5DSSB7CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiTlIgQ2VsbCBJZGVudGl0eS4iOwogICAgICAgICAgICAgICAgdHlwZSBpbnQ2NDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbGVhZiBuUlBDSSB7CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiVGhlIFBoeXNpY2FsIENlbGwgSWRlbnRpdHkgKFBDSSkgb2YgdGhlIE5SIGNlbGwuIjsKICAgICAgICAgICAgICAgIHR5cGUgaW50MzI7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGxlYWYgblJUQUMgewogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIk5SIFRyYWNraW5nIEFyZWEgQ29kZSAoVEFDKS4iOwogICAgICAgICAgICAgICAgdHlwZSBpbnQzMjsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBsaXN0IE5SU2VjdG9yQ2FycmllciB7CiAgICAgICAgZGVzY3JpcHRpb24gIlRoZSBOUiBTZWN0b3IgQ2FycmllciBvYmplY3QgcHJvdmlkZXMgdGhlIGF0dHJpYnV0ZXMgZm9yCiAgICAgICAgZGVmaW5pbmcgdGhlIGxvZ2ljYWwgY2hhcmFjdGVyaXN0aWNzIG9mIGEgY2FycmllciAoY2VsbCkgaW4gYQogICAgICAgIHNlY3Rvci4gQSBzZWN0b3IgaXMgYSBjb3ZlcmFnZSBhcmVhIGFzc29jaWF0ZWQgd2l0aCBhIGJhc2Ugc3RhdGlvbgogICAgICAgIGhhdmluZyBpdHMgb3duIGFudGVubmFzLCByYWRpbyBwb3J0cywgYW5kIGNvbnRyb2wgY2hhbm5lbHMuIFRoZQogICAgICAgIGNvbmNlcHQgb2Ygc2VjdG9ycyB3YXMgZGV2ZWxvcGVkIHRvIGltcHJvdmUgY28tY2hhbm5lbCBpbnRlcmZlcmVuY2UKICAgICAgICBpbiBjZWxsdWxhciBzeXN0ZW1zLCBhbmQgbW9zdCB3aXJlbGVzcyBzeXN0ZW1zIHVzZSB0aHJlZSBzZWN0b3IKICAgICAgICBjZWxscy4iOwoKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6VG9wX0dycF9UeXBlOwogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpPcmlnaW5fRW50aXR5X01hcHBpbmdfR3JwOwogICAgICAgIGtleSBpZDsKCiAgICAgICAgY29udGFpbmVyIGF0dHJpYnV0ZXMgewogICAgICAgICAgICBsZWFmIGFyZmNuREwgewogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIk5SIEFic29sdXRlIFJhZGlvIEZyZXF1ZW5jeSBDaGFubmVsIE51bWJlcgogICAgICAgICAgICAgICAgKE5SLUFSRkNOKSBmb3IgZG93bmxpbmsiOwogICAgICAgICAgICAgICAgdHlwZSBpbnQzMjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbGVhZiBhcmZjblVMIHsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJOUiBBYnNvbHV0ZSBSYWRpbyBmcmVxdWVuY3kgQ2hhbm5lbCBOdW1iZXIKICAgICAgICAgICAgICAgIChOUi1BUkZDTikgZm9yIHVwbGluay4iOwogICAgICAgICAgICAgICAgdHlwZSBpbnQzMjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbGVhZiBmcmVxdWVuY3lETCB7CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiUkYgUmVmZXJlbmNlIEZyZXF1ZW5jeSBvZiBkb3dubGluayBjaGFubmVsIjsKICAgICAgICAgICAgICAgIHR5cGUgaW50MzI7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGxlYWYgZnJlcXVlbmN5VUwgewogICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIlJGIFJlZmVyZW5jZSBGcmVxdWVuY3kgb2YgdXBsaW5rIGNoYW5uZWwiOwogICAgICAgICAgICAgICAgdHlwZSBpbnQzMjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbGVhZiBiU0NoYW5uZWxCd0RMIHsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJCUyBDaGFubmVsIGJhbmR3aWR0aCBpbiBNSHogZm9yIGRvd25saW5rLiI7CiAgICAgICAgICAgICAgICB0eXBlIGludDMyOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIGxpc3QgQW50ZW5uYUNhcGFiaWxpdHkgewogICAgICAgIGRlc2NyaXB0aW9uICJUaGlzIE1PIHNlcnZlcyBhcyBhIG1hcHBpbmcgYmV0d2VlbiB0aGUgY2VsbCBhbmQgdGhlIFJCUwogICAgICAgIGVxdWlwbWVudCB1c2VkIHRvIHByb3ZpZGUgY292ZXJhZ2UgaW4gYSBjZXJ0YWluIGdlb2dyYXBoaWNhbCBhcmVhLgogICAgICAgIFRoZSBNTyBhbHNvIGNvbnRyb2xzIHRoZSBtYXhpbXVtIG91dHB1dCBwb3dlciBvZiB0aGUgc2VjdG9yLiI7CgogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOk9yaWdpbl9FbnRpdHlfTWFwcGluZ19HcnA7CiAgICAgICAga2V5IGlkOwoKICAgICAgICBjb250YWluZXIgYXR0cmlidXRlcyB7CiAgICAgICAgICAgIGxlYWYtbGlzdCBlVXRyYW5GcUJhbmRzIHsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJMaXN0IG9mIExURSBmcmVxdWVuY3kgYmFuZHMgdGhhdCBhc3NvY2lhdGVkCiAgICAgICAgICAgICAgICBoYXJkd2FyZSBzdXBwb3J0cyI7CiAgICAgICAgICAgICAgICB0eXBlIHN0cmluZzsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbGVhZi1saXN0IGdlcmFuRnFCYW5kcyB7CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiTGlzdCBvZiBHRVJBTiBmcmVxdWVuY3kgYmFuZHMgdGhhdCBhc3NvY2lhdGVkCiAgICAgICAgICAgICAgICBoYXJkd2FyZSBzdXBwb3J0cyI7CiAgICAgICAgICAgICAgICB0eXBlIHN0cmluZzsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbGVhZi1saXN0IG5SRnFCYW5kcyB7CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiTGlzdCBvZiBOUiBmcmVxdWVuY3kgYmFuZHMgYXNzb2NpYXRlZCBoYXJkd2FyZQogICAgICAgICAgICAgICAgc3VwcG9ydHMiOwogICAgICAgICAgICAgICAgdHlwZSBzdHJpbmc7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgbGlzdCBTZWN0b3IgewogICAgICAgIGRlc2NyaXB0aW9uICJBIGdyb3VwIG9mIGNvLWxvY2F0ZWQgQ2VsbHMgdGhhdCBoYXZlIGEgc2hhcmVkCiAgICAgICAgY292ZXJhZ2UgYXJlYS4iOwoKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6VG9wX0dycF9UeXBlOwogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpPcmlnaW5fRW50aXR5X01hcHBpbmdfR3JwOwogICAgICAgIGtleSBpZDsKCiAgICAgICAgY29udGFpbmVyIGF0dHJpYnV0ZXMgewogICAgICAgICAgICBsZWFmIHNlY3RvcklkIHsKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJVbml2ZXJzYWxseSB1bmlxdWUgSUQgZ2VuZXJhdGVkIGJ5IHRoZSBzZWN0b3IncwogICAgICAgICAgICAgICAgZGlzY292ZXJ5IG1lY2hhbmlzbS4iOwogICAgICAgICAgICAgICAgdHlwZSB1aW50NjQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHVzZXMgZ2VvOmdlby1sb2NhdGlvbjsKCiAgICAgICAgICAgIGxlYWYgYXppbXV0aCB7CiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiQXZlcmFnZSB2YWx1ZSBvZiB0aGUgYXppbXV0aHMgb2YgdGhlIGNlbGxzCiAgICAgICAgICAgICAgICBjb21wcmlzaW5nIHRoZSBzZWN0b3IsIGRldGVybWluZWQgZHVyaW5nIHNlY3RvciBkaXNjb3ZlcnkuIjsKICAgICAgICAgICAgICAgIHR5cGUgZGVjaW1hbDY0ewogICAgICAgICAgICAgICAgICAgIGZyYWN0aW9uLWRpZ2l0cyAxOwogICAgICAgICAgICAgICAgICAgIHJhbmdlICIwLi4zNjAiOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgdW5pdHMgImRlY2ltYWwgZGVncmVlcyI7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgoKICAgIG9yLXRlaXYteWV4dDpiaURpcmVjdGlvbmFsVG9wb2xvZ3lSZWxhdGlvbnNoaXAgT0RVRlVOQ1RJT05fUFJPVklERVNfTlJDRUxMRFUgeyAvLyAxIHRvIDAuLm4KCiAgICAgICAgZGVzY3JpcHRpb24KICAgICAgICAgICAgIlRoZSBhU2lkZSBvZiB0aGlzIHJlbGF0aW9uc2hpcCBpcyBhbiBpbnN0YW5jZSBvZiB0aGUgT0RVRnVuY3Rpb24gdHlwZS4KICAgICAgICAgICAgVGhlIGJTaWRlIG9mIHRoaXMgcmVsYXRpb25zaGlwIGlzIGFuIGluc3RhbmNlIG9mIHRoZSBOUkNlbGxEVSB0eXBlLgogICAgICAgICAgICBUaGUgT0RVRnVuY3Rpb24gcmVwcmVzZW50cyB0aGUgRFUgY29tcG9uZW50IG9mIGEgZ05CIHRoYXQgcHJvdmlkZXMgdGhlIE5SQ2VsbERVLgogICAgICAgICAgICBBIE9EVUZ1bmN0aW9uIGluc3RhbmNlIGNhbiBwcm92aWRlIG1hbnkgTlJDZWxsRFVzLgogICAgICAgICAgICBBbiBOUkNlbGxEVSBpbnN0YW5jZSBtdXN0IGJlIHByb3ZpZGVkIGJ5IGFuIE9EVUZ1bmN0aW9uLgogICAgICAgICAgICAiOwoKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6VG9wX0dycF9UeXBlOwogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpPcmlnaW5fRW50aXR5X01hcHBpbmdfR3JwOwogICAgICAgIGtleSBpZDsKCiAgICAgICAgbGVhZi1saXN0IHByb3ZpZGVkLW5yQ2VsbER1IHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIk8tRFUgRnVuY3Rpb24gcHJvdmlkZXMgTlIgQ2VsbC1EVS4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YVNpZGUgT0RVRnVuY3Rpb247CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICB9CgogICAgICAgIGxlYWYgcHJvdmlkZWQtYnktb2R1RnVuY3Rpb24gewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiTlIgQ2VsbC1EVSBwcm92aWRlZCBieSBPLURVIEZ1bmN0aW9uLiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDpiU2lkZSBOUkNlbGxEVTsKICAgICAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgICAgICBtYW5kYXRvcnkgdHJ1ZTsKICAgICAgICB9CiAgICB9CgogICAgb3ItdGVpdi15ZXh0OmJpRGlyZWN0aW9uYWxUb3BvbG9neVJlbGF0aW9uc2hpcCBPRFVGVU5DVElPTl9QUk9WSURFU19OUlNFQ1RPUkNBUlJJRVIgeyAvLyAxIHRvIDAuLm4KCiAgICAgICAgZGVzY3JpcHRpb24KICAgICAgICAgICAgIlRoZSBhU2lkZSBvZiB0aGlzIHJlbGF0aW9uc2hpcCBpcyBhbiBpbnN0YW5jZSBvZiB0aGUgT0RVRnVuY3Rpb24gdHlwZS4KICAgICAgICAgICAgVGhlIGJTaWRlIG9mIHRoaXMgcmVsYXRpb25zaGlwIGlzIGFuIGluc3RhbmNlIG9mIHRoZSBOUlNlY3RvckNhcnJpZXIgdHlwZS4KICAgICAgICAgICAgVGhlIE9EVUZ1bmN0aW9uIHJlcHJlc2VudHMgdGhlIERVIGNvbXBvbmVudCBvZiBhIGdOQiB0aGF0IHByb3ZpZGVzIHRoZSBOUlNlY3RvckNhcnJpZXIuCiAgICAgICAgICAgIEEgT0RVRnVuY3Rpb24gaW5zdGFuY2UgY2FuIHByb3ZpZGUgbWFueSBOUlNlY3RvckNhcnJpZXJzLgogICAgICAgICAgICBBbiBOUlNlY3RvckNhcnJpZXIgaW5zdGFuY2UgbXVzdCBiZSBwcm92aWRlZCBieSBhbiBPRFVGdW5jdGlvbi4KICAgICAgICAgICAgIjsKCiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOlRvcF9HcnBfVHlwZTsKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6T3JpZ2luX0VudGl0eV9NYXBwaW5nX0dycDsKICAgICAgICBrZXkgaWQ7CgogICAgICAgIGxlYWYtbGlzdCBwcm92aWRlZC1uclNlY3RvckNhcnJpZXIgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiTy1EVSBGdW5jdGlvbiBwcm92aWRlcyBOUiBTZWN0b3IgQ2Fycmllci4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YVNpZGUgT0RVRnVuY3Rpb247CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICB9CgogICAgICAgIGxlYWYgcHJvdmlkZWQtYnktb2R1RnVuY3Rpb24gewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiTlIgU2VjdG9yIENhcnJpZXIgcHJvdmlkZWQgYnkgTy1EVSBGdW5jdGlvbi4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YlNpZGUgTlJTZWN0b3JDYXJyaWVyOwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgICAgIG1hbmRhdG9yeSB0cnVlOwogICAgICAgIH0KICAgIH0KCiAgICBvci10ZWl2LXlleHQ6YmlEaXJlY3Rpb25hbFRvcG9sb2d5UmVsYXRpb25zaGlwIE9DVUNQRlVOQ1RJT05fUFJPVklERVNfTlJDRUxMQ1UgeyAvLyAxIHRvIDAuLm4KCiAgICAgICAgZGVzY3JpcHRpb24KICAgICAgICAgICAgIlRoZSBhU2lkZSBvZiB0aGlzIHJlbGF0aW9uc2hpcCBpcyBhbiBpbnN0YW5jZSBvZiB0aGUgT0NVQ1BGdW5jdGlvbiB0eXBlLgogICAgICAgICAgICBUaGUgYlNpZGUgb2YgdGhpcyByZWxhdGlvbnNoaXAgaXMgYW4gaW5zdGFuY2Ugb2YgdGhlIE5SQ2VsbENVIHR5cGUuCiAgICAgICAgICAgIFRoZSBPQ1VDUEZ1bmN0aW9uIHJlcHJlc2VudHMgdGhlIENVLUNQIGNvbXBvbmVudCBvZiBhIGdOQiB0aGF0IHByb3ZpZGVzIHRoZSBOUkNlbGxDVS4KICAgICAgICAgICAgQSBPQ1VDUEZ1bmN0aW9uIGluc3RhbmNlIGNhbiBwcm92aWRlIG1hbnkgTlJDZWxsQ1UuCiAgICAgICAgICAgIEFuIE5SQ2VsbENVIGluc3RhbmNlIG11c3QgYmUgcHJvdmlkZWQgYnkgYW4gT0NVQ1BGdW5jdGlvbi4KICAgICAgICAgICAgIjsKCiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOlRvcF9HcnBfVHlwZTsKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6T3JpZ2luX0VudGl0eV9NYXBwaW5nX0dycDsKICAgICAgICBrZXkgaWQ7CgogICAgICAgIGxlYWYtbGlzdCBwcm92aWRlZC1uckNlbGxDdSB7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJPLUNVLUNQIEZ1bmN0aW9uIHByb3ZpZGVzIE5SIENlbGwtQ1UuIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmFTaWRlIE9DVUNQRnVuY3Rpb247CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICB9CgogICAgICAgIGxlYWYgcHJvdmlkZWQtYnktb2N1Y3BGdW5jdGlvbiB7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJOUiBDZWxsLUNVIHByb3ZpZGVkIGJ5IE8tQ1UtQ1AgRnVuY3Rpb24uIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmJTaWRlIE5SQ2VsbENVOwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgICAgIG1hbmRhdG9yeSB0cnVlOwogICAgICAgIH0KICAgIH0KCiAgICBvci10ZWl2LXlleHQ6YmlEaXJlY3Rpb25hbFRvcG9sb2d5UmVsYXRpb25zaGlwIE5SQ0VMTERVX1VTRVNfTlJTRUNUT1JDQVJSSUVSIHsgLy8gMC4uMSB0byAwLi5uCgogICAgICAgIGRlc2NyaXB0aW9uCiAgICAgICAgICAgICJUaGUgYVNpZGUgb2YgdGhpcyByZWxhdGlvbnNoaXAgaXMgYW4gaW5zdGFuY2Ugb2YgdGhlIE5SQ2VsbERVIHR5cGUuCiAgICAgICAgICAgIFRoZSBiU2lkZSBvZiB0aGlzIHJlbGF0aW9uc2hpcCBpcyBhbiBpbnN0YW5jZSBvZiB0aGUgTlJTZWN0b3JDYXJyaWVyIHR5cGUuCiAgICAgICAgICAgIFRoZSBOUkNlbGxEVSByZXByZXNlbnRzIHRoZSBjZWxsIHRoYXQgdXNlcyB0aGUgTlJTZWN0b3JDYXJyaWVyLgogICAgICAgICAgICBBbiBOUkNlbGxEVSBpbnN0YW5jZSBjYW4gdXNlIG1hbnkgTlJTZWN0b3JDYXJyaWVycy4KICAgICAgICAgICAgQW4gTlJTZWN0b3JDYXJyaWVyIGluc3RhbmNlIGNhbiBvbmx5IGJlIHVzZWQgYnkgb25lIE5SQ2VsbERVLgogICAgICAgICAgICAiOwoKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6VG9wX0dycF9UeXBlOwogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpPcmlnaW5fRW50aXR5X01hcHBpbmdfR3JwOwogICAgICAgIGtleSBpZDsKCiAgICAgICAgbGVhZi1saXN0IHVzZWQtbnJTZWN0b3JDYXJyaWVyIHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIk5SIENlbGwtRFUgdXNlcyBOUiBTZWN0b3IgQ2Fycmllci4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YVNpZGUgTlJDZWxsRFU7CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICB9CgogICAgICAgIGxlYWYgdXNlZC1ieS1uckNlbGxEdSB7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJOUiBTZWN0b3IgQ2FycmllciB1c2VkIGJ5IE5SIENlbGwtRFUuIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmJTaWRlIE5SU2VjdG9yQ2FycmllcjsKICAgICAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgIH0KICAgIH0KCiAgICBvci10ZWl2LXlleHQ6YmlEaXJlY3Rpb25hbFRvcG9sb2d5UmVsYXRpb25zaGlwIE5SU0VDVE9SQ0FSUklFUl9VU0VTX0FOVEVOTkFDQVBBQklMSVRZIHsgLy8gMC4ubiB0byAwLi4xCgogICAgICAgIGRlc2NyaXB0aW9uCiAgICAgICAgICAgICJUaGUgYVNpZGUgb2YgdGhpcyByZWxhdGlvbnNoaXAgaXMgYW4gaW5zdGFuY2Ugb2YgdGhlIE5SU2VjdG9yQ2FycmllciB0eXBlLgogICAgICAgICAgICBUaGUgYlNpZGUgb2YgdGhpcyByZWxhdGlvbnNoaXAgaXMgYW4gaW5zdGFuY2Ugb2YgdGhlIEFudGVubmFDYXBhYmlsaXR5IHR5cGUuCiAgICAgICAgICAgIFRoZSBOUlNlY3RvckNhcnJpZXIgcmVwcmVzZW50cyB0aGUgY2FycmllciB0aGF0IHVzZXMgdGhlIEFudGVubmFDYXBhYmlsaXR5LgogICAgICAgICAgICBBbiBOUlNlY3RvckNhcnJpZXIgaW5zdGFuY2UgY2FuIHVzZSBvbmx5IG9uZSBBbnRlbm5hQ2FwYWJpbGl0eS4KICAgICAgICAgICAgQW4gQW50ZW5uYUNhcGFiaWxpdHkgaW5zdGFuY2UgY2FuIGJlIHVzZWQgYnkgbWFueSBOUlNlY3RvckNhcnJpZXJzLgogICAgICAgICAgICAiOwoKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6VG9wX0dycF9UeXBlOwogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpPcmlnaW5fRW50aXR5X01hcHBpbmdfR3JwOwogICAgICAgIGtleSBpZDsKCiAgICAgICAgbGVhZiB1c2VkLWFudGVubmFDYXBhYmlsaXR5IHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIk5SIFNlY3RvciBDYXJyaWVyIHVzZXMgQW50ZW5uYSBDYXBhYmlsaXR5LiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDphU2lkZSBOUlNlY3RvckNhcnJpZXI7CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICB9CgogICAgICAgIGxlYWYtbGlzdCB1c2VkLWJ5LW5yU2VjdG9yQ2FycmllciB7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJBbnRlbm5hIENhcGFiaWxpdHkgdXNlZCBieSBOUiBTZWN0b3IgQ2Fycmllci4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YlNpZGUgQW50ZW5uYUNhcGFiaWxpdHk7CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICB9CiAgICB9CgogICAgb3ItdGVpdi15ZXh0OmJpRGlyZWN0aW9uYWxUb3BvbG9neVJlbGF0aW9uc2hpcCBTRUNUT1JfR1JPVVBTX05SQ0VMTERVIHsgLy8gMC4uMSB0byAwLi5uCgogICAgICAgIGRlc2NyaXB0aW9uCiAgICAgICAgICAgICJUaGUgYVNpZGUgb2YgdGhpcyByZWxhdGlvbnNoaXAgaXMgYW4gaW5zdGFuY2Ugb2YgdGhlIFNlY3RvciB0eXBlLgogICAgICAgICAgICBUaGUgYlNpZGUgb2YgdGhpcyByZWxhdGlvbnNoaXAgaXMgYW4gaW5zdGFuY2Ugb2YgdGhlIE5SQ2VsbERVIHR5cGUuCiAgICAgICAgICAgIFRoZSBTZWN0b3IgcmVwcmVzZW50cyB0aGUgZ2VvZ3JhcGhpY2FsIGFyZWEgdGhhdCBncm91cHMgdGhlIE5SQ2VsbERVcy4KICAgICAgICAgICAgQSBTZWN0b3IgaW5zdGFuY2UgY2FuIGdyb3VwIG1hbnkgTlJDZWxsRFVzLgogICAgICAgICAgICBBbiBOUkNlbGxEVSBpbnN0YW5jZSBjYW4gb25seSBiZSBncm91cGVkIGJ5IG9uZSBTZWN0b3IuCiAgICAgICAgICAgICI7CgogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOk9yaWdpbl9FbnRpdHlfTWFwcGluZ19HcnA7CiAgICAgICAga2V5IGlkOwoKICAgICAgICBsZWFmLWxpc3QgZ3JvdXBlZC1uckNlbGxEdSB7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJTZWN0b3IgZ3JvdXBzIE5SIENlbGwtRFUuIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmFTaWRlIFNlY3RvcjsKICAgICAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgIH0KCiAgICAgICAgbGVhZiBncm91cGVkLWJ5LXNlY3RvciB7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJOUiBDZWxsLURVIGdyb3VwZWQgYnkgU2VjdG9yLiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDpiU2lkZSBOUkNlbGxEVTsKICAgICAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgIH0KICAgIH0KfQ==
+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-07-15 bW9kdWxlIG8tcmFuLXNtby10ZWl2LXJlbC1jbG91ZC1yYW4gewogICAgeWFuZy12ZXJzaW9uIDEuMTsKICAgIG5hbWVzcGFjZSAidXJuOm8tcmFuOnNtby10ZWl2LXJlbC1jbG91ZC1yYW4iOwogICAgcHJlZml4IG9yLXRlaXYtY2xvdWR0b3JhbjsKCiAgICBpbXBvcnQgby1yYW4tc21vLXRlaXYtY29tbW9uLXlhbmctdHlwZXMge3ByZWZpeCBvci10ZWl2LXR5cGVzOyB9CgogICAgaW1wb3J0IG8tcmFuLXNtby10ZWl2LWNvbW1vbi15YW5nLWV4dGVuc2lvbnMge3ByZWZpeCBvci10ZWl2LXlleHQ7IH0KCiAgICBpbXBvcnQgby1yYW4tc21vLXRlaXYtY2xvdWQge3ByZWZpeCBvci10ZWl2LWNsb3VkOyB9CgogICAgaW1wb3J0IG8tcmFuLXNtby10ZWl2LXJhbiB7cHJlZml4IG9yLXRlaXYtcmFuOyB9CgogICAgb3JnYW5pemF0aW9uICJPUkFOIjsKICAgIGNvbnRhY3QgIlRoZSBBdXRob3JzIjsKICAgIGRlc2NyaXB0aW9uCiAgICAgICAgIlJBTiBDbG91ZCB0byBSQU4gTG9naWNhbCB0b3BvbG9neSBtb2RlbC4KCiAgICAgICAgVGhpcyBtb2RlbCBjb250YWlucyB0aGUgUkFOIENsb3VkIHRvIFJBTiBMb2dpY2FsIHRvcG9sb2d5IHJlbGF0aW9ucy4KCiAgICAgICAgQ29weXJpZ2h0IChDKSAyMDI0IEVyaWNzc29uCiAgICAgICAgTW9kaWZpY2F0aW9ucyBDb3B5cmlnaHQgKEMpIDIwMjQgT3BlbkluZnJhIEZvdW5kYXRpb24gRXVyb3BlCgogICAgICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7CiAgICAgICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogICAgICAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAoKICAgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKCiAgICAgICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQogICAgICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUywKICAgICAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KICAgICAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCiAgICAgICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCgogICAgICAgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIjsKCiAgICByZXZpc2lvbiAiMjAyNC0wNS0wMiIgewogICAgICAgIGRlc2NyaXB0aW9uICJJbml0aWFsIHJldmlzaW9uLiI7CiAgICAgICAgb3ItdGVpdi15ZXh0OmxhYmVsIDAuMy4wOwogICAgfQoKICAgIHJldmlzaW9uICIyMDI0LTA3LTE1IiB7CiAgICAgICAgZGVzY3JpcHRpb24gIlRoaXMgcmV2aXNpb24gYWxpZ25zIE8tUkFOIFdvcmsgR3JvdXAgMTAgU3RhZ2UgMiBTcGVjaWZpY2F0aW9uIChPLVJBTi5XRzEwLlRFJklWLUNJTUkuMC1SMDA0LnYwMi4wMCkiOwogICAgICAgIG9yLXRlaXYteWV4dDpsYWJlbCAwLjQuMDsKICAgIH0KCiAgICBvci10ZWl2LXlleHQ6ZG9tYWluIFJFTF9DTE9VRF9SQU47CgogICAgb3ItdGVpdi15ZXh0OmJpRGlyZWN0aW9uYWxUb3BvbG9neVJlbGF0aW9uc2hpcCBORkRFUExPWU1FTlRfU0VSVkVTX09EVUZVTkNUSU9OIHsgLy8gMC4ubiB0byAwLi5tCgogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOk9yaWdpbl9FbnRpdHlfTWFwcGluZ19HcnA7CiAgICAgICAga2V5IGlkOwoKICAgICAgICBsZWFmLWxpc3Qgc2VydmljZWQtb2R1RnVuY3Rpb24gewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiTy1EVSBGdW5jdGlvbiBzZXJ2aWNlZCBieSB0aGlzIE5GIERlcGxveW1lbnQuIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmFTaWRlIG9yLXRlaXYtY2xvdWQ6TkZEZXBsb3ltZW50OwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgfQoKICAgICAgICBsZWFmLWxpc3Qgc2VydmluZy1uRkRlcGxveW1lbnQgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiTkYgRGVwbG95bWVudCB0aGF0IHNlcnZlcyB0aGlzIE8tRFUgRnVuY3Rpb24uIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmJTaWRlIG9yLXRlaXYtcmFuOk9EVUZ1bmN0aW9uOwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgfQogICAgfQoKICAgIG9yLXRlaXYteWV4dDpiaURpcmVjdGlvbmFsVG9wb2xvZ3lSZWxhdGlvbnNoaXAgTkZERVBMT1lNRU5UX1NFUlZFU19PQ1VDUEZVTkNUSU9OIHsgLy8gMC4ubiB0byAwLi5tCgogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOk9yaWdpbl9FbnRpdHlfTWFwcGluZ19HcnA7CiAgICAgICAga2V5IGlkOwoKICAgICAgICBsZWFmLWxpc3Qgc2VydmljZWQtb2N1Y3BGdW5jdGlvbiB7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJPLUNVLUNQIEZ1bmN0aW9uIHNlcnZpY2VkIGJ5IHRoaXMgTkYgRGVwbG95bWVudC4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YVNpZGUgb3ItdGVpdi1jbG91ZDpORkRlcGxveW1lbnQ7CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICB9CgogICAgICAgIGxlYWYtbGlzdCBzZXJ2aW5nLW5GRGVwbG95bWVudCB7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJORiBEZXBsb3ltZW50IHRoYXQgc2VydmVzIHRoaXMgTy1DVS1DUCBGdW5jdGlvbi4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YlNpZGUgb3ItdGVpdi1yYW46T0NVQ1BGdW5jdGlvbjsKICAgICAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgIH0KICAgIH0KCiAgICBvci10ZWl2LXlleHQ6YmlEaXJlY3Rpb25hbFRvcG9sb2d5UmVsYXRpb25zaGlwIE5GREVQTE9ZTUVOVF9TRVJWRVNfT0NVVVBGVU5DVElPTiB7IC8vIDAuLm4gdG8gMC4ubQoKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6VG9wX0dycF9UeXBlOwogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpPcmlnaW5fRW50aXR5X01hcHBpbmdfR3JwOwogICAgICAgIGtleSBpZDsKCiAgICAgICAgbGVhZi1saXN0IHNlcnZpY2VkLW9jdXVwRnVuY3Rpb24gewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiTy1DVS1VUCBGdW5jdGlvbiBzZXJ2aWNlZCBieSB0aGlzIE5GIERlcGxveW1lbnQuIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmFTaWRlIG9yLXRlaXYtY2xvdWQ6TkZEZXBsb3ltZW50OwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgfQoKICAgICAgICBsZWFmLWxpc3Qgc2VydmluZy1uRkRlcGxveW1lbnQgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiTkYgRGVwbG95bWVudCB0aGF0IHNlcnZlcyB0aGlzIE8tQ1UtVVAgRnVuY3Rpb24uIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmJTaWRlIG9yLXRlaXYtcmFuOk9DVVVQRnVuY3Rpb247CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICB9CiAgICB9CgogICAgb3ItdGVpdi15ZXh0OmJpRGlyZWN0aW9uYWxUb3BvbG9neVJlbGF0aW9uc2hpcCBORkRFUExPWU1FTlRfU0VSVkVTX05FQVJSVFJJQ0ZVTkNUSU9OIHsgLy8gMC4ubiB0byAwLi5tCgogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOk9yaWdpbl9FbnRpdHlfTWFwcGluZ19HcnA7CiAgICAgICAga2V5IGlkOwoKICAgICAgICBsZWFmLWxpc3Qgc2VydmljZWQtbmVhclJUUklDRnVuY3Rpb24gewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiTmVhclJUUklDRnVuY3Rpb24gc2VydmljZWQgYnkgdGhpcyBORiBEZXBsb3ltZW50LiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDphU2lkZSBvci10ZWl2LWNsb3VkOk5GRGVwbG95bWVudDsKICAgICAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgIH0KCiAgICAgICAgbGVhZi1saXN0IHNlcnZpbmctbkZEZXBsb3ltZW50IHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIk5GIERlcGxveW1lbnQgdGhhdCBzZXJ2ZXMgdGhpcyBOZWFyUlRSSUNGdW5jdGlvbi4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YlNpZGUgb3ItdGVpdi1yYW46TmVhclJUUklDRnVuY3Rpb247CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICB9CiAgICB9Cn0=
+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-10-08 bW9kdWxlIG8tcmFuLXNtby10ZWl2LXJlbC1lcXVpcG1lbnQtcmFuIHsKICAgIHlhbmctdmVyc2lvbiAxLjE7CiAgICBuYW1lc3BhY2UgInVybjpvLXJhbjpzbW8tdGVpdi1yZWwtZXF1aXBtZW50LXJhbiI7CiAgICBwcmVmaXggb3ItdGVpdi1yZWwtZXF1aXByYW47CgogICAgaW1wb3J0IG8tcmFuLXNtby10ZWl2LWNvbW1vbi15YW5nLXR5cGVzIHsgcHJlZml4IG9yLXRlaXYtdHlwZXM7IH0KCiAgICBpbXBvcnQgby1yYW4tc21vLXRlaXYtY29tbW9uLXlhbmctZXh0ZW5zaW9ucyB7IHByZWZpeCBvci10ZWl2LXlleHQ7IH0KCiAgICBpbXBvcnQgby1yYW4tc21vLXRlaXYtZXF1aXBtZW50IHsgcHJlZml4IG9yLXRlaXYtZXF1aXA7IH0KCiAgICBpbXBvcnQgby1yYW4tc21vLXRlaXYtcmFuIHsgcHJlZml4IG9yLXRlaXYtcmFuOyB9CgoKICAgIG9yZ2FuaXphdGlvbiAiT1JBTiI7CiAgICBjb250YWN0ICJUaGUgQXV0aG9ycyI7CiAgICBkZXNjcmlwdGlvbiAKICAgICJSQU4gRXF1aXBtZW50IHRvIExvZ2ljYWwgdG9wb2xvZ3kgbW9kZWwuCgogICAgVGhpcyBtb2RlbCBjb250YWlucyB0aGUgUkFOIEVxdWlwbWVudCB0byBMb2dpY2FsIHRvcG9sb2d5CiAgICBlbnRpdGllcyBhbmQgcmVsYXRpb25zLgoKICAgIENvcHlyaWdodCAoQykgMjAyNCBFcmljc3NvbgogICAgTW9kaWZpY2F0aW9ucyBDb3B5cmlnaHQgKEMpIDIwMjQgT3BlbkluZnJhIEZvdW5kYXRpb24gRXVyb3BlCgogICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTsKICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KICAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAoKICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAoKICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUywKICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgogICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAogICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCgogICAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAiOwoKICAgIHJldmlzaW9uICIyMDI0LTEwLTA4IiB7CiAgICAgICAgZGVzY3JpcHRpb24KICAgICAgICAgICAgIkFkZGVkIG5ldyByZWxhdGlvbnNoaXAgQU5URU5OQU1PRFVMRV9TRVJWRVNfTlJDRUxMRFUuIjsKICAgICAgICBvci10ZWl2LXlleHQ6bGFiZWwgMC41LjA7CiAgICB9CgogICAgcmV2aXNpb24gIjIwMjQtMTAtMDQiIHsKICAgICAgICBkZXNjcmlwdGlvbiAiQWRkZWQgZ3JvdXBpbmcsIE9yaWdpbl9SZWxhdGlvbnNoaXBfTWFwcGluZ19HcnAgdG8gdGhlIHRvcG9sb2d5IG9iamVjdC4iOwogICAgICAgIG9yLXRlaXYteWV4dDpsYWJlbCAwLjQuMDsKICAgIH0KCiAgICByZXZpc2lvbiAiMjAyNC0wNS0yNCIgewogICAgICAgIGRlc2NyaXB0aW9uICJJbml0aWFsIHJldmlzaW9uLiI7CiAgICAgICAgb3ItdGVpdi15ZXh0OmxhYmVsIDAuMy4wOwogICAgfQoKICAgIG9yLXRlaXYteWV4dDpkb21haW4gUkVMX0VRVUlQTUVOVF9SQU47CgogICAgb3ItdGVpdi15ZXh0OmJpRGlyZWN0aW9uYWxUb3BvbG9neVJlbGF0aW9uc2hpcCBBTlRFTk5BTU9EVUxFX1NFUlZFU19BTlRFTk5BQ0FQQUJJTElUWSB7IC8vIDAuLm4gdG8gMC4ubQoKICAgICAgICBkZXNjcmlwdGlvbgogICAgICAgICAgICAiVGhlIGFTaWRlIG9mIHRoaXMgcmVsYXRpb25zaGlwIGlzIGFuIGluc3RhbmNlIG9mIHRoZSBBbnRlbm5hTW9kdWxlIHR5cGUuCiAgICAgICAgICAgIFRoZSBiU2lkZSBvZiB0aGlzIHJlbGF0aW9uc2hpcCBpcyBhbiBpbnN0YW5jZSBvZiB0aGUgQW50ZW5uYUNhcGFiaWxpdHkgdHlwZS4KICAgICAgICAgICAgVGhlIEFudGVubmFNb2R1bGUgcmVwcmVzZW50cyB0aGUgcGh5c2ljYWwgYW50ZW5uYSB0aGF0IHNlcnZlcyB0aGUgQW50ZW5uYUNhcGFiaWxpdHkuCiAgICAgICAgICAgIEFuIEFudGVubmFNb2R1bGUgaW5zdGFuY2UgY2FuIHNlcnZlIG1hbnkgQW50ZW5uYUNhcGFiaWxpdGllcy4KICAgICAgICAgICAgQW4gQW50ZW5uYUNhcGFiaWxpdHkgaW5zdGFuY2UgY2FuIGJlIHNlcnZlZCBieSBtYW55IEFudGVubmFNb2R1bGVzLgogICAgICAgICAgICAiOwoKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6VG9wX0dycF9UeXBlOwogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpPcmlnaW5fRW50aXR5X01hcHBpbmdfR3JwOwogICAgICAgIGtleSBpZDsKCiAgICAgICAgbGVhZi1saXN0IHNlcnZpY2VkLWFudGVubmFDYXBhYmlsaXR5IHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIkFudGVubmEgQ2FwYWJpbGl0eSBzZXJ2aWNlZCBieSB0aGlzIEFudGVubmEgTW9kdWxlLiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDphU2lkZSBvci10ZWl2LWVxdWlwOkFudGVubmFNb2R1bGU7CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICB9CgogICAgICAgIGxlYWYtbGlzdCBzZXJ2aW5nLWFudGVubmFNb2R1bGUgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiQW50ZW5uYSBNb2R1bGUgc2VydmVzIHRoaXMgQW50ZW5uYSBDYXBhYmlsaXR5LiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDpiU2lkZSBvci10ZWl2LXJhbjpBbnRlbm5hQ2FwYWJpbGl0eTsKICAgICAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgIH0KICAgIH0KCiAgICBvci10ZWl2LXlleHQ6YmlEaXJlY3Rpb25hbFRvcG9sb2d5UmVsYXRpb25zaGlwIEFOVEVOTkFNT0RVTEVfU0VSVkVTX05SQ0VMTERVIHsgLy8gMS4ubiB0byAwLi5tCgogICAgICAgIGRlc2NyaXB0aW9uCiAgICAgICAgICAgICJUaGUgYVNpZGUgb2YgdGhpcyByZWxhdGlvbnNoaXAgaXMgYW4gaW5zdGFuY2Ugb2YgdGhlIEFudGVubmFNb2R1bGUgdHlwZS4KICAgICAgICAgICAgVGhlIGJTaWRlIG9mIHRoaXMgcmVsYXRpb25zaGlwIGlzIGFuIGluc3RhbmNlIG9mIHRoZSBOUkNlbGxEVSB0eXBlLgogICAgICAgICAgICBUaGUgQW50ZW5uYU1vZHVsZSByZXByZXNlbnRzIHRoZSBwaHlzaWNhbCBhbnRlbm5hIHRoYXQgc2VydmVzIHRoZSBOUkNlbGxEVS4KICAgICAgICAgICAgQW4gQW50ZW5uYU1vZHVsZSBpbnN0YW5jZSBjYW4gc2VydmUgbWFueSBOUkNlbGxEVXMuCiAgICAgICAgICAgIEFuIE5SQ2VsbERVIGluc3RhbmNlIGNhbiBiZSBzZXJ2ZWQgYnkgbWFueSBBbnRlbm5hTW9kdWxlcy4KICAgICAgICAgICAgIjsKCiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOlRvcF9HcnBfVHlwZTsKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6T3JpZ2luX1JlbGF0aW9uc2hpcF9NYXBwaW5nX0dycDsKICAgICAgICBrZXkgaWQ7CgogICAgICAgIGxlYWYtbGlzdCBzZXJ2aWNlZC1uckNlbGxEdSB7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJOUiBDZWxsLURVIHNlcnZpY2VkIGJ5IHRoaXMgQW50ZW5uYSBNb2R1bGUuIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmFTaWRlIG9yLXRlaXYtZXF1aXA6QW50ZW5uYU1vZHVsZTsKICAgICAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgIH0KCiAgICAgICAgbGVhZi1saXN0IHNlcnZpbmctYW50ZW5uYU1vZHVsZSB7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJBbnRlbm5hIE1vZHVsZSBzZXJ2ZXMgdGhpcyBOUiBDZWxsLURVLiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDpiU2lkZSBvci10ZWl2LXJhbjpOUkNlbGxEVTsKICAgICAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgICAgICBtaW4tZWxlbWVudHMgMTsKICAgICAgICB9CiAgICB9CgogICAgb3ItdGVpdi15ZXh0OmJpRGlyZWN0aW9uYWxUb3BvbG9neVJlbGF0aW9uc2hpcCBTRUNUT1JfR1JPVVBTX0FOVEVOTkFNT0RVTEUgeyAvLyAwLi4xIHRvIDAuLm4KCiAgICAgICAgZGVzY3JpcHRpb24KICAgICAgICAgICAgIlRoZSBhU2lkZSBvZiB0aGlzIHJlbGF0aW9uc2hpcCBpcyBhbiBpbnN0YW5jZSBvZiB0aGUgU2VjdG9yIHR5cGUuCiAgICAgICAgICAgIFRoZSBiU2lkZSBvZiB0aGlzIHJlbGF0aW9uc2hpcCBpcyBhbiBpbnN0YW5jZSBvZiB0aGUgQW50ZW5uYU1vZHVsZSB0eXBlLgogICAgICAgICAgICBUaGUgU2VjdG9yIHJlcHJlc2VudHMgdGhlIGdlb2dyYXBoaWNhbCBhcmVhIHRoYXQgZ3JvdXBzIHRoZSBBbnRlbm5hTW9kdWxlcy4KICAgICAgICAgICAgQSBTZWN0b3IgaW5zdGFuY2UgY2FuIGdyb3VwIG1hbnkgQW50ZW5uYU1vZHVsZXMuCiAgICAgICAgICAgIEFuIEFudGVubmFNb2R1bGUgaW5zdGFuY2UgY2FuIG9ubHkgYmUgZ3JvdXBlZCBieSBvbmUgU2VjdG9yLgogICAgICAgICAgICAiOwoKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6VG9wX0dycF9UeXBlOwogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpPcmlnaW5fUmVsYXRpb25zaGlwX01hcHBpbmdfR3JwOwogICAgICAgIGtleSBpZDsKCiAgICAgICAgbGVhZi1saXN0IGdyb3VwZWQtYW50ZW5uYU1vZHVsZSB7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJTZWN0b3IgZ3JvdXBzIEFudGVubmEgTW9kdWxlLiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDphU2lkZSBvci10ZWl2LXJhbjpTZWN0b3I7CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICB9CgogICAgICAgIGxlYWYgZ3JvdXBlZC1ieS1zZWN0b3IgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiQW50ZW5uYSBNb2R1bGUgZ3JvdXBlZCBieSBTZWN0b3IuIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmJTaWRlIG9yLXRlaXYtZXF1aXA6QW50ZW5uYU1vZHVsZTsKICAgICAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgIH0KICAgIH0KfQ==
+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-07-15 bW9kdWxlIG8tcmFuLXNtby10ZWl2LXJlbC1vYW0tY2xvdWQgewogICAgeWFuZy12ZXJzaW9uIDEuMTsKICAgIG5hbWVzcGFjZSAidXJuOm8tcmFuOnNtby10ZWl2LXJlbC1vYW0tY2xvdWQiOwogICAgcHJlZml4IG9yLXRlaXYtb2FtdG9jbG91ZDsKCiAgICBpbXBvcnQgby1yYW4tc21vLXRlaXYtY29tbW9uLXlhbmctdHlwZXMge3ByZWZpeCBvci10ZWl2LXR5cGVzOyB9CgogICAgaW1wb3J0IG8tcmFuLXNtby10ZWl2LWNvbW1vbi15YW5nLWV4dGVuc2lvbnMge3ByZWZpeCBvci10ZWl2LXlleHQ7IH0KCiAgICBpbXBvcnQgby1yYW4tc21vLXRlaXYtb2FtIHtwcmVmaXggb3ItdGVpdi1vYW07IH0KCiAgICBpbXBvcnQgby1yYW4tc21vLXRlaXYtY2xvdWQge3ByZWZpeCBvci10ZWl2LWNsb3VkOyB9CgogICAgb3JnYW5pemF0aW9uICJPUkFOIjsKICAgIGNvbnRhY3QgIlRoZSBBdXRob3JzIjsKICAgIGRlc2NyaXB0aW9uCiAgICAgICAgIlJBTiBPJk0gdG8gQ2xvdWQgdG9wb2xvZ3kgbW9kZWwuCgogICAgICAgIFRoaXMgbW9kZWwgY29udGFpbnMgdGhlIFJBTiBPJk0gdG8gQ2xvdWQgdG9wb2xvZ3kgcmVsYXRpb25zCgogICAgICAgIENvcHlyaWdodCAoQykgMjAyNCBFcmljc3NvbgogICAgICAgIE1vZGlmaWNhdGlvbnMgQ29weXJpZ2h0IChDKSAyMDI0IE9wZW5JbmZyYSBGb3VuZGF0aW9uIEV1cm9wZQoKICAgICAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpOwogICAgICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KICAgICAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKCiAgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCgogICAgICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKICAgICAgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsCiAgICAgICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCiAgICAgICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAogICAgICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgoKICAgICAgICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCI7CgogICAgcmV2aXNpb24gIjIwMjQtMDUtMDIiIHsKICAgICAgICBkZXNjcmlwdGlvbiAiSW5pdGlhbCByZXZpc2lvbi4iOwogICAgICAgIG9yLXRlaXYteWV4dDpsYWJlbCAwLjMuMDsKICAgIH0KCiAgICByZXZpc2lvbiAiMjAyNC0wNy0xNSIgewogICAgICAgIGRlc2NyaXB0aW9uICJUaGlzIHJldmlzaW9uIGFsaWducyBPLVJBTiBXb3JrIEdyb3VwIDEwIFN0YWdlIDIgU3BlY2lmaWNhdGlvbiAoTy1SQU4uV0cxMC5URSZJVi1DSU1JLjAtUjAwNC52MDIuMDApIjsKICAgICAgICBvci10ZWl2LXlleHQ6bGFiZWwgMC40LjA7CiAgICB9CgogICAgb3ItdGVpdi15ZXh0OmRvbWFpbiBSRUxfT0FNX0NMT1VEOwoKICAgIG9yLXRlaXYteWV4dDpiaURpcmVjdGlvbmFsVG9wb2xvZ3lSZWxhdGlvbnNoaXAgTUFOQUdFREVMRU1FTlRfREVQTE9ZRURfQVNfQ0xPVURJRklFRE5GIHsgIC8vIDAuLjEgdG8gMQoKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6VG9wX0dycF9UeXBlOwogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpPcmlnaW5fRW50aXR5X01hcHBpbmdfR3JwOwogICAgICAgIGtleSBpZDsKCiAgICAgICAgbGVhZiBkZXBsb3llZC1hcy1jbG91ZGlmaWVkTkYgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiTWFuYWdlZCBFbGVtZW50IGRlcGxveWVkIGFzIENsb3VkaWZpZWQgTkYuIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmFTaWRlIG9yLXRlaXYtb2FtOk1hbmFnZWRFbGVtZW50OwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgfQoKICAgICAgICBsZWFmIGRlcGxveWVkLW1hbmFnZWRFbGVtZW50IHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIkNsb3VkaWZpZWQgTkYgZGVwbG95cyBNYW5hZ2VkIEVsZW1lbnQuIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmJTaWRlIG9yLXRlaXYtY2xvdWQ6Q2xvdWRpZmllZE5GOwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgICAgIG1hbmRhdG9yeSB0cnVlOwogICAgICAgIH0KICAgIH0KCiAgICBvci10ZWl2LXlleHQ6YmlEaXJlY3Rpb25hbFRvcG9sb2d5UmVsYXRpb25zaGlwIE5GREVQTE9ZTUVOVF9TRVJWRVNfTUFOQUdFREVMRU1FTlQgeyAvLyAxLi5uIHRvIDEKCiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOlRvcF9HcnBfVHlwZTsKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6T3JpZ2luX0VudGl0eV9NYXBwaW5nX0dycDsKICAgICAgICBrZXkgaWQ7CgogICAgICAgIGxlYWYgc2VydmljZWQtbWFuYWdlZEVsZW1lbnQgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiTWFuYWdlZCBFbGVtZW50IHNlcnZpY2VkIGJ5IHRoaXMgTkYgRGVwbG95bWVudC4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YVNpZGUgb3ItdGVpdi1jbG91ZDpORkRlcGxveW1lbnQ7CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICAgICAgbWFuZGF0b3J5IHRydWU7CiAgICAgICAgfQoKICAgICAgICBsZWFmLWxpc3Qgc2VydmluZy1uRkRlcGxveW1lbnQgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiTkYgRGVwbG95bWVudCB0aGF0IHNlcnZlcyB0aGlzIE1hbmFnZWQgRWxlbWVudC4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YlNpZGUgb3ItdGVpdi1vYW06TWFuYWdlZEVsZW1lbnQ7CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICAgICAgbWluLWVsZW1lbnRzIDE7CiAgICAgICAgfQogICAgfQp9
+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-10-04 bW9kdWxlIG8tcmFuLXNtby10ZWl2LXJlbC1vYW0tcmFuIHsKICAgIHlhbmctdmVyc2lvbiAxLjE7CiAgICBuYW1lc3BhY2UgInVybjpvLXJhbjpzbW8tdGVpdi1yZWwtb2FtLXJhbiI7CiAgICBwcmVmaXggb3ItdGVpdi1yZWwtb2FtcmFuOwoKICAgIGltcG9ydCBvLXJhbi1zbW8tdGVpdi1jb21tb24teWFuZy10eXBlcyB7IHByZWZpeCBvci10ZWl2LXR5cGVzOyB9CgogICAgaW1wb3J0IG8tcmFuLXNtby10ZWl2LWNvbW1vbi15YW5nLWV4dGVuc2lvbnMgeyBwcmVmaXggb3ItdGVpdi15ZXh0OyB9CgogICAgaW1wb3J0IG8tcmFuLXNtby10ZWl2LW9hbSB7IHByZWZpeCBvci10ZWl2LW9hbTsgfQoKICAgIGltcG9ydCBvLXJhbi1zbW8tdGVpdi1yYW4geyBwcmVmaXggb3ItdGVpdi1yYW47IH0KCiAgICBvcmdhbml6YXRpb24gIk9SQU4iOwogICAgY29udGFjdCAiVGhlIEF1dGhvcnMiOwogICAgZGVzY3JpcHRpb24KICAgICAgICAiUkFOIE8mTSB0byBMb2dpY2FsIHRvcG9sb2d5IG1vZGVsLgoKICAgICAgICBUaGlzIG1vZGVsIGNvbnRhaW5zIHRoZSBSQU4gTyZNIHRvIExvZ2ljYWwgdG9wb2xvZ3kgcmVsYXRpb25zCgogICAgICAgIENvcHlyaWdodCAoQykgMjAyNCBFcmljc3NvbgogICAgICAgIE1vZGlmaWNhdGlvbnMgQ29weXJpZ2h0IChDKSAyMDI0IE9wZW5JbmZyYSBGb3VuZGF0aW9uIEV1cm9wZQoKICAgICAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpOwogICAgICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KICAgICAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKCiAgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCgogICAgICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKICAgICAgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsCiAgICAgICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCiAgICAgICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAogICAgICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgoKICAgICAgICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCI7CgogICAgcmV2aXNpb24gIjIwMjQtMTAtMDQiIHsKICAgICAgICBkZXNjcmlwdGlvbiAiQWRkZWQgZ3JvdXBpbmcsIE9yaWdpbl9SZWxhdGlvbnNoaXBfTWFwcGluZ19HcnAgdG8gdGhlIHRvcG9sb2d5IG9iamVjdC4iOwogICAgICAgIG9yLXRlaXYteWV4dDpsYWJlbCAwLjUuMDsKICAgIH0KCiAgICByZXZpc2lvbiAiMjAyNC0wNy0xNSIgewogICAgICAgIGRlc2NyaXB0aW9uICJUaGlzIHJldmlzaW9uIGFsaWducyBPLVJBTiBXb3JrIEdyb3VwIDEwIFN0YWdlIDIgU3BlY2lmaWNhdGlvbiAoTy1SQU4uV0cxMC5URSZJVi1DSU1JLjAtUjAwNC52MDIuMDApIjsKICAgICAgICBvci10ZWl2LXlleHQ6bGFiZWwgMC40LjA7CiAgICB9CgogICAgcmV2aXNpb24gIjIwMjQtMDUtMjQiIHsKICAgICAgICBkZXNjcmlwdGlvbiAiSW5pdGlhbCByZXZpc2lvbi4iOwogICAgICAgIG9yLXRlaXYteWV4dDpsYWJlbCAwLjMuMDsKICAgIH0KCiAgICBvci10ZWl2LXlleHQ6ZG9tYWluIFJFTF9PQU1fUkFOOwoKICAgIG9yLXRlaXYteWV4dDpiaURpcmVjdGlvbmFsVG9wb2xvZ3lSZWxhdGlvbnNoaXAgTUFOQUdFREVMRU1FTlRfTUFOQUdFU19PRFVGVU5DVElPTiB7ICAgIC8vIDEgdG8gMC4ubgoKICAgICAgICBkZXNjcmlwdGlvbgogICAgICAgICAgICAiVGhlIGFTaWRlIG9mIHRoaXMgcmVsYXRpb25zaGlwIGlzIGFuIGluc3RhbmNlIG9mIHRoZSBNYW5hZ2VkRWxlbWVudCB0eXBlLgogICAgICAgICAgICBUaGUgYlNpZGUgb2YgdGhpcyByZWxhdGlvbnNoaXAgaXMgYW4gaW5zdGFuY2Ugb2YgdGhlIE9EVUZ1bmN0aW9uIHR5cGUuCiAgICAgICAgICAgIFRoZSBNYW5hZ2VkRWxlbWVudCByZXByZXNlbnRzIHRoZSBub2RlIHRoYXQgbWFuYWdlcyB0aGUgT0RVRnVuY3Rpb24uCiAgICAgICAgICAgIEEgTWFuYWdlZEVsZW1lbnQgaW5zdGFuY2UgY2FuIG1hbmFnZSBtYW55IE9EVUZ1bmN0aW9ucy4KICAgICAgICAgICAgQW4gT0RVRnVuY3Rpb24gaW5zdGFuY2UgbXVzdCBiZSBtYW5hZ2VkIGJ5IG9uZSBNYW5hZ2VkRWxlbWVudC4KICAgICAgICAgICAgIjsKCiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOlRvcF9HcnBfVHlwZTsKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6T3JpZ2luX0VudGl0eV9NYXBwaW5nX0dycDsKICAgICAgICBrZXkgaWQ7CgogICAgICAgIGxlYWYtbGlzdCBtYW5hZ2VkLW9kdUZ1bmN0aW9uIHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIk1hbmFnZWQgRWxlbWVudCBtYW5hZ2VzIE8tRFUgRnVuY3Rpb24uIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmFTaWRlIG9yLXRlaXYtb2FtOk1hbmFnZWRFbGVtZW50OwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgfQoKICAgICAgICBsZWFmIG1hbmFnZWQtYnktbWFuYWdlZEVsZW1lbnQgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiTy1EVSBGdW5jdGlvbiBtYW5hZ2VkIGJ5IE1hbmFnZWQgRWxlbWVudC4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YlNpZGUgb3ItdGVpdi1yYW46T0RVRnVuY3Rpb247CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICAgICAgbWFuZGF0b3J5IHRydWU7CiAgICAgICAgfQogICAgfQoKICAgIG9yLXRlaXYteWV4dDpiaURpcmVjdGlvbmFsVG9wb2xvZ3lSZWxhdGlvbnNoaXAgTUFOQUdFREVMRU1FTlRfTUFOQUdFU19PQ1VDUEZVTkNUSU9OIHsgICAgLy8gMSB0byAwLi5uCgogICAgICAgIGRlc2NyaXB0aW9uCiAgICAgICAgICAgICJUaGUgYVNpZGUgb2YgdGhpcyByZWxhdGlvbnNoaXAgaXMgYW4gaW5zdGFuY2Ugb2YgdGhlIE1hbmFnZWRFbGVtZW50IHR5cGUuCiAgICAgICAgICAgIFRoZSBiU2lkZSBvZiB0aGlzIHJlbGF0aW9uc2hpcCBpcyBhbiBpbnN0YW5jZSBvZiB0aGUgT0NVQ1BGdW5jdGlvbiB0eXBlLgogICAgICAgICAgICBUaGUgTWFuYWdlZEVsZW1lbnQgcmVwcmVzZW50cyB0aGUgbm9kZSB0aGF0IG1hbmFnZXMgdGhlIE9DVUNQRnVuY3Rpb24uCiAgICAgICAgICAgIEEgTWFuYWdlZEVsZW1lbnQgaW5zdGFuY2UgY2FuIG1hbmFnZSBtYW55IE9DVUNQRnVuY3Rpb25zLgogICAgICAgICAgICBBbiBPQ1VDUEZ1bmN0aW9uIGluc3RhbmNlIG11c3QgYmUgbWFuYWdlZCBieSBvbmUgTWFuYWdlZEVsZW1lbnQuCiAgICAgICAgICAgICI7CgogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpUb3BfR3JwX1R5cGU7CiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOk9yaWdpbl9FbnRpdHlfTWFwcGluZ19HcnA7CiAgICAgICAga2V5IGlkOwoKICAgICAgICBsZWFmLWxpc3QgbWFuYWdlZC1vY3VjcEZ1bmN0aW9uIHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIk1hbmFnZWQgRWxlbWVudCBtYW5hZ2VzIE8tQ1UtQ1AgRnVuY3Rpb24uIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmFTaWRlIG9yLXRlaXYtb2FtOk1hbmFnZWRFbGVtZW50OwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgfQoKICAgICAgICBsZWFmIG1hbmFnZWQtYnktbWFuYWdlZEVsZW1lbnQgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiTy1DVS1DUCBGdW5jdGlvbiBtYW5hZ2VkIGJ5IE1hbmFnZWQgRWxlbWVudC4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YlNpZGUgb3ItdGVpdi1yYW46T0NVQ1BGdW5jdGlvbjsKICAgICAgICAgICAgdHlwZSBpbnN0YW5jZS1pZGVudGlmaWVyOwogICAgICAgICAgICBtYW5kYXRvcnkgdHJ1ZTsKICAgICAgICB9CiAgICB9CgogICAgb3ItdGVpdi15ZXh0OmJpRGlyZWN0aW9uYWxUb3BvbG9neVJlbGF0aW9uc2hpcCBNQU5BR0VERUxFTUVOVF9NQU5BR0VTX09DVVVQRlVOQ1RJT04geyAgICAvLyAxIHRvIDAuLm4KCiAgICAgICAgZGVzY3JpcHRpb24KICAgICAgICAgICAgIlRoZSBhU2lkZSBvZiB0aGlzIHJlbGF0aW9uc2hpcCBpcyBhbiBpbnN0YW5jZSBvZiB0aGUgTWFuYWdlZEVsZW1lbnQgdHlwZS4KICAgICAgICAgICAgVGhlIGJTaWRlIG9mIHRoaXMgcmVsYXRpb25zaGlwIGlzIGFuIGluc3RhbmNlIG9mIHRoZSBPQ1VVUEZ1bmN0aW9uIHR5cGUuCiAgICAgICAgICAgIFRoZSBNYW5hZ2VkRWxlbWVudCByZXByZXNlbnRzIHRoZSBub2RlIHRoYXQgbWFuYWdlcyB0aGUgT0NVVVBGdW5jdGlvbi4KICAgICAgICAgICAgQSBNYW5hZ2VkRWxlbWVudCBpbnN0YW5jZSBjYW4gbWFuYWdlIG1hbnkgT0NVVVBGdW5jdGlvbnMuCiAgICAgICAgICAgIEFuIE9DVVVQRnVuY3Rpb24gaW5zdGFuY2UgbXVzdCBiZSBtYW5hZ2VkIGJ5IG9uZSBNYW5hZ2VkRWxlbWVudC4KICAgICAgICAgICAgIjsKCiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOlRvcF9HcnBfVHlwZTsKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6T3JpZ2luX0VudGl0eV9NYXBwaW5nX0dycDsKICAgICAgICBrZXkgaWQ7CgogICAgICAgIGxlYWYtbGlzdCBtYW5hZ2VkLW9jdXVwRnVuY3Rpb24gewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiTWFuYWdlZCBFbGVtZW50IG1hbmFnZXMgTy1DVS1VUCBGdW5jdGlvbi4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YVNpZGUgb3ItdGVpdi1vYW06TWFuYWdlZEVsZW1lbnQ7CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICB9CgogICAgICAgIGxlYWYgbWFuYWdlZC1ieS1tYW5hZ2VkRWxlbWVudCB7CiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJPLUNVLVVQIEZ1bmN0aW9uIG1hbmFnZWQgYnkgTWFuYWdlZCBFbGVtZW50LiI7CiAgICAgICAgICAgIG9yLXRlaXYteWV4dDpiU2lkZSBvci10ZWl2LXJhbjpPQ1VVUEZ1bmN0aW9uOwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgICAgIG1hbmRhdG9yeSB0cnVlOwogICAgICAgIH0KICAgIH0KCiAgICBvci10ZWl2LXlleHQ6YmlEaXJlY3Rpb25hbFRvcG9sb2d5UmVsYXRpb25zaGlwIE1BTkFHRURFTEVNRU5UX01BTkFHRVNfT1JVRlVOQ1RJT04geyAgICAvLyAxIHRvIDAuLm4KCiAgICAgICAgZGVzY3JpcHRpb24KICAgICAgICAgICAgIlRoZSBhU2lkZSBvZiB0aGlzIHJlbGF0aW9uc2hpcCBpcyBhbiBpbnN0YW5jZSBvZiB0aGUgTWFuYWdlZEVsZW1lbnQgdHlwZS4KICAgICAgICAgICAgVGhlIGJTaWRlIG9mIHRoaXMgcmVsYXRpb25zaGlwIGlzIGFuIGluc3RhbmNlIG9mIHRoZSBPUlVGdW5jdGlvbiB0eXBlLgogICAgICAgICAgICBUaGUgTWFuYWdlZEVsZW1lbnQgcmVwcmVzZW50cyB0aGUgbm9kZSB0aGF0IG1hbmFnZXMgdGhlIE9SVUZ1bmN0aW9uLgogICAgICAgICAgICBBIE1hbmFnZWRFbGVtZW50IGluc3RhbmNlIGNhbiBtYW5hZ2UgbWFueSBPUlVGdW5jdGlvbi4KICAgICAgICAgICAgQW4gT1JVRnVuY3Rpb24gaW5zdGFuY2UgbXVzdCBiZSBtYW5hZ2VkIGJ5IG9uZSBNYW5hZ2VkRWxlbWVudC4KICAgICAgICAgICAgIjsKCiAgICAgICAgdXNlcyBvci10ZWl2LXR5cGVzOlRvcF9HcnBfVHlwZTsKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6T3JpZ2luX0VudGl0eV9NYXBwaW5nX0dycDsKICAgICAgICBrZXkgaWQ7CgogICAgICAgIGxlYWYtbGlzdCBtYW5hZ2VkLW9ydUZ1bmN0aW9uIHsKICAgICAgICAgICAgZGVzY3JpcHRpb24gIk1hbmFnZWQgRWxlbWVudCBtYW5hZ2VzIE8tUlUgRnVuY3Rpb24uIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmFTaWRlIG9yLXRlaXYtb2FtOk1hbmFnZWRFbGVtZW50OwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgfQoKICAgICAgICBsZWFmIG1hbmFnZWQtYnktbWFuYWdlZEVsZW1lbnQgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiTy1SVSBGdW5jdGlvbiBtYW5hZ2VkIGJ5IE1hbmFnZWQgRWxlbWVudC4iOwogICAgICAgICAgICBvci10ZWl2LXlleHQ6YlNpZGUgb3ItdGVpdi1yYW46T1JVRnVuY3Rpb247CiAgICAgICAgICAgIHR5cGUgaW5zdGFuY2UtaWRlbnRpZmllcjsKICAgICAgICAgICAgbWFuZGF0b3J5IHRydWU7CiAgICAgICAgfQogICAgfQoKICAgIG9yLXRlaXYteWV4dDpiaURpcmVjdGlvbmFsVG9wb2xvZ3lSZWxhdGlvbnNoaXAgTUFOQUdFREVMRU1FTlRfTUFOQUdFU19ORUFSUlRSSUNGVU5DVElPTiB7ICAgIC8vIDEgdG8gMC4ubgoKICAgICAgICBkZXNjcmlwdGlvbgogICAgICAgICAgICAiVGhlIGFTaWRlIG9mIHRoaXMgcmVsYXRpb25zaGlwIGlzIGFuIGluc3RhbmNlIG9mIHRoZSBNYW5hZ2VkRWxlbWVudCB0eXBlLgogICAgICAgICAgICBUaGUgYlNpZGUgb2YgdGhpcyByZWxhdGlvbnNoaXAgaXMgYW4gaW5zdGFuY2Ugb2YgdGhlIE5lYXJSVFJJQ0Z1bmN0aW9uIHR5cGUuCiAgICAgICAgICAgIFRoZSBNYW5hZ2VkRWxlbWVudCByZXByZXNlbnRzIHRoZSBub2RlIHRoYXQgbWFuYWdlcyB0aGUgTmVhclJUUklDRnVuY3Rpb24uCiAgICAgICAgICAgIEEgTWFuYWdlZEVsZW1lbnQgaW5zdGFuY2UgY2FuIG1hbmFnZSBtYW55IE5lYXJSVFJJQ0Z1bmN0aW9uLgogICAgICAgICAgICBBbiBOZWFyUlRSSUNGdW5jdGlvbiBpbnN0YW5jZSBtdXN0IGJlIG1hbmFnZWQgYnkgb25lIE1hbmFnZWRFbGVtZW50LgogICAgICAgICAgICAiOwoKICAgICAgICB1c2VzIG9yLXRlaXYtdHlwZXM6VG9wX0dycF9UeXBlOwogICAgICAgIHVzZXMgb3ItdGVpdi10eXBlczpPcmlnaW5fRW50aXR5X01hcHBpbmdfR3JwOwogICAgICAgIGtleSBpZDsKCiAgICAgICAgbGVhZi1saXN0IG1hbmFnZWQtbmVhclJUUklDRnVuY3Rpb24gewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiTWFuYWdlZCBFbGVtZW50IG1hbmFnZXMgTmVhciBSVCBSSUMgRnVuY3Rpb24uIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmFTaWRlIG9yLXRlaXYtb2FtOk1hbmFnZWRFbGVtZW50OwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgfQoKICAgICAgICBsZWFmIG1hbmFnZWQtYnktbWFuYWdlZEVsZW1lbnQgewogICAgICAgICAgICBkZXNjcmlwdGlvbiAiTmVhciBSVCBSSUMgRnVuY3Rpb24gbWFuYWdlZCBieSBNYW5hZ2VkIEVsZW1lbnQuIjsKICAgICAgICAgICAgb3ItdGVpdi15ZXh0OmJTaWRlIG9yLXRlaXYtcmFuOk5lYXJSVFJJQ0Z1bmN0aW9uOwogICAgICAgICAgICB0eXBlIGluc3RhbmNlLWlkZW50aWZpZXI7CiAgICAgICAgICAgIG1hbmRhdG9yeSB0cnVlOwogICAgICAgIH0KICAgIH0KfQ==
\.
-COPY ties_model.entity_info("storedAt", "name", "moduleReferenceName") FROM stdin;
-o-ran-smo-teiv-cloud_CloudifiedNF CloudifiedNF o-ran-smo-teiv-cloud
-o-ran-smo-teiv-cloud_NFDeployment NFDeployment o-ran-smo-teiv-cloud
-o-ran-smo-teiv-cloud_NodeCluster NodeCluster o-ran-smo-teiv-cloud
-o-ran-smo-teiv-cloud_OCloudNamespace OCloudNamespace o-ran-smo-teiv-cloud
-o-ran-smo-teiv-cloud_OCloudSite OCloudSite o-ran-smo-teiv-cloud
-o-ran-smo-teiv-equipment_AntennaModule AntennaModule o-ran-smo-teiv-equipment
-o-ran-smo-teiv-equipment_Site Site o-ran-smo-teiv-equipment
-o-ran-smo-teiv-oam_ManagedElement ManagedElement o-ran-smo-teiv-oam
-o-ran-smo-teiv-ran_AntennaCapability AntennaCapability o-ran-smo-teiv-ran
-o-ran-smo-teiv-ran_NRCellCU NRCellCU o-ran-smo-teiv-ran
-o-ran-smo-teiv-ran_NRCellDU NRCellDU o-ran-smo-teiv-ran
-o-ran-smo-teiv-ran_NRSectorCarrier NRSectorCarrier o-ran-smo-teiv-ran
-o-ran-smo-teiv-ran_NearRTRICFunction NearRTRICFunction o-ran-smo-teiv-ran
-o-ran-smo-teiv-ran_OCUCPFunction OCUCPFunction o-ran-smo-teiv-ran
-o-ran-smo-teiv-ran_OCUUPFunction OCUUPFunction o-ran-smo-teiv-ran
-o-ran-smo-teiv-ran_ODUFunction ODUFunction o-ran-smo-teiv-ran
-o-ran-smo-teiv-ran_ORUFunction ORUFunction o-ran-smo-teiv-ran
-o-ran-smo-teiv-ran_Sector Sector o-ran-smo-teiv-ran
+COPY ties_model.entity_info("storedAt", "name", "moduleReferenceName", "attributeNames") FROM stdin;
+o-ran-smo-teiv-cloud_CloudifiedNF CloudifiedNF o-ran-smo-teiv-cloud ["name"]
+o-ran-smo-teiv-cloud_NFDeployment NFDeployment o-ran-smo-teiv-cloud ["name"]
+o-ran-smo-teiv-cloud_NodeCluster NodeCluster o-ran-smo-teiv-cloud ["name"]
+o-ran-smo-teiv-cloud_OCloudNamespace OCloudNamespace o-ran-smo-teiv-cloud ["name"]
+o-ran-smo-teiv-cloud_OCloudSite OCloudSite o-ran-smo-teiv-cloud ["geo-location", "name"]
+o-ran-smo-teiv-equipment_AntennaModule AntennaModule o-ran-smo-teiv-equipment ["antennaBeamWidth", "antennaModelNumber", "azimuth", "electricalAntennaTilt", "geo-location", "horizontalBeamWidth", "mechanicalAntennaBearing", "mechanicalAntennaTilt", "positionWithinSector", "totalTilt", "verticalBeamWidth"]
+o-ran-smo-teiv-equipment_Site Site o-ran-smo-teiv-equipment ["geo-location", "name"]
+o-ran-smo-teiv-oam_ManagedElement ManagedElement o-ran-smo-teiv-oam []
+o-ran-smo-teiv-ran_AntennaCapability AntennaCapability o-ran-smo-teiv-ran ["eUtranFqBands", "geranFqBands", "nRFqBands"]
+o-ran-smo-teiv-ran_NRCellCU NRCellCU o-ran-smo-teiv-ran ["cellLocalId", "nCI", "nRTAC", "plmnId"]
+o-ran-smo-teiv-ran_NRCellDU NRCellDU o-ran-smo-teiv-ran ["cellLocalId", "nCI", "nRPCI", "nRTAC"]
+o-ran-smo-teiv-ran_NRSectorCarrier NRSectorCarrier o-ran-smo-teiv-ran ["arfcnDL", "arfcnUL", "bSChannelBwDL", "frequencyDL", "frequencyUL"]
+o-ran-smo-teiv-ran_NearRTRICFunction NearRTRICFunction o-ran-smo-teiv-ran ["nearRtRicId", "pLMNId"]
+o-ran-smo-teiv-ran_OCUCPFunction OCUCPFunction o-ran-smo-teiv-ran ["gNBCUName", "gNBId", "gNBIdLength", "pLMNId"]
+o-ran-smo-teiv-ran_OCUUPFunction OCUUPFunction o-ran-smo-teiv-ran ["gNBId", "gNBIdLength", "pLMNIdList"]
+o-ran-smo-teiv-ran_ODUFunction ODUFunction o-ran-smo-teiv-ran ["dUpLMNId", "gNBDUId", "gNBId", "gNBIdLength"]
+o-ran-smo-teiv-ran_ORUFunction ORUFunction o-ran-smo-teiv-ran ["oruId"]
+o-ran-smo-teiv-ran_Sector Sector o-ran-smo-teiv-ran ["azimuth", "geo-location", "sectorId"]
\.
COPY ties_model.relationship_info("name", "aSideAssociationName", "aSideMOType", "aSideModule", "aSideMinCardinality", "aSideMaxCardinality", "bSideAssociationName", "bSideMOType", "bSideModule", "bSideMinCardinality", "bSideMaxCardinality", "associationKind", "connectSameEntity", "relationshipDataLocation", "storedAt", "moduleReferenceName") FROM stdin;
ANTENNAMODULE_INSTALLED_AT_SITE installed-at-site AntennaModule o-ran-smo-teiv-equipment 0 9223372036854775807 installed-antennaModule Site o-ran-smo-teiv-equipment 0 1 BI_DIRECTIONAL false A_SIDE o-ran-smo-teiv-equipment_AntennaModule o-ran-smo-teiv-equipment
ANTENNAMODULE_SERVES_ANTENNACAPABILITY serviced-antennaCapability AntennaModule o-ran-smo-teiv-equipment 0 9223372036854775807 serving-antennaModule AntennaCapability o-ran-smo-teiv-ran 0 9223372036854775807 BI_DIRECTIONAL false RELATION o-ran-smo-teiv-rel-equipment-ran_ANTENNAMODULE_SERVES_ANTENNACAPABILITY o-ran-smo-teiv-rel-equipment-ran
+ANTENNAMODULE_SERVES_NRCELLDU serviced-nrCellDu AntennaModule o-ran-smo-teiv-equipment 1 9223372036854775807 serving-antennaModule NRCellDU o-ran-smo-teiv-ran 0 9223372036854775807 BI_DIRECTIONAL false RELATION o-ran-smo-teiv-rel-equipment-ran_ANTENNAMODULE_SERVES_NRCELLDU o-ran-smo-teiv-rel-equipment-ran
CLOUDIFIEDNF_COMPRISES_NFDEPLOYMENT comprised-nFDeployment CloudifiedNF o-ran-smo-teiv-cloud 1 1 comprised-by-cloudifiedNF NFDeployment o-ran-smo-teiv-cloud 1 9223372036854775807 BI_DIRECTIONAL false B_SIDE o-ran-smo-teiv-cloud_NFDeployment o-ran-smo-teiv-cloud
MANAGEDELEMENT_DEPLOYED_AS_CLOUDIFIEDNF deployed-as-cloudifiedNF ManagedElement o-ran-smo-teiv-oam 1 1 deployed-managedElement CloudifiedNF o-ran-smo-teiv-cloud 0 1 BI_DIRECTIONAL false A_SIDE o-ran-smo-teiv-oam_ManagedElement o-ran-smo-teiv-rel-oam-cloud
MANAGEDELEMENT_MANAGES_NEARRTRICFUNCTION managed-nearRTRICFunction ManagedElement o-ran-smo-teiv-oam 1 1 managed-by-managedElement NearRTRICFunction o-ran-smo-teiv-ran 0 9223372036854775807 BI_DIRECTIONAL false B_SIDE o-ran-smo-teiv-ran_NearRTRICFunction o-ran-smo-teiv-rel-oam-ran
@@ -495,7 +519,7 @@ NFDEPLOYMENT_DEPLOYED_ON_OCLOUDNAMESPACE deployed-on-ocloudNamespace NFDeploymen
NFDEPLOYMENT_SERVES_MANAGEDELEMENT serviced-managedElement NFDeployment o-ran-smo-teiv-cloud 1 9223372036854775807 serving-nFDeployment ManagedElement o-ran-smo-teiv-oam 1 1 BI_DIRECTIONAL false A_SIDE o-ran-smo-teiv-cloud_NFDeployment o-ran-smo-teiv-rel-oam-cloud
NFDEPLOYMENT_SERVES_NEARRTRICFUNCTION serviced-nearRTRICFunction NFDeployment o-ran-smo-teiv-cloud 0 9223372036854775807 serving-nFDeployment NearRTRICFunction o-ran-smo-teiv-ran 0 9223372036854775807 BI_DIRECTIONAL false RELATION o-ran-smo-teiv-rel-cloud-ran_NFDEPLOYMENT_SERVES_NEARRTRICFUNCTION o-ran-smo-teiv-rel-cloud-ran
NFDEPLOYMENT_SERVES_OCUCPFUNCTION serviced-ocucpFunction NFDeployment o-ran-smo-teiv-cloud 0 9223372036854775807 serving-nFDeployment OCUCPFunction o-ran-smo-teiv-ran 0 9223372036854775807 BI_DIRECTIONAL false RELATION o-ran-smo-teiv-rel-cloud-ran_NFDEPLOYMENT_SERVES_OCUCPFUNCTION o-ran-smo-teiv-rel-cloud-ran
-NFDEPLOYMENT_SERVES_OCUUPFUNCTION serviced-gnbcuupFunction NFDeployment o-ran-smo-teiv-cloud 0 9223372036854775807 serving-nFDeployment OCUUPFunction o-ran-smo-teiv-ran 0 9223372036854775807 BI_DIRECTIONAL false RELATION o-ran-smo-teiv-rel-cloud-ran_NFDEPLOYMENT_SERVES_OCUUPFUNCTION o-ran-smo-teiv-rel-cloud-ran
+NFDEPLOYMENT_SERVES_OCUUPFUNCTION serviced-ocuupFunction NFDeployment o-ran-smo-teiv-cloud 0 9223372036854775807 serving-nFDeployment OCUUPFunction o-ran-smo-teiv-ran 0 9223372036854775807 BI_DIRECTIONAL false RELATION o-ran-smo-teiv-rel-cloud-ran_NFDEPLOYMENT_SERVES_OCUUPFUNCTION o-ran-smo-teiv-rel-cloud-ran
NFDEPLOYMENT_SERVES_ODUFUNCTION serviced-oduFunction NFDeployment o-ran-smo-teiv-cloud 0 9223372036854775807 serving-nFDeployment ODUFunction o-ran-smo-teiv-ran 0 9223372036854775807 BI_DIRECTIONAL false RELATION o-ran-smo-teiv-rel-cloud-ran_NFDEPLOYMENT_SERVES_ODUFUNCTION o-ran-smo-teiv-rel-cloud-ran
NODECLUSTER_LOCATED_AT_OCLOUDSITE located-at-ocloudSite NodeCluster o-ran-smo-teiv-cloud 1 9223372036854775807 location-of-onodeCluster OCloudSite o-ran-smo-teiv-cloud 1 9223372036854775807 BI_DIRECTIONAL false RELATION o-ran-smo-teiv-cloud_NODECLUSTER_LOCATED_AT_OCLOUDSITE o-ran-smo-teiv-cloud
NRCELLDU_USES_NRSECTORCARRIER used-nrSectorCarrier NRCellDU o-ran-smo-teiv-ran 0 1 used-by-nrCellDu NRSectorCarrier o-ran-smo-teiv-ran 0 9223372036854775807 BI_DIRECTIONAL false B_SIDE o-ran-smo-teiv-ran_NRSectorCarrier o-ran-smo-teiv-ran
diff --git a/docker-compose/sql_scripts/01_init-teiv-exposure-data.sql b/docker-compose/sql_scripts/01_init-teiv-exposure-data.sql
index 17921ee..138e865 100644
--- a/docker-compose/sql_scripts/01_init-teiv-exposure-data.sql
+++ b/docker-compose/sql_scripts/01_init-teiv-exposure-data.sql
@@ -43,22 +43,47 @@ CREATE OR REPLACE FUNCTION ties_data.create_constraint_if_not_exists (
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
+ IF NOT EXISTS (SELECT constraint_name FROM information_schema.table_constraints WHERE table_schema = 'ties_data' AND table_name = t_name AND constraint_name = c_name) THEN
EXECUTE constraint_sql;
END IF;
END;
$$ language 'plpgsql';
--- Update data schema exec status
-INSERT INTO ties_model.execution_status("schema", "status") VALUES ('ties_data', 'success');
+CREATE OR REPLACE FUNCTION ties_data.create_enum_type(
+ schema_name TEXT, type_name TEXT, enum_values TEXT[]
+) RETURNS VOID AS $$
+BEGIN
+ IF NOT EXISTS (SELECT 1 FROM pg_type t JOIN pg_namespace n ON n.oid = t.typnamespace WHERE t.typname = type_name AND n.nspname = schema_name) THEN
+ EXECUTE format('CREATE TYPE %I.%I AS ENUM (%s)',schema_name, type_name, array_to_string(ARRAY(SELECT quote_literal(value) FROM unnest(enum_values) AS value), ', '));
+ END IF;
+END;
+$$ language 'plpgsql';
+
+SELECT ties_data.create_enum_type('ties_data', 'Reliability', ARRAY['OK', 'RESTORED', 'ADVISED']);
-CREATE TABLE IF NOT EXISTS ties_data."3C2E2CE7BDF8321BC824B6318B190690F58DBB82" (
+CREATE TABLE IF NOT EXISTS ties_data."responsible_adapter" (
+ "id" TEXT,
+ "hashed_id" BYTEA
+);
+
+SELECT ties_data.create_constraint_if_not_exists(
+ 'responsible_adapter',
+ 'PK_responsible_adapter_id',
+ 'ALTER TABLE ties_data."responsible_adapter" ADD CONSTRAINT "PK_responsible_adapter_id" PRIMARY KEY ("id");'
+);
+
+SELECT ties_data.create_constraint_if_not_exists(
+ 'responsible_adapter',
+ 'UNIQUE_responsible_adapter_hashed_id',
+ 'ALTER TABLE ties_data."responsible_adapter" ADD CONSTRAINT "UNIQUE_responsible_adapter_hashed_id" UNIQUE ("hashed_id");'
+);CREATE TABLE IF NOT EXISTS ties_data."3C2E2CE7BDF8321BC824B6318B190690F58DBB82" (
"id" TEXT,
"aSide_NFDeployment" TEXT,
"bSide_NearRTRICFunction" TEXT,
"CD_sourceIds" jsonb,
"CD_classifiers" jsonb,
- "CD_decorators" jsonb
+ "CD_decorators" jsonb,
+ "metadata" jsonb
);
ALTER TABLE ONLY ties_data."3C2E2CE7BDF8321BC824B6318B190690F58DBB82" ALTER COLUMN "CD_sourceIds" SET DEFAULT '[]';
@@ -73,7 +98,8 @@ CREATE TABLE IF NOT EXISTS ties_data."CFC235E0404703D1E4454647DF8AAE2C193DB402"
"bSide_AntennaCapability" TEXT,
"CD_sourceIds" jsonb,
"CD_classifiers" jsonb,
- "CD_decorators" jsonb
+ "CD_decorators" jsonb,
+ "metadata" jsonb
);
ALTER TABLE ONLY ties_data."CFC235E0404703D1E4454647DF8AAE2C193DB402" ALTER COLUMN "CD_sourceIds" SET DEFAULT '[]';
@@ -87,7 +113,8 @@ CREATE TABLE IF NOT EXISTS ties_data."o-ran-smo-teiv-cloud_CloudifiedNF" (
"name" TEXT,
"CD_sourceIds" jsonb,
"CD_classifiers" jsonb,
- "CD_decorators" jsonb
+ "CD_decorators" jsonb,
+ "metadata" jsonb
);
ALTER TABLE ONLY ties_data."o-ran-smo-teiv-cloud_CloudifiedNF" ALTER COLUMN "CD_sourceIds" SET DEFAULT '[]';
@@ -102,7 +129,8 @@ CREATE TABLE IF NOT EXISTS ties_data."o-ran-smo-teiv-cloud_NFDEPLOYMENT_DEPLOYED
"bSide_OCloudNamespace" TEXT,
"CD_sourceIds" jsonb,
"CD_classifiers" jsonb,
- "CD_decorators" jsonb
+ "CD_decorators" jsonb,
+ "metadata" jsonb
);
ALTER TABLE ONLY ties_data."o-ran-smo-teiv-cloud_NFDEPLOYMENT_DEPLOYED_ON_OCLOUDNAMESPACE" ALTER COLUMN "CD_sourceIds" SET DEFAULT '[]';
@@ -117,16 +145,19 @@ CREATE TABLE IF NOT EXISTS ties_data."o-ran-smo-teiv-cloud_NFDeployment" (
"CD_sourceIds" jsonb,
"CD_classifiers" jsonb,
"CD_decorators" jsonb,
+ "metadata" jsonb,
"REL_FK_comprised-by-cloudifiedNF" TEXT,
"REL_ID_CLOUDIFIEDNF_COMPRISES_NFDEPLOYMENT" TEXT,
"REL_CD_sourceIds_CLOUDIFIEDNF_COMPRISES_NFDEPLOYMENT" jsonb,
"REL_CD_classifiers_CLOUDIFIEDNF_COMPRISES_NFDEPLOYMENT" jsonb,
"REL_CD_decorators_CLOUDIFIEDNF_COMPRISES_NFDEPLOYMENT" jsonb,
+ "REL_metadata_CLOUDIFIEDNF_COMPRISES_NFDEPLOYMENT" jsonb,
"REL_FK_serviced-managedElement" TEXT,
"REL_ID_NFDEPLOYMENT_SERVES_MANAGEDELEMENT" TEXT,
"REL_CD_sourceIds_NFDEPLOYMENT_SERVES_MANAGEDELEMENT" jsonb,
"REL_CD_classifiers_NFDEPLOYMENT_SERVES_MANAGEDELEMENT" jsonb,
- "REL_CD_decorators_NFDEPLOYMENT_SERVES_MANAGEDELEMENT" jsonb
+ "REL_CD_decorators_NFDEPLOYMENT_SERVES_MANAGEDELEMENT" jsonb,
+ "REL_metadata_NFDEPLOYMENT_SERVES_MANAGEDELEMENT" jsonb
);
ALTER TABLE ONLY ties_data."o-ran-smo-teiv-cloud_NFDeployment" ALTER COLUMN "CD_sourceIds" SET DEFAULT '[]';
@@ -153,7 +184,8 @@ CREATE TABLE IF NOT EXISTS ties_data."o-ran-smo-teiv-cloud_NODECLUSTER_LOCATED_A
"bSide_OCloudSite" TEXT,
"CD_sourceIds" jsonb,
"CD_classifiers" jsonb,
- "CD_decorators" jsonb
+ "CD_decorators" jsonb,
+ "metadata" jsonb
);
ALTER TABLE ONLY ties_data."o-ran-smo-teiv-cloud_NODECLUSTER_LOCATED_AT_OCLOUDSITE" ALTER COLUMN "CD_sourceIds" SET DEFAULT '[]';
@@ -167,7 +199,8 @@ CREATE TABLE IF NOT EXISTS ties_data."o-ran-smo-teiv-cloud_NodeCluster" (
"name" TEXT,
"CD_sourceIds" jsonb,
"CD_classifiers" jsonb,
- "CD_decorators" jsonb
+ "CD_decorators" jsonb,
+ "metadata" jsonb
);
ALTER TABLE ONLY ties_data."o-ran-smo-teiv-cloud_NodeCluster" ALTER COLUMN "CD_sourceIds" SET DEFAULT '[]';
@@ -182,11 +215,13 @@ CREATE TABLE IF NOT EXISTS ties_data."o-ran-smo-teiv-cloud_OCloudNamespace" (
"CD_sourceIds" jsonb,
"CD_classifiers" jsonb,
"CD_decorators" jsonb,
+ "metadata" jsonb,
"REL_FK_deployed-on-nodeCluster" TEXT,
"REL_ID_OCLOUDNAMESPACE_DEPLOYED_ON_NODECLUSTER" TEXT,
"REL_CD_sourceIds_OCLOUDNAMESPACE_DEPLOYED_ON_NODECLUSTER" jsonb,
"REL_CD_classifiers_OCLOUDNAMESPACE_DEPLOYED_ON_NODECLUSTER" jsonb,
- "REL_CD_decorators_OCLOUDNAMESPACE_DEPLOYED_ON_NODECLUSTER" jsonb
+ "REL_CD_decorators_OCLOUDNAMESPACE_DEPLOYED_ON_NODECLUSTER" jsonb,
+ "REL_metadata_OCLOUDNAMESPACE_DEPLOYED_ON_NODECLUSTER" jsonb
);
ALTER TABLE ONLY ties_data."o-ran-smo-teiv-cloud_OCloudNamespace" ALTER COLUMN "CD_sourceIds" SET DEFAULT '[]';
@@ -207,7 +242,8 @@ CREATE TABLE IF NOT EXISTS ties_data."o-ran-smo-teiv-cloud_OCloudSite" (
"name" TEXT,
"CD_sourceIds" jsonb,
"CD_classifiers" jsonb,
- "CD_decorators" jsonb
+ "CD_decorators" jsonb,
+ "metadata" jsonb
);
ALTER TABLE ONLY ties_data."o-ran-smo-teiv-cloud_OCloudSite" ALTER COLUMN "CD_sourceIds" SET DEFAULT '[]';
@@ -220,25 +256,31 @@ CREATE TABLE IF NOT EXISTS ties_data."o-ran-smo-teiv-equipment_AntennaModule" (
"id" TEXT,
"antennaBeamWidth" jsonb,
"antennaModelNumber" TEXT,
+ "azimuth" DECIMAL,
"electricalAntennaTilt" INTEGER,
"geo-location" geography,
+ "horizontalBeamWidth" DECIMAL,
"mechanicalAntennaBearing" INTEGER,
"mechanicalAntennaTilt" INTEGER,
"positionWithinSector" TEXT,
"totalTilt" INTEGER,
+ "verticalBeamWidth" DECIMAL,
"CD_sourceIds" jsonb,
"CD_classifiers" jsonb,
"CD_decorators" jsonb,
+ "metadata" jsonb,
"REL_FK_installed-at-site" TEXT,
"REL_ID_ANTENNAMODULE_INSTALLED_AT_SITE" TEXT,
"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_metadata_ANTENNAMODULE_INSTALLED_AT_SITE" jsonb,
"REL_FK_grouped-by-sector" TEXT,
"REL_ID_SECTOR_GROUPS_ANTENNAMODULE" TEXT,
"REL_CD_sourceIds_SECTOR_GROUPS_ANTENNAMODULE" jsonb,
"REL_CD_classifiers_SECTOR_GROUPS_ANTENNAMODULE" jsonb,
- "REL_CD_decorators_SECTOR_GROUPS_ANTENNAMODULE" jsonb
+ "REL_CD_decorators_SECTOR_GROUPS_ANTENNAMODULE" jsonb,
+ "REL_metadata_SECTOR_GROUPS_ANTENNAMODULE" jsonb
);
ALTER TABLE ONLY ties_data."o-ran-smo-teiv-equipment_AntennaModule" ALTER COLUMN "CD_sourceIds" SET DEFAULT '[]';
@@ -265,7 +307,8 @@ CREATE TABLE IF NOT EXISTS ties_data."o-ran-smo-teiv-equipment_Site" (
"name" TEXT,
"CD_sourceIds" jsonb,
"CD_classifiers" jsonb,
- "CD_decorators" jsonb
+ "CD_decorators" jsonb,
+ "metadata" jsonb
);
ALTER TABLE ONLY ties_data."o-ran-smo-teiv-equipment_Site" ALTER COLUMN "CD_sourceIds" SET DEFAULT '[]';
@@ -279,11 +322,13 @@ CREATE TABLE IF NOT EXISTS ties_data."o-ran-smo-teiv-oam_ManagedElement" (
"CD_sourceIds" jsonb,
"CD_classifiers" jsonb,
"CD_decorators" jsonb,
+ "metadata" jsonb,
"REL_FK_deployed-as-cloudifiedNF" TEXT,
"REL_ID_MANAGEDELEMENT_DEPLOYED_AS_CLOUDIFIEDNF" TEXT,
"REL_CD_sourceIds_MANAGEDELEMENT_DEPLOYED_AS_CLOUDIFIEDNF" jsonb,
"REL_CD_classifiers_MANAGEDELEMENT_DEPLOYED_AS_CLOUDIFIEDNF" jsonb,
- "REL_CD_decorators_MANAGEDELEMENT_DEPLOYED_AS_CLOUDIFIEDNF" jsonb
+ "REL_CD_decorators_MANAGEDELEMENT_DEPLOYED_AS_CLOUDIFIEDNF" jsonb,
+ "REL_metadata_MANAGEDELEMENT_DEPLOYED_AS_CLOUDIFIEDNF" jsonb
);
ALTER TABLE ONLY ties_data."o-ran-smo-teiv-oam_ManagedElement" ALTER COLUMN "CD_sourceIds" SET DEFAULT '[]';
@@ -305,7 +350,8 @@ CREATE TABLE IF NOT EXISTS ties_data."o-ran-smo-teiv-ran_AntennaCapability" (
"nRFqBands" jsonb,
"CD_sourceIds" jsonb,
"CD_classifiers" jsonb,
- "CD_decorators" jsonb
+ "CD_decorators" jsonb,
+ "metadata" jsonb
);
ALTER TABLE ONLY ties_data."o-ran-smo-teiv-ran_AntennaCapability" ALTER COLUMN "CD_sourceIds" SET DEFAULT '[]';
@@ -323,11 +369,13 @@ CREATE TABLE IF NOT EXISTS ties_data."o-ran-smo-teiv-ran_NRCellCU" (
"CD_sourceIds" jsonb,
"CD_classifiers" jsonb,
"CD_decorators" jsonb,
+ "metadata" jsonb,
"REL_FK_provided-by-ocucpFunction" TEXT,
"REL_ID_OCUCPFUNCTION_PROVIDES_NRCELLCU" TEXT,
"REL_CD_sourceIds_OCUCPFUNCTION_PROVIDES_NRCELLCU" jsonb,
"REL_CD_classifiers_OCUCPFUNCTION_PROVIDES_NRCELLCU" jsonb,
- "REL_CD_decorators_OCUCPFUNCTION_PROVIDES_NRCELLCU" jsonb
+ "REL_CD_decorators_OCUCPFUNCTION_PROVIDES_NRCELLCU" jsonb,
+ "REL_metadata_OCUCPFUNCTION_PROVIDES_NRCELLCU" jsonb
);
ALTER TABLE ONLY ties_data."o-ran-smo-teiv-ran_NRCellCU" ALTER COLUMN "CD_sourceIds" SET DEFAULT '[]';
@@ -351,16 +399,19 @@ CREATE TABLE IF NOT EXISTS ties_data."o-ran-smo-teiv-ran_NRCellDU" (
"CD_sourceIds" jsonb,
"CD_classifiers" jsonb,
"CD_decorators" jsonb,
+ "metadata" jsonb,
"REL_FK_provided-by-oduFunction" TEXT,
"REL_ID_ODUFUNCTION_PROVIDES_NRCELLDU" TEXT,
"REL_CD_sourceIds_ODUFUNCTION_PROVIDES_NRCELLDU" jsonb,
"REL_CD_classifiers_ODUFUNCTION_PROVIDES_NRCELLDU" jsonb,
"REL_CD_decorators_ODUFUNCTION_PROVIDES_NRCELLDU" jsonb,
+ "REL_metadata_ODUFUNCTION_PROVIDES_NRCELLDU" jsonb,
"REL_FK_grouped-by-sector" TEXT,
"REL_ID_SECTOR_GROUPS_NRCELLDU" TEXT,
"REL_CD_sourceIds_SECTOR_GROUPS_NRCELLDU" jsonb,
"REL_CD_classifiers_SECTOR_GROUPS_NRCELLDU" jsonb,
- "REL_CD_decorators_SECTOR_GROUPS_NRCELLDU" jsonb
+ "REL_CD_decorators_SECTOR_GROUPS_NRCELLDU" jsonb,
+ "REL_metadata_SECTOR_GROUPS_NRCELLDU" jsonb
);
ALTER TABLE ONLY ties_data."o-ran-smo-teiv-ran_NRCellDU" ALTER COLUMN "CD_sourceIds" SET DEFAULT '[]';
@@ -391,21 +442,25 @@ CREATE TABLE IF NOT EXISTS ties_data."o-ran-smo-teiv-ran_NRSectorCarrier" (
"CD_sourceIds" jsonb,
"CD_classifiers" jsonb,
"CD_decorators" jsonb,
+ "metadata" jsonb,
"REL_FK_used-by-nrCellDu" TEXT,
"REL_ID_NRCELLDU_USES_NRSECTORCARRIER" TEXT,
"REL_CD_sourceIds_NRCELLDU_USES_NRSECTORCARRIER" jsonb,
"REL_CD_classifiers_NRCELLDU_USES_NRSECTORCARRIER" jsonb,
"REL_CD_decorators_NRCELLDU_USES_NRSECTORCARRIER" jsonb,
+ "REL_metadata_NRCELLDU_USES_NRSECTORCARRIER" jsonb,
"REL_FK_used-antennaCapability" TEXT,
"REL_ID_NRSECTORCARRIER_USES_ANTENNACAPABILITY" TEXT,
"REL_CD_sourceIds_NRSECTORCARRIER_USES_ANTENNACAPABILITY" jsonb,
"REL_CD_classifiers_NRSECTORCARRIER_USES_ANTENNACAPABILITY" jsonb,
"REL_CD_decorators_NRSECTORCARRIER_USES_ANTENNACAPABILITY" jsonb,
+ "REL_metadata_NRSECTORCARRIER_USES_ANTENNACAPABILITY" jsonb,
"REL_FK_provided-by-oduFunction" TEXT,
"REL_ID_ODUFUNCTION_PROVIDES_NRSECTORCARRIER" TEXT,
"REL_CD_sourceIds_ODUFUNCTION_PROVIDES_NRSECTORCARRIER" jsonb,
"REL_CD_classifiers_ODUFUNCTION_PROVIDES_NRSECTORCARRIER" jsonb,
- "REL_CD_decorators_ODUFUNCTION_PROVIDES_NRSECTORCARRIER" jsonb
+ "REL_CD_decorators_ODUFUNCTION_PROVIDES_NRSECTORCARRIER" jsonb,
+ "REL_metadata_ODUFUNCTION_PROVIDES_NRSECTORCARRIER" jsonb
);
ALTER TABLE ONLY ties_data."o-ran-smo-teiv-ran_NRSectorCarrier" ALTER COLUMN "CD_sourceIds" SET DEFAULT '[]';
@@ -439,11 +494,13 @@ CREATE TABLE IF NOT EXISTS ties_data."o-ran-smo-teiv-ran_NearRTRICFunction" (
"CD_sourceIds" jsonb,
"CD_classifiers" jsonb,
"CD_decorators" jsonb,
+ "metadata" jsonb,
"REL_FK_managed-by-managedElement" TEXT,
"REL_ID_MANAGEDELEMENT_MANAGES_NEARRTRICFUNCTION" TEXT,
"REL_CD_sourceIds_MANAGEDELEMENT_MANAGES_NEARRTRICFUNCTION" jsonb,
"REL_CD_classifiers_MANAGEDELEMENT_MANAGES_NEARRTRICFUNCTION" jsonb,
- "REL_CD_decorators_MANAGEDELEMENT_MANAGES_NEARRTRICFUNCTION" jsonb
+ "REL_CD_decorators_MANAGEDELEMENT_MANAGES_NEARRTRICFUNCTION" jsonb,
+ "REL_metadata_MANAGEDELEMENT_MANAGES_NEARRTRICFUNCTION" jsonb
);
ALTER TABLE ONLY ties_data."o-ran-smo-teiv-ran_NearRTRICFunction" ALTER COLUMN "CD_sourceIds" SET DEFAULT '[]';
@@ -467,11 +524,13 @@ CREATE TABLE IF NOT EXISTS ties_data."o-ran-smo-teiv-ran_OCUCPFunction" (
"CD_sourceIds" jsonb,
"CD_classifiers" jsonb,
"CD_decorators" jsonb,
+ "metadata" jsonb,
"REL_FK_managed-by-managedElement" TEXT,
"REL_ID_MANAGEDELEMENT_MANAGES_OCUCPFUNCTION" TEXT,
"REL_CD_sourceIds_MANAGEDELEMENT_MANAGES_OCUCPFUNCTION" jsonb,
"REL_CD_classifiers_MANAGEDELEMENT_MANAGES_OCUCPFUNCTION" jsonb,
- "REL_CD_decorators_MANAGEDELEMENT_MANAGES_OCUCPFUNCTION" jsonb
+ "REL_CD_decorators_MANAGEDELEMENT_MANAGES_OCUCPFUNCTION" jsonb,
+ "REL_metadata_MANAGEDELEMENT_MANAGES_OCUCPFUNCTION" jsonb
);
ALTER TABLE ONLY ties_data."o-ran-smo-teiv-ran_OCUCPFunction" ALTER COLUMN "CD_sourceIds" SET DEFAULT '[]';
@@ -494,11 +553,13 @@ CREATE TABLE IF NOT EXISTS ties_data."o-ran-smo-teiv-ran_OCUUPFunction" (
"CD_sourceIds" jsonb,
"CD_classifiers" jsonb,
"CD_decorators" jsonb,
+ "metadata" jsonb,
"REL_FK_managed-by-managedElement" TEXT,
"REL_ID_MANAGEDELEMENT_MANAGES_OCUUPFUNCTION" TEXT,
"REL_CD_sourceIds_MANAGEDELEMENT_MANAGES_OCUUPFUNCTION" jsonb,
"REL_CD_classifiers_MANAGEDELEMENT_MANAGES_OCUUPFUNCTION" jsonb,
- "REL_CD_decorators_MANAGEDELEMENT_MANAGES_OCUUPFUNCTION" jsonb
+ "REL_CD_decorators_MANAGEDELEMENT_MANAGES_OCUUPFUNCTION" jsonb,
+ "REL_metadata_MANAGEDELEMENT_MANAGES_OCUUPFUNCTION" jsonb
);
ALTER TABLE ONLY ties_data."o-ran-smo-teiv-ran_OCUUPFunction" ALTER COLUMN "CD_sourceIds" SET DEFAULT '[]';
@@ -515,17 +576,20 @@ ALTER TABLE ONLY ties_data."o-ran-smo-teiv-ran_OCUUPFunction" ALTER COLUMN "REL_
CREATE TABLE IF NOT EXISTS ties_data."o-ran-smo-teiv-ran_ODUFunction" (
"id" TEXT,
+ "dUpLMNId" jsonb,
"gNBDUId" BIGINT,
"gNBId" BIGINT,
"gNBIdLength" INTEGER,
"CD_sourceIds" jsonb,
"CD_classifiers" jsonb,
"CD_decorators" jsonb,
+ "metadata" jsonb,
"REL_FK_managed-by-managedElement" TEXT,
"REL_ID_MANAGEDELEMENT_MANAGES_ODUFUNCTION" TEXT,
"REL_CD_sourceIds_MANAGEDELEMENT_MANAGES_ODUFUNCTION" jsonb,
"REL_CD_classifiers_MANAGEDELEMENT_MANAGES_ODUFUNCTION" jsonb,
- "REL_CD_decorators_MANAGEDELEMENT_MANAGES_ODUFUNCTION" jsonb
+ "REL_CD_decorators_MANAGEDELEMENT_MANAGES_ODUFUNCTION" jsonb,
+ "REL_metadata_MANAGEDELEMENT_MANAGES_ODUFUNCTION" jsonb
);
ALTER TABLE ONLY ties_data."o-ran-smo-teiv-ran_ODUFunction" ALTER COLUMN "CD_sourceIds" SET DEFAULT '[]';
@@ -546,11 +610,13 @@ CREATE TABLE IF NOT EXISTS ties_data."o-ran-smo-teiv-ran_ORUFunction" (
"CD_sourceIds" jsonb,
"CD_classifiers" jsonb,
"CD_decorators" jsonb,
+ "metadata" jsonb,
"REL_FK_managed-by-managedElement" TEXT,
"REL_ID_MANAGEDELEMENT_MANAGES_ORUFUNCTION" TEXT,
"REL_CD_sourceIds_MANAGEDELEMENT_MANAGES_ORUFUNCTION" jsonb,
"REL_CD_classifiers_MANAGEDELEMENT_MANAGES_ORUFUNCTION" jsonb,
- "REL_CD_decorators_MANAGEDELEMENT_MANAGES_ORUFUNCTION" jsonb
+ "REL_CD_decorators_MANAGEDELEMENT_MANAGES_ORUFUNCTION" jsonb,
+ "REL_metadata_MANAGEDELEMENT_MANAGES_ORUFUNCTION" jsonb
);
ALTER TABLE ONLY ties_data."o-ran-smo-teiv-ran_ORUFunction" ALTER COLUMN "CD_sourceIds" SET DEFAULT '[]';
@@ -572,7 +638,8 @@ CREATE TABLE IF NOT EXISTS ties_data."o-ran-smo-teiv-ran_Sector" (
"sectorId" BIGINT,
"CD_sourceIds" jsonb,
"CD_classifiers" jsonb,
- "CD_decorators" jsonb
+ "CD_decorators" jsonb,
+ "metadata" jsonb
);
ALTER TABLE ONLY ties_data."o-ran-smo-teiv-ran_Sector" ALTER COLUMN "CD_sourceIds" SET DEFAULT '[]';
@@ -587,7 +654,8 @@ CREATE TABLE IF NOT EXISTS ties_data."o-ran-smo-teiv-rel-cloud-ran_NFDEPLOYMENT_
"bSide_OCUCPFunction" TEXT,
"CD_sourceIds" jsonb,
"CD_classifiers" jsonb,
- "CD_decorators" jsonb
+ "CD_decorators" jsonb,
+ "metadata" jsonb
);
ALTER TABLE ONLY ties_data."o-ran-smo-teiv-rel-cloud-ran_NFDEPLOYMENT_SERVES_OCUCPFUNCTION" ALTER COLUMN "CD_sourceIds" SET DEFAULT '[]';
@@ -602,7 +670,8 @@ CREATE TABLE IF NOT EXISTS ties_data."o-ran-smo-teiv-rel-cloud-ran_NFDEPLOYMENT_
"bSide_OCUUPFunction" TEXT,
"CD_sourceIds" jsonb,
"CD_classifiers" jsonb,
- "CD_decorators" jsonb
+ "CD_decorators" jsonb,
+ "metadata" jsonb
);
ALTER TABLE ONLY ties_data."o-ran-smo-teiv-rel-cloud-ran_NFDEPLOYMENT_SERVES_OCUUPFUNCTION" ALTER COLUMN "CD_sourceIds" SET DEFAULT '[]';
@@ -617,7 +686,8 @@ CREATE TABLE IF NOT EXISTS ties_data."o-ran-smo-teiv-rel-cloud-ran_NFDEPLOYMENT_
"bSide_ODUFunction" TEXT,
"CD_sourceIds" jsonb,
"CD_classifiers" jsonb,
- "CD_decorators" jsonb
+ "CD_decorators" jsonb,
+ "metadata" jsonb
);
ALTER TABLE ONLY ties_data."o-ran-smo-teiv-rel-cloud-ran_NFDEPLOYMENT_SERVES_ODUFUNCTION" ALTER COLUMN "CD_sourceIds" SET DEFAULT '[]';
@@ -626,6 +696,22 @@ ALTER TABLE ONLY ties_data."o-ran-smo-teiv-rel-cloud-ran_NFDEPLOYMENT_SERVES_ODU
ALTER TABLE ONLY ties_data."o-ran-smo-teiv-rel-cloud-ran_NFDEPLOYMENT_SERVES_ODUFUNCTION" ALTER COLUMN "CD_decorators" SET DEFAULT '{}';
+CREATE TABLE IF NOT EXISTS ties_data."o-ran-smo-teiv-rel-equipment-ran_ANTENNAMODULE_SERVES_NRCELLDU" (
+ "id" TEXT,
+ "aSide_AntennaModule" TEXT,
+ "bSide_NRCellDU" TEXT,
+ "CD_sourceIds" jsonb,
+ "CD_classifiers" jsonb,
+ "CD_decorators" jsonb,
+ "metadata" jsonb
+);
+
+ALTER TABLE ONLY ties_data."o-ran-smo-teiv-rel-equipment-ran_ANTENNAMODULE_SERVES_NRCELLDU" ALTER COLUMN "CD_sourceIds" SET DEFAULT '[]';
+
+ALTER TABLE ONLY ties_data."o-ran-smo-teiv-rel-equipment-ran_ANTENNAMODULE_SERVES_NRCELLDU" ALTER COLUMN "CD_classifiers" SET DEFAULT '[]';
+
+ALTER TABLE ONLY ties_data."o-ran-smo-teiv-rel-equipment-ran_ANTENNAMODULE_SERVES_NRCELLDU" ALTER COLUMN "CD_decorators" SET DEFAULT '{}';
+
SELECT ties_data.create_constraint_if_not_exists(
'3C2E2CE7BDF8321BC824B6318B190690F58DBB82',
'PK_82A1C5618438FF6DF7CDD48FD71E0A584E6D052A',
@@ -776,6 +862,12 @@ SELECT ties_data.create_constraint_if_not_exists(
'ALTER TABLE ties_data."o-ran-smo-teiv-rel-cloud-ran_NFDEPLOYMENT_SERVES_ODUFUNCTION" ADD CONSTRAINT "PK_A10CB552A0F126991DD325EC84DBFAC6F2BBE1A3" PRIMARY KEY ("id");'
);
+SELECT ties_data.create_constraint_if_not_exists(
+ 'o-ran-smo-teiv-rel-equipment-ran_ANTENNAMODULE_SERVES_NRCELLDU',
+ 'PK_F41873285F3BD831F63C6041B4356A063403406D',
+ 'ALTER TABLE ties_data."o-ran-smo-teiv-rel-equipment-ran_ANTENNAMODULE_SERVES_NRCELLDU" ADD CONSTRAINT "PK_F41873285F3BD831F63C6041B4356A063403406D" PRIMARY KEY ("id");'
+);
+
SELECT ties_data.create_constraint_if_not_exists(
'3C2E2CE7BDF8321BC824B6318B190690F58DBB82',
'FK_BE847E738902EA979AC709D5A3D0CCD3FD8911CA',
@@ -1064,6 +1156,18 @@ SELECT ties_data.create_constraint_if_not_exists(
'ALTER TABLE ties_data."o-ran-smo-teiv-rel-cloud-ran_NFDEPLOYMENT_SERVES_ODUFUNCTION" ADD CONSTRAINT "FK_C7C12DB840FBCF4EA729B8C2BBCD8BFDE06F0F08" FOREIGN KEY ("bSide_ODUFunction") REFERENCES ties_data."o-ran-smo-teiv-ran_ODUFunction" (id) ON DELETE CASCADE;'
);
+SELECT ties_data.create_constraint_if_not_exists(
+ 'o-ran-smo-teiv-rel-equipment-ran_ANTENNAMODULE_SERVES_NRCELLDU',
+ 'FK_1AB1E0CC29DA2E122D43A6616EC60A3F73E68649',
+ 'ALTER TABLE ties_data."o-ran-smo-teiv-rel-equipment-ran_ANTENNAMODULE_SERVES_NRCELLDU" ADD CONSTRAINT "FK_1AB1E0CC29DA2E122D43A6616EC60A3F73E68649" FOREIGN KEY ("aSide_AntennaModule") REFERENCES ties_data."o-ran-smo-teiv-equipment_AntennaModule" (id) ON DELETE CASCADE;'
+);
+
+SELECT ties_data.create_constraint_if_not_exists(
+ 'o-ran-smo-teiv-rel-equipment-ran_ANTENNAMODULE_SERVES_NRCELLDU',
+ 'FK_8605800A4923C52258A8CE3989E18A7C93D22E8C',
+ 'ALTER TABLE ties_data."o-ran-smo-teiv-rel-equipment-ran_ANTENNAMODULE_SERVES_NRCELLDU" ADD CONSTRAINT "FK_8605800A4923C52258A8CE3989E18A7C93D22E8C" FOREIGN KEY ("bSide_NRCellDU") REFERENCES ties_data."o-ran-smo-teiv-ran_NRCellDU" (id) ON DELETE CASCADE;'
+);
+
CREATE INDEX IF NOT EXISTS "IDX_996D2C34C2458A6EFE8599C1A0E6942D3D288B7A" ON ties_data."3C2E2CE7BDF8321BC824B6318B190690F58DBB82" USING GIN (("CD_sourceIds"::TEXT) gin_trgm_ops);
CREATE INDEX IF NOT EXISTS "IDX_F52FEEDBAF1B04D2D22EBAE051BB5125DF6A6968" ON ties_data."3C2E2CE7BDF8321BC824B6318B190690F58DBB82" USING GIN (("CD_classifiers"::TEXT) gin_trgm_ops);
@@ -1284,6 +1388,8 @@ CREATE INDEX IF NOT EXISTS "IDX_3346DFB8C2B7D6EEA12B7C1DE4A84B058C24A657" ON tie
CREATE INDEX IF NOT EXISTS "IDX_ADD3393C27589066C4993A3491436C6FB57A539F" ON ties_data."o-ran-smo-teiv-ran_OCUUPFunction" USING GIN ("REL_CD_decorators_MANAGEDELEMENT_MANAGES_OCUUPFUNCTION");
+CREATE INDEX IF NOT EXISTS "IDX_GIN_o-ran-smo-teiv-ran_ODUFunction_dUpLMNId" ON ties_data."o-ran-smo-teiv-ran_ODUFunction" USING GIN ("dUpLMNId");
+
CREATE INDEX IF NOT EXISTS "IDX_73790DA8FF6365B752DC8B399893AC6DE8CF26C4" ON ties_data."o-ran-smo-teiv-ran_ODUFunction" USING GIN (("CD_sourceIds"::TEXT) gin_trgm_ops);
CREATE INDEX IF NOT EXISTS "IDX_5CE9EDE1F25AB2D880A41BC5D297FDBE668182E8" ON ties_data."o-ran-smo-teiv-ran_ODUFunction" USING GIN (("CD_classifiers"::TEXT) gin_trgm_ops);
@@ -1332,6 +1438,12 @@ CREATE INDEX IF NOT EXISTS "IDX_F4A1999634924C7E4D1CBD05E83996A5B1262A8A" ON tie
CREATE INDEX IF NOT EXISTS "IDX_5BAC6D2F05A63FDE27F082E8C8F4D766C145E835" ON ties_data."o-ran-smo-teiv-rel-cloud-ran_NFDEPLOYMENT_SERVES_ODUFUNCTION" USING GIN ("CD_decorators");
+CREATE INDEX IF NOT EXISTS "IDX_0E1BE8724BEBB21C5AE3986BE150BEC8F8CD903E" ON ties_data."o-ran-smo-teiv-rel-equipment-ran_ANTENNAMODULE_SERVES_NRCELLDU" USING GIN (("CD_sourceIds"::TEXT) gin_trgm_ops);
+
+CREATE INDEX IF NOT EXISTS "IDX_F93AD0AE5C6940EE73D0B661A2E2E5BB10B3772C" ON ties_data."o-ran-smo-teiv-rel-equipment-ran_ANTENNAMODULE_SERVES_NRCELLDU" USING GIN (("CD_classifiers"::TEXT) gin_trgm_ops);
+
+CREATE INDEX IF NOT EXISTS "IDX_319FDFF6C9E6BC1D922F0A2AFEAAC294E520F753" ON ties_data."o-ran-smo-teiv-rel-equipment-ran_ANTENNAMODULE_SERVES_NRCELLDU" USING GIN ("CD_decorators");
+
ANALYZE ties_data."o-ran-smo-teiv-rel-cloud-ran_NFDEPLOYMENT_SERVES_OCUUPFUNCTION";
ANALYZE ties_data."o-ran-smo-teiv-ran_ODUFunction";
@@ -1352,6 +1464,8 @@ ANALYZE ties_data."o-ran-smo-teiv-oam_ManagedElement";
ANALYZE ties_data."o-ran-smo-teiv-ran_NRCellDU";
+ANALYZE ties_data."o-ran-smo-teiv-rel-equipment-ran_ANTENNAMODULE_SERVES_NRCELLDU";
+
ANALYZE ties_data."o-ran-smo-teiv-ran_NearRTRICFunction";
ANALYZE ties_data."o-ran-smo-teiv-cloud_CloudifiedNF";
diff --git a/docker-compose/sql_scripts/03_init-teiv-exposure-groups.sql b/docker-compose/sql_scripts/03_init-teiv-exposure-groups.sql
new file mode 100644
index 0000000..18ee6f3
--- /dev/null
+++ b/docker-compose/sql_scripts/03_init-teiv-exposure-groups.sql
@@ -0,0 +1,70 @@
+--
+-- ============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
+--
+-- 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=========================================================
+--
+
+BEGIN;
+
+CREATE SCHEMA IF NOT EXISTS ties_groups;
+ALTER SCHEMA ties_groups OWNER TO topology_exposure_user;
+SET default_tablespace = '';
+SET default_table_access_method = heap;
+
+SET ROLE 'topology_exposure_user';
+
+-- Function to create CONSTRAINT only if it does not exists
+CREATE OR REPLACE FUNCTION ties_groups.create_constraint_if_not_exists (
+ 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_schema = 'ties_groups' AND table_name = t_name AND constraint_name = c_name) THEN
+ EXECUTE constraint_sql;
+ END IF;
+END;
+$$ language 'plpgsql';
+
+CREATE TABLE IF NOT EXISTS ties_groups."groups" (
+ "id" VARCHAR(150) PRIMARY KEY,
+ "name" VARCHAR(150) NOT NULL,
+ "type" VARCHAR(50) NOT NULL
+);
+
+CREATE TABLE IF NOT EXISTS ties_groups."static_groups" (
+ "id" VARCHAR(150),
+ "topology_type" TEXT NOT NULL,
+ "provided_members_ids" TEXT[] NOT NULL,
+ PRIMARY KEY ("id", "topology_type"),
+ FOREIGN KEY ("id") REFERENCES ties_groups."groups" ("id") ON DELETE CASCADE
+);
+
+CREATE TABLE IF NOT EXISTS ties_groups."dynamic_groups" (
+ "id" VARCHAR(150) PRIMARY KEY,
+ "criteria" JSONB NOT NULL,
+ FOREIGN KEY ("id") REFERENCES ties_groups."groups" ("id") ON DELETE CASCADE
+);
+
+SELECT ties_groups.create_constraint_if_not_exists(
+ 'groups',
+ 'CHECK_groups_type',
+ 'ALTER TABLE ties_groups."groups" ADD CONSTRAINT "CHECK_groups_type" CHECK ("type" IN (''static'', ''dynamic''))'
+);
+
+COMMIT;
diff --git a/docker-compose/sql_scripts/waitForFiles.sh b/docker-compose/sql_scripts/waitForFiles.sh
index 56e0cbb..ee95677 100755
--- a/docker-compose/sql_scripts/waitForFiles.sh
+++ b/docker-compose/sql_scripts/waitForFiles.sh
@@ -2,10 +2,11 @@
FILE_PATH="/docker-entrypoint-initdb.d/00_init-teiv-exposure-model.sql"
FILE_PATH1="/docker-entrypoint-initdb.d/01_init-teiv-exposure-data.sql"
FILE_PATH2="/docker-entrypoint-initdb.d/02_init-teiv-exposure-consumer-data.sql"
+FILE_PATH3="/docker-entrypoint-initdb.d/03_init-teiv-exposure-groups.sql"
echo "Waiting for sql files to be available..."
-while [ ! -f "$FILE_PATH" ] || [ ! -f "$FILE_PATH1" ] || [ ! -f "$FILE_PATH2" ]; do
+while [ ! -f "$FILE_PATH" ] || [ ! -f "$FILE_PATH1" ] || [ ! -f "$FILE_PATH2" ] || [ ! -f "$FILE_PATH3" ]; do
echo "Waiting for sql files to be available..."
sleep 1
done
diff --git a/docs/offeredapis/html/index.html b/docs/offeredapis/html/index.html
index c9662b8..be8e186 100644
--- a/docs/offeredapis/html/index.html
+++ b/docs/offeredapis/html/index.html
@@ -871,6 +871,34 @@ ul.nav-tabs {
}
}
}
+};
+ defs["CreateGroupPayload"] = {
+ "title" : "CreateGroupPayload",
+ "type" : "object",
+ "discriminator" : {
+ "propertyName" : "type"
+ },
+ "oneOf" : [ {
+ "$ref" : "#/components/schemas/static"
+ }, {
+ "$ref" : "#/components/schemas/dynamic"
+ } ]
+};
+ defs["Criteria"] = {
+ "title" : "Criteria",
+ "type" : "object",
+ "discriminator" : {
+ "propertyName" : "queryType"
+ },
+ "oneOf" : [ {
+ "$ref" : "#/components/schemas/getEntitiesByDomain"
+ }, {
+ "$ref" : "#/components/schemas/getEntitiesByType"
+ }, {
+ "$ref" : "#/components/schemas/getRelationshipsForEntityId"
+ }, {
+ "$ref" : "#/components/schemas/getRelationshipsByType"
+ } ]
};
defs["Decorator"] = {
"title" : "Decorator",
@@ -883,7 +911,7 @@ ul.nav-tabs {
"decorators" : {
"type" : "object",
"additionalProperties" : true,
- "description" : "Decorators must be defined in schema before use. Data type of a decorator is restricted as defined by it's schema."
+ "description" : "Decorators must be defined in schema before use. Data type of a decorator is restricted as defined by its schema."
},
"entityIds" : {
"type" : "array",
@@ -942,30 +970,72 @@ ul.nav-tabs {
}
}
};
- defs["DynamicSelection"] = {
+ defs["dynamic"] = {
+ "title" : "CreateDynamicGroupPayload",
+ "required" : [ "criteria", "name", "type" ],
"type" : "object",
"properties" : {
- "resourceQuery" : {
- "$ref" : "#/components/schemas/DynamicSelection_resourceQuery"
+ "name" : {
+ "maxLength" : 150,
+ "minLength" : 1,
+ "type" : "string",
+ "description" : "A name of the topology group."
+ },
+ "type" : {
+ "type" : "string",
+ "description" : "Allowed: dynamic"
+ },
+ "criteria" : {
+ "$ref" : "#/components/schemas/Criteria"
}
- },
- "additionalProperties" : false
+ }
};
- defs["DynamicSelection_resourceQuery"] = {
- "required" : [ "url" ],
+ defs["DynamicEnum"] = {
+ "type" : "string",
+ "enum" : [ "dynamic" ]
+};
+ defs["DynamicGroupByIdResponse"] = {
+ "title" : "DynamicGroup",
+ "required" : [ "criteria", "id", "members", "name", "type" ],
"type" : "object",
"properties" : {
- "url" : {
- "type" : "string"
+ "id" : {
+ "type" : "string",
+ "description" : "The unique identifier of the topology group."
},
- "method" : {
- "type" : "string"
+ "name" : {
+ "type" : "string",
+ "description" : "The unique name of the topology group."
+ },
+ "type" : {
+ "$ref" : "#/components/schemas/DynamicEnum"
+ },
+ "members" : {
+ "$ref" : "#/components/schemas/Href"
},
- "queryParams" : {
- "type" : "object"
+ "criteria" : {
+ "$ref" : "#/components/schemas/Criteria"
+ }
+ }
+};
+ defs["DynamicGroupResponse"] = {
+ "title" : "DynamicGroup",
+ "required" : [ "id", "members", "name", "type" ],
+ "type" : "object",
+ "properties" : {
+ "id" : {
+ "type" : "string",
+ "description" : "The unique identifier of the topology group."
},
- "requestBody" : {
- "type" : "object"
+ "name" : {
+ "type" : "string",
+ "description" : "The unique name of the topology group."
+ },
+ "type" : {
+ "$ref" : "#/components/schemas/DynamicEnum"
+ },
+ "members" : {
+ "$ref" : "#/components/schemas/Href"
}
}
};
@@ -1056,39 +1126,117 @@ ul.nav-tabs {
}
}
};
- defs["Group"] = {
+ defs["getEntitiesByDomain"] = {
+ "title" : "getEntitiesByDomain",
+ "required" : [ "domain", "queryType" ],
"type" : "object",
"properties" : {
- "groupName" : {
+ "queryType" : {
+ "type" : "string",
+ "description" : "Allowed: getEntitiesByDomain"
+ },
+ "domain" : {
"type" : "string"
},
- "criteria" : {
- "$ref" : "#/components/schemas/TopologySelection"
+ "targetFilter" : {
+ "type" : "string"
+ },
+ "scopeFilter" : {
+ "type" : "string"
}
}
};
- defs["GroupResponse"] = {
+ defs["getEntitiesByType"] = {
+ "title" : "getEntitiesByType",
+ "required" : [ "domain", "entityTypeName", "queryType" ],
"type" : "object",
"properties" : {
- "id" : {
+ "queryType" : {
+ "type" : "string",
+ "description" : "Allowed: getEntitiesByType"
+ },
+ "domain" : {
"type" : "string"
},
- "groupName" : {
+ "entityTypeName" : {
"type" : "string"
},
- "criteria" : {
- "$ref" : "#/components/schemas/GroupResponse_criteria"
+ "targetFilter" : {
+ "type" : "string"
+ },
+ "scopeFilter" : {
+ "type" : "string"
+ }
+ }
+};
+ defs["getRelationshipsByType"] = {
+ "title" : "getRelationshipsByType",
+ "required" : [ "domain", "queryType", "relationshipTypeName" ],
+ "type" : "object",
+ "properties" : {
+ "queryType" : {
+ "type" : "string",
+ "description" : "Allowed: getRelationshipsByType"
+ },
+ "domain" : {
+ "type" : "string"
+ },
+ "relationshipTypeName" : {
+ "type" : "string"
+ },
+ "targetFilter" : {
+ "type" : "string"
+ },
+ "scopeFilter" : {
+ "type" : "string"
+ }
+ }
+};
+ defs["getRelationshipsForEntityId"] = {
+ "title" : "getRelationshipsForEntityId",
+ "required" : [ "domain", "entityId", "entityTypeName", "queryType" ],
+ "type" : "object",
+ "properties" : {
+ "queryType" : {
+ "type" : "string",
+ "description" : "Allowed: getRelationshipsForEntityId"
+ },
+ "domain" : {
+ "type" : "string"
+ },
+ "entityTypeName" : {
+ "type" : "string"
+ },
+ "entityId" : {
+ "type" : "string"
+ },
+ "targetFilter" : {
+ "type" : "string"
+ },
+ "scopeFilter" : {
+ "type" : "string"
}
}
};
- defs["GroupResponse_criteria"] = {
+ defs["GroupByIdResponse"] = {
+ "title" : "Group",
+ "type" : "object",
+ "oneOf" : [ {
+ "$ref" : "#/components/schemas/StaticGroupByIdResponse"
+ }, {
+ "$ref" : "#/components/schemas/DynamicGroupByIdResponse"
+ } ]
+};
+ defs["GroupResponse"] = {
+ "title" : "Group",
+ "type" : "object",
"oneOf" : [ {
- "$ref" : "#/components/schemas/StaticSelection"
+ "$ref" : "#/components/schemas/StaticGroupResponse"
}, {
- "$ref" : "#/components/schemas/DynamicSelection"
+ "$ref" : "#/components/schemas/DynamicGroupResponse"
} ]
};
- defs["Groups"] = {
+ defs["GroupsResponse"] = {
"title" : "Groups",
"type" : "object",
"properties" : {
@@ -1127,6 +1275,37 @@ ul.nav-tabs {
"format" : "uri-template"
}
}
+};
+ defs["MembersResponse"] = {
+ "title" : "GroupMembers",
+ "type" : "object",
+ "properties" : {
+ "items" : {
+ "type" : "array",
+ "items" : {
+ "type" : "object",
+ "description" : "Refer to yang model for schema definition of topology objects."
+ }
+ },
+ "self" : {
+ "$ref" : "#/components/schemas/Href"
+ },
+ "first" : {
+ "$ref" : "#/components/schemas/Href"
+ },
+ "prev" : {
+ "$ref" : "#/components/schemas/Href"
+ },
+ "next" : {
+ "$ref" : "#/components/schemas/Href"
+ },
+ "last" : {
+ "$ref" : "#/components/schemas/Href"
+ },
+ "totalCount" : {
+ "type" : "integer"
+ }
+ }
};
defs["RelationshipTypes"] = {
"title" : "RelationshipTypes",
@@ -1248,24 +1427,115 @@ ul.nav-tabs {
}
}
};
- defs["StaticSelection"] = {
+ defs["static"] = {
+ "title" : "CreateStaticGroupPayload",
+ "required" : [ "name", "providedMembers", "type" ],
"type" : "object",
"properties" : {
- "resourceInstances" : {
+ "name" : {
+ "maxLength" : 150,
+ "minLength" : 1,
+ "type" : "string",
+ "description" : "A name of the topology group."
+ },
+ "type" : {
+ "type" : "string",
+ "description" : "Allowed: static"
+ },
+ "providedMembers" : {
"minItems" : 1,
"type" : "array",
"items" : {
- "type" : "string"
+ "type" : "object",
+ "description" : "Refer to yang model for schema definition of topology objects."
}
}
}
};
- defs["TopologySelection"] = {
- "oneOf" : [ {
- "$ref" : "#/components/schemas/StaticSelection"
- }, {
- "$ref" : "#/components/schemas/DynamicSelection"
- } ]
+ defs["StaticEnum"] = {
+ "type" : "string",
+ "enum" : [ "static" ]
+};
+ defs["StaticGroupByIdResponse"] = {
+ "title" : "StaticGroup",
+ "required" : [ "id", "members", "name", "providedMembers", "type" ],
+ "type" : "object",
+ "properties" : {
+ "id" : {
+ "type" : "string",
+ "description" : "The unique identifier of the topology group."
+ },
+ "name" : {
+ "type" : "string",
+ "description" : "The unique name of the topology group."
+ },
+ "type" : {
+ "$ref" : "#/components/schemas/StaticEnum"
+ },
+ "members" : {
+ "$ref" : "#/components/schemas/Href"
+ },
+ "providedMembers" : {
+ "$ref" : "#/components/schemas/Href"
+ }
+ }
+};
+ defs["StaticGroupResponse"] = {
+ "title" : "StaticGroup",
+ "required" : [ "id", "members", "name", "providedMembers", "type" ],
+ "type" : "object",
+ "properties" : {
+ "id" : {
+ "type" : "string",
+ "description" : "The unique identifier of the topology group."
+ },
+ "name" : {
+ "type" : "string",
+ "description" : "The unique name of the topology group."
+ },
+ "type" : {
+ "$ref" : "#/components/schemas/StaticEnum"
+ },
+ "members" : {
+ "$ref" : "#/components/schemas/Href"
+ },
+ "providedMembers" : {
+ "$ref" : "#/components/schemas/Href"
+ }
+ }
+};
+ defs["UpdateGroupNamePayload"] = {
+ "title" : "UpdateGroupNamePayload",
+ "required" : [ "name" ],
+ "type" : "object",
+ "properties" : {
+ "name" : {
+ "maxLength" : 150,
+ "minLength" : 1,
+ "type" : "string"
+ }
+ }
+};
+ defs["UpdateProvidedMembersPayload"] = {
+ "title" : "UpdateProvidedMembersPayload",
+ "required" : [ "operation", "providedMembers" ],
+ "type" : "object",
+ "properties" : {
+ "operation" : {
+ "type" : "string",
+ "description" : "The operation to be performed on the members of topology group.",
+ "enum" : [ "merge", "remove" ]
+ },
+ "providedMembers" : {
+ "minItems" : 1,
+ "type" : "array",
+ "description" : "Members to be added or removed from the group.",
+ "items" : {
+ "type" : "object",
+ "description" : "Refer to yang model for schema definition of topology objects."
+ }
+ }
+ }
};
@@ -1322,6 +1592,31 @@ ul.nav-tabs {
getTopologyRelationshipTypes
+
+
+ createGroup
+
+
+ deleteGroup
+
+
+ getAllGroups
+
+
+ getGroupById
+
+
+ getMembers
+
+
+ getProvidedMembers
+
+
+ updateGroupName
+
+
+ updateProvidedMembers
+
createSchema
@@ -1335,22 +1630,6 @@ ul.nav-tabs {
getSchemas
-
-
- createGroup
-
-
- deleteGroup
-
-
- getAllGroups
-
-
- getGroup
-
-
- updateGroup
-
@@ -1385,6 +1664,9 @@ defines the relationship itself which must be unique.
well defined user specified string with an entity or relationship.
Decorators are user-defined attributes (key-value pairs) which can
be applied to topology entities and relationships.
+Topology groups provide the capability to create user-defined collections of
+topology entities and/or relationships of any type. Groups can be either
+static or dynamic based on how they are created.
Topology Exposure and Inventory API provides the capabilities to fetch topology
data. Using the filtering options, it is possible to define more specific
query requests.
@@ -1396,22 +1678,31 @@ constructed starting from the RootObject and all other objects are joined
to it. If there is no connection between the RootObject and the other
object(s), the query is not constructed. The RootObject still can be
retrieved and filtered using the /attributes.
-| Use case | domainName | entityTypeName | targetFilter | scopeFilter | Query result |
-|:-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|------------|:---------------|:--------------------------------|:----------------------------------------------------------------------------------------|:-------------------------------------------------------------------------------------------------------------------------------------|
-| To return the ids for all instances of the entityTypeName used in the query. | RAN | GNBDUFunction | | | All ids of every GNBDUFunction |
-| To return all attributes of every instance of the entityTypeName used in the query. | RAN | GNBDUFunction | /attributes | | All GNBDUFunctions with every attribute |
-| To return every instance of the entityTypeName used in the query, but only the attribute that was defined in the targetFilter parameter.
Note: The attribute must be a valid field of the object. | RAN | GNBDUFunction | /attributes(gNBId) | | All gNBIds of every GNBDUFunction |
-| To return every instance of the entityTypeName used in the query, but only the attributes that were defined in the targetFilter parameter.
Note: The attributes must be separated by a comma "," when using parenthesis "()". | RAN | GNBDUFunction | /attributes(gNBId, gNBIdLength) | | All gNBIds and gNBIdLengths of every GNBDUFunction |
-| To return the ids for all instances of the entityTypeName used in the query, that matches the given property in the scopeFilter parameter. | RAN | GNBDUFunction | | /sourceIds[contains (@item, 'SubNetwork=Ireland')] | Unique set of ids of GNBDUFunctions, where sourceIds contains SubNetwork=Ireland |
-| To return the ids for all instances of the entityTypeName used in the query, that matches the given attributes in the scopeFilter parameter.
Note: The attributes must be separated by a AND or OR". | RAN | GNBDUFunction | | /attributes [@gNBIdLength=3 and @gNBId=111] | Unique set of ids of GNBDUFunctions, where the gNBIdLength equals 3 and the gNBId equals 111 |
-| To return the ids for all instances of the entityTypeName used in the query, that satisfies one of the conditions in the scopeFilter parameter. A condition is a complete unit of scopeFilter parameter surrounded by square brackets.
Note: Multiple conditions can be given in the scopeFilter separated by a semicolon ";" to represent AND, or a pipe symbol "|" to represent OR. | RAN | GNBDUFunction | | /attributes [@gNBIdLength=3] | /sourceIds[contains (@item, 'SubNetwork=Ireland')] | Unique set of ids of GNBDUFunctions, where the gNBIdLength equals 3 or the sourceIds contains an item with "SubNetwork=Ireland" |
+| Use case | domainName | entityTypeName | targetFilter | scopeFilter | Query result |
+|:-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|------------|:---------------|:--------------------------------|:---------------------------------------------------------------------------------------|:-------------------------------------------------------------------------------------------------------------------------------|
+| To return the ids for all instances of the entityTypeName used in the query. | RAN | GNBDUFunction | | | All ids of every GNBDUFunction |
+| To return all attributes of every instance of the entityTypeName used in the query. | RAN | GNBDUFunction | /attributes | | All GNBDUFunctions with every attribute |
+| To return every instance of the entityTypeName used in the query, but only the attribute that was defined in the targetFilter parameter.
Note: The attribute must be a valid field of the object. | RAN | GNBDUFunction | /attributes(gNBId) | | All gNBIds of every GNBDUFunction |
+| To return every instance of the entityTypeName used in the query, but only the attributes that were defined in the targetFilter parameter.
Note: The attributes must be separated by a comma "," when using parenthesis "()". | RAN | GNBDUFunction | /attributes(gNBId, gNBIdLength) | | All gNBIds and gNBIdLengths of every GNBDUFunction |
+| To return the ids for all instances of the entityTypeName used in the query, that partially matches the given property in the scopeFilter parameter. | RAN | GNBDUFunction | | /sourceIds[contains (@item, 'SubNetwork=Europe')] | Unique set of ids of GNBDUFunctions, where sourceIds contains SubNetwork=Ireland |
+| To return the ids for all instances of the entityTypeName used in the query, that matches the given attributes in the scopeFilter parameter.
Note: The attributes must be separated by a AND or OR". | RAN | GNBDUFunction | | /attributes [@gNBIdLength=1 and @gNBId=9] | Unique set of ids of GNBDUFunctions, where the gNBIdLength equals 1 and the gNBId equals 9 |
+| To return the ids for all instances of the entityTypeName used in the query, that satisfies one of the conditions in the scopeFilter parameter. A condition is a complete unit of scopeFilter parameter surrounded by square brackets.
Note: Multiple conditions can be given in the scopeFilter separated by a semicolon ";" to represent AND, or a pipe symbol "|" to represent OR. | RAN | GNBDUFunction | | /attributes [@gNBIdLength=2] | /sourceIds[contains (@item, 'SubNetwork=Europe')] | Unique set of ids of GNBDUFunctions, where the gNBIdLength equals 2 or the sourceIds contains an item with "SubNetwork=Europe" |
Querying connected entities
The entityTypeName is used as the root of the queries.
+| Use case | domainName | entityTypeName | targetFilter | scopeFilter | Query result |
+|:--------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------|:---------------|:-------------|:----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|:-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| To return the ids for all instances of an entityTypeName related by an association. | REL_OAM_RAN | ENodeBFunction | | /managed-by-managedElement | All ENodeBFunction entities that are managed by any Managed Element. |
+| To return the ids for all instances of an entityTypeName related by an association to another entity specified by its id. | REL_OAM_RAN | ENodeBFunction | | /managed-by-managedElement [@id = 'urn:3gpp:dn: ManagedElement=1'] | All ENodeBFunction entities that are managed by the Managed Element urn:3gpp:dn: ManagedElement=1. |
+| To return the attributes for all instances of an entityTypeName related by one or more associations to other entities specified by their id. | REL_OAM_RAN | ENodeBFunction | /attributes | /attributes [@enbId=1] ; /managed-by-managedElement [@id='urn:3gpp:dn: ManagedElement=1'] | /managed-by-managedElement [@id='urn:3gpp:dn: ManagedElement=2'] ; /provided-euTranCell [@id='urn:3gpp:dn: ManagedElement=1, EUtranCell=2'] | All EnodeBFunction entities with enbId as 1, managed by the Managed Element urn:3gpp:dn: ManagedElement=1 or urn:3gpp:dn: ManagedElement=2, and provides EuTranCell urn:3gpp:dn: ManagedElement=1, EUtranCell=2. |
+| To return the ids for all instances of an entityTypeName related by one or more associations to other entities whose attribute matches the given scopeFilter parameter. | RAN | ENodeBFunction | | /provided-euTranCell/attributes[@tac=1] | All EnodeBFunction entities that provide an EuTranCell whose tac equals 1 |
+Querying based on geographical location
+The entityTypeName is used as the root of the queries. Use the "Well-known text" (WKT) representation of geometry to specify geometry objects.
| Use case | domainName | entityTypeName | targetFilter | scopeFilter | Query result |
|:-----------------------------------------------------------------------------------------------------------------------------------------------|-------------|:---------------|:-------------|:----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|:-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
-| To return the ids for all instances of an entityTypeName related by an association. | REL_OAM_RAN | ENodeBFunction | | /managed-by-managedElement | All ENodeBFunction entities that are managed by any Managed Element. |
-| To return the ids for all instances of an entityTypeName related by an association to another entity specified by its id. | REL_OAM_RAN | ENodeBFunction | | /managed-by-managedElement [@id = 'urn:3gpp:dn: ManagedElement=1'] | All ENodeBFunction entities that are managed by by the Managed Element urn:3gpp:dn: ManagedElement=1. |
-| To return the attributes for all instances of an entityTypeName related by one or more associations to other entities specified by their id. | REL_OAM_RAN | ENodeBFunction | /attributes | /attributes [@enbId=1] ; /managed-by-managedElement [@id='urn:3gpp:dn: ManagedElement=1'] | /managed-by-managedElement [@id='urn:3gpp:dn: ManagedElement=2'] ; /provided-euTranCell [@id='urn:3gpp:dn: ManagedElement=1, EUtranCell=2'] | All EnodeBFunction entities with enbId as 1, managed by the Managed Element urn:3gpp:dn: ManagedElement=1 or urn:3gpp:dn: ManagedElement=2, and provides EuTranCell urn:3gpp:dn: ManagedElement=1, EUtranCell=2. |
+| To return the ids for all instances of an entityTypeName where the given attribute is covered by the given polygon. | EQUIPMENT | AntennaModule | | /attributes[coveredBy(@geo-location, 'POLYGON ((-73.958444 40.800533, -73.981962 40.768558, -73.973207 40.765048, -73.949861 40.797024, -73.958444 40.800533))')] | All AntennaModule entities covered by the given polygon. |
+| To return the attributes for all instances of an entityTypeName where the given attribute is covered by the given collection of polygons. | EQUIPMENT | AntennaModule | /attributes | /attributes[coveredBy(@geo-location, 'MULTIPOLYGON (((40 40, 20 45, 45 30, 40 40)),((20 35, 10 30, 10 10, 30 5, 45 20, 20 35), (30 20, 20 15, 20 25, 30 20)))')] | All AntennaModule entities covered by the given polygons. |
+| To return the ids for all instances of an entityTypeName within the given distance in meters from a given attribute. | EQUIPMENT | AntennaModule | | /attributes[withinMeters(@geo-location, 'POINT(-73.958444 40.800533)', 500.5)] | All AntennaModule entities within the given distance from the given point. |
+| To return the attributes for all instances of an entityTypeName which has a connected entity whose given attribute is within a polygon | RAN | NRCellDU | /attributes | /serving-antennaModule/attributes[coveredBy(@geo-location, 'POLYGON ((-73.958444 40.800533, -73.981962 40.768558, -73.973207 40.765048, -73.949861 40.797024, -73.958444 40.800533))')] | All NRCellDU entities that have at least one connected AntennaModule with a geo-location attribute within the given polygon. |
Querying entities for relationships
The entityTypeName is used as the root of the queries.
| Use case | domainName | entityTypeName | entityId | targetFilter | scopeFilter | Query result |
@@ -1432,7 +1723,7 @@ retrieved and filtered using the /attributes.
| Return all related entity IDs that are exactly matched with the specified classifier with given domain name. | RAN | | /classifiers[@item = 'gnbdu-function-model:Indoor'] | All the entity IDs that are classified with "gnbdu-function-model:Indoor" in RAN domain. |
| Return all related entity IDs that are partially matched for the given classifier with given domain name. | RAN | | /classifiers[contains(@item, 'Ind')] | All the entity IDs that are partially matched with "Ind" in RAN domain. |
| Return all related entity IDs that are exactly matched with the key-value pair that specified decorators with given domain name. | RAN | | /decorators[@gnbdu-function-model:textdata = 'Stockholm'] | All the entity IDs that are exactly matched with "gnbdu-function-model:textdata = 'Stockholm'" in RAN domain. |
-| Return all related entity IDs that are exactly matched with key parameter where the value of the decorator is unknown with given domain name. | RAN | | /decorators[contains(@gnbdu-function-model:textdata, "")] | All the entity IDs that are exactly matched with "gnbdu-function-model:textdata as key of the decorator in RAN domain. |
+| Return all related entity IDs that are exactly matched with key parameter where the value of the decorator is unknown with given domain name. | RAN | | /decorators[contains(@gnbdu-function-model:textdata, '')] | All the entity IDs that are exactly matched with "gnbdu-function-model:textdata as key of the decorator in RAN domain. |
The entityName is used as the root of the queries.
| Use case | entityName | relationshipTypeName | targetFilter | scopeFilter | Query result |
|:-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------|:---------------------|:--------------------------|:----------------------------------------------------------------------------------------------------------------|:-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
@@ -1799,8 +2090,11 @@ $(document).ready(function() {
"$ref" : "#/components/schemas/Classifier"
},
"examples" : {
- "classifier" : {
- "$ref" : "#/components/examples/ClassifierExample"
+ "updateClassifier" : {
+ "$ref" : "#/components/examples/ClassifierMergeExample"
+ },
+ "removeClassifier" : {
+ "$ref" : "#/components/examples/ClassifierDeleteExample"
}
}
}
@@ -2657,8 +2951,11 @@ $(document).ready(function() {
"$ref" : "#/components/schemas/Decorator"
},
"examples" : {
- "decorator" : {
- "$ref" : "#/components/examples/DecoratorExample"
+ "mergeDecorator" : {
+ "$ref" : "#/components/examples/DecoratorMergeExample"
+ },
+ "removeDecorator" : {
+ "$ref" : "#/components/examples/DecoratorDeleteExample"
}
}
}
@@ -3974,7 +4271,7 @@ Result limiter.
curl -X GET \
-H "Accept: application/json,application/problem+json" \
- "https://localhost/topology-inventory/v1alpha11/domains/{domainName}/entity-types/{entityTypeName}/entities/{entityId}/relationships?targetFilter=/attributes(nCI,nRPCI)&scopeFilter=/attributes[@nRTAC=310]&offset=56&limit=56"
+ "https://localhost/topology-inventory/v1alpha11/domains/{domainName}/entity-types/{entityTypeName}/entities/{entityId}/relationships?targetFilter=/sourceIds;/classifiers&scopeFilter=/sourceIds[contains(@item,'ManagedElement=1')]&offset=56&limit=56"
@@ -3992,11 +4289,11 @@ public class EntitiesAndRelationshipsApiExample {
// Create an instance of the API class
EntitiesAndRelationshipsApi apiInstance = new EntitiesAndRelationshipsApi();
String accept = application/json; // String |
- String domainName = domainName_example; // String | domain name
+ String domainName = RAN; // String | domain name
String entityTypeName = entityTypeName_example; // String |
String entityId = entityId_example; // String |
- String targetFilter = /attributes(nCI,nRPCI); // String | Use *targetFilter* to specify the entity type and attributes to be returned in the REST response. The value for *targetFilter* can also be a list of entity types and attributes.
- String scopeFilter = /attributes[@nRTAC=310]; // String | Use *scopeFilter* to specify the attributes to match on. The value for *scopeFilter* can also be a list of entity types and attributes. scopeFilter returns a boolean.
+ String targetFilter = /sourceIds;/classifiers; // String | Use *targetFilter* to specify what needs to be returned in the REST response.
+ String scopeFilter = /sourceIds[contains(@item,'ManagedElement=1')]; // String | ScopeFilter is used to specify the conditions to be applied.
Integer offset = 56; // Integer | Pagination offset.
Integer limit = 56; // Integer | Result limiter.
@@ -4021,8 +4318,8 @@ final String accept = new String(); // String |
final String domainName = new String(); // String | domain name
final String entityTypeName = new String(); // String |
final String entityId = new String(); // String |
-final String targetFilter = new String(); // String | Use *targetFilter* to specify the entity type and attributes to be returned in the REST response. The value for *targetFilter* can also be a list of entity types and attributes.
-final String scopeFilter = new String(); // String | Use *scopeFilter* to specify the attributes to match on. The value for *scopeFilter* can also be a list of entity types and attributes. scopeFilter returns a boolean.
+final String targetFilter = new String(); // String | Use *targetFilter* to specify what needs to be returned in the REST response.
+final String scopeFilter = new String(); // String | ScopeFilter is used to specify the conditions to be applied.
final Integer offset = new Integer(); // Integer | Pagination offset.
final Integer limit = new Integer(); // Integer | Result limiter.
@@ -4043,11 +4340,11 @@ public class EntitiesAndRelationshipsApiExample {
public static void main(String[] args) {
EntitiesAndRelationshipsApi apiInstance = new EntitiesAndRelationshipsApi();
String accept = application/json; // String |
- String domainName = domainName_example; // String | domain name
+ String domainName = RAN; // String | domain name
String entityTypeName = entityTypeName_example; // String |
String entityId = entityId_example; // String |
- String targetFilter = /attributes(nCI,nRPCI); // String | Use *targetFilter* to specify the entity type and attributes to be returned in the REST response. The value for *targetFilter* can also be a list of entity types and attributes.
- String scopeFilter = /attributes[@nRTAC=310]; // String | Use *scopeFilter* to specify the attributes to match on. The value for *scopeFilter* can also be a list of entity types and attributes. scopeFilter returns a boolean.
+ String targetFilter = /sourceIds;/classifiers; // String | Use *targetFilter* to specify what needs to be returned in the REST response.
+ String scopeFilter = /sourceIds[contains(@item,'ManagedElement=1')]; // String | ScopeFilter is used to specify the conditions to be applied.
Integer offset = 56; // Integer | Pagination offset.
Integer limit = 56; // Integer | Result limiter.
@@ -4071,11 +4368,11 @@ public class EntitiesAndRelationshipsApiExample {
// Create an instance of the API class
EntitiesAndRelationshipsApi *apiInstance = [[EntitiesAndRelationshipsApi alloc] init];
String *accept = application/json; // (default to application/json)
-String *domainName = domainName_example; // domain name (default to null)
+String *domainName = RAN; // domain name (default to null)
String *entityTypeName = entityTypeName_example; // (default to null)
String *entityId = entityId_example; // (default to null)
-String *targetFilter = /attributes(nCI,nRPCI); // Use *targetFilter* to specify the entity type and attributes to be returned in the REST response. The value for *targetFilter* can also be a list of entity types and attributes. (optional) (default to null)
-String *scopeFilter = /attributes[@nRTAC=310]; // Use *scopeFilter* to specify the attributes to match on. The value for *scopeFilter* can also be a list of entity types and attributes. scopeFilter returns a boolean. (optional) (default to null)
+String *targetFilter = /sourceIds;/classifiers; // Use *targetFilter* to specify what needs to be returned in the REST response. (optional) (default to null)
+String *scopeFilter = /sourceIds[contains(@item,'ManagedElement=1')]; // ScopeFilter is used to specify the conditions to be applied. (optional) (default to null)
Integer *offset = 56; // Pagination offset. (optional) (default to 0)
Integer *limit = 56; // Result limiter. (optional) (default to 500)
@@ -4105,12 +4402,12 @@ Integer *limit = 56; // Result limiter. (optional) (default to 500)
// Create an instance of the API class
var api = new TopologyExposureAndInventoryApi.EntitiesAndRelationshipsApi()
var accept = application/json; // {String}
-var domainName = domainName_example; // {String} domain name
+var domainName = RAN; // {String} domain name
var entityTypeName = entityTypeName_example; // {String}
var entityId = entityId_example; // {String}
var opts = {
- 'targetFilter': /attributes(nCI,nRPCI), // {String} Use *targetFilter* to specify the entity type and attributes to be returned in the REST response. The value for *targetFilter* can also be a list of entity types and attributes.
- 'scopeFilter': /attributes[@nRTAC=310], // {String} Use *scopeFilter* to specify the attributes to match on. The value for *scopeFilter* can also be a list of entity types and attributes. scopeFilter returns a boolean.
+ 'targetFilter': /sourceIds;/classifiers, // {String} Use *targetFilter* to specify what needs to be returned in the REST response.
+ 'scopeFilter': /sourceIds[contains(@item,'ManagedElement=1')], // {String} ScopeFilter is used to specify the conditions to be applied.
'offset': 56, // {Integer} Pagination offset.
'limit': 56 // {Integer} Result limiter.
};
@@ -4146,11 +4443,11 @@ namespace Example
// Create an instance of the API class
var apiInstance = new EntitiesAndRelationshipsApi();
var accept = application/json; // String | (default to application/json)
- var domainName = domainName_example; // String | domain name (default to null)
+ var domainName = RAN; // String | domain name (default to null)
var entityTypeName = entityTypeName_example; // String | (default to null)
var entityId = entityId_example; // String | (default to null)
- var targetFilter = /attributes(nCI,nRPCI); // String | Use *targetFilter* to specify the entity type and attributes to be returned in the REST response. The value for *targetFilter* can also be a list of entity types and attributes. (optional) (default to null)
- var scopeFilter = /attributes[@nRTAC=310]; // String | Use *scopeFilter* to specify the attributes to match on. The value for *scopeFilter* can also be a list of entity types and attributes. scopeFilter returns a boolean. (optional) (default to null)
+ var targetFilter = /sourceIds;/classifiers; // String | Use *targetFilter* to specify what needs to be returned in the REST response. (optional) (default to null)
+ var scopeFilter = /sourceIds[contains(@item,'ManagedElement=1')]; // String | ScopeFilter is used to specify the conditions to be applied. (optional) (default to null)
var offset = 56; // Integer | Pagination offset. (optional) (default to 0)
var limit = 56; // Integer | Result limiter. (optional) (default to 500)
@@ -4174,11 +4471,11 @@ require_once(__DIR__ . '/vendor/autoload.php');
// Create an instance of the API class
$api_instance = new OpenAPITools\Client\Api\EntitiesAndRelationshipsApi();
$accept = application/json; // String |
-$domainName = domainName_example; // String | domain name
+$domainName = RAN; // String | domain name
$entityTypeName = entityTypeName_example; // String |
$entityId = entityId_example; // String |
-$targetFilter = /attributes(nCI,nRPCI); // String | Use *targetFilter* to specify the entity type and attributes to be returned in the REST response. The value for *targetFilter* can also be a list of entity types and attributes.
-$scopeFilter = /attributes[@nRTAC=310]; // String | Use *scopeFilter* to specify the attributes to match on. The value for *scopeFilter* can also be a list of entity types and attributes. scopeFilter returns a boolean.
+$targetFilter = /sourceIds;/classifiers; // String | Use *targetFilter* to specify what needs to be returned in the REST response.
+$scopeFilter = /sourceIds[contains(@item,'ManagedElement=1')]; // String | ScopeFilter is used to specify the conditions to be applied.
$offset = 56; // Integer | Pagination offset.
$limit = 56; // Integer | Result limiter.
@@ -4199,11 +4496,11 @@ use WWW::OPenAPIClient::EntitiesAndRelationshipsApi;
# Create an instance of the API class
my $api_instance = WWW::OPenAPIClient::EntitiesAndRelationshipsApi->new();
my $accept = application/json; # String |
-my $domainName = domainName_example; # String | domain name
+my $domainName = RAN; # String | domain name
my $entityTypeName = entityTypeName_example; # String |
my $entityId = entityId_example; # String |
-my $targetFilter = /attributes(nCI,nRPCI); # String | Use *targetFilter* to specify the entity type and attributes to be returned in the REST response. The value for *targetFilter* can also be a list of entity types and attributes.
-my $scopeFilter = /attributes[@nRTAC=310]; # String | Use *scopeFilter* to specify the attributes to match on. The value for *scopeFilter* can also be a list of entity types and attributes. scopeFilter returns a boolean.
+my $targetFilter = /sourceIds;/classifiers; # String | Use *targetFilter* to specify what needs to be returned in the REST response.
+my $scopeFilter = /sourceIds[contains(@item,'ManagedElement=1')]; # String | ScopeFilter is used to specify the conditions to be applied.
my $offset = 56; # Integer | Pagination offset.
my $limit = 56; # Integer | Result limiter.
@@ -4226,11 +4523,11 @@ from pprint import pprint
# Create an instance of the API class
api_instance = openapi_client.EntitiesAndRelationshipsApi()
accept = application/json # String | (default to application/json)
-domainName = domainName_example # String | domain name (default to null)
+domainName = RAN # String | domain name (default to null)
entityTypeName = entityTypeName_example # String | (default to null)
entityId = entityId_example # String | (default to null)
-targetFilter = /attributes(nCI,nRPCI) # String | Use *targetFilter* to specify the entity type and attributes to be returned in the REST response. The value for *targetFilter* can also be a list of entity types and attributes. (optional) (default to null)
-scopeFilter = /attributes[@nRTAC=310] # String | Use *scopeFilter* to specify the attributes to match on. The value for *scopeFilter* can also be a list of entity types and attributes. scopeFilter returns a boolean. (optional) (default to null)
+targetFilter = /sourceIds;/classifiers # String | Use *targetFilter* to specify what needs to be returned in the REST response. (optional) (default to null)
+scopeFilter = /sourceIds[contains(@item,'ManagedElement=1')] # String | ScopeFilter is used to specify the conditions to be applied. (optional) (default to null)
offset = 56 # Integer | Pagination offset. (optional) (default to 0)
limit = 56 # Integer | Result limiter. (optional) (default to 500)
@@ -4247,11 +4544,11 @@ except ApiException as e:
pub fn main() {
let accept = application/json; // String
- let domainName = domainName_example; // String
+ let domainName = RAN; // String
let entityTypeName = entityTypeName_example; // String
let entityId = entityId_example; // String
- let targetFilter = /attributes(nCI,nRPCI); // String
- let scopeFilter = /attributes[@nRTAC=310]; // String
+ let targetFilter = /sourceIds;/classifiers; // String
+ let scopeFilter = /sourceIds[contains(@item,'ManagedElement=1')]; // String
let offset = 56; // Integer
let limit = 56; // Integer
@@ -4390,7 +4687,7 @@ domain name
-Use *targetFilter* to specify the entity type and attributes to be returned in the REST response. The value for *targetFilter* can also be a list of entity types and attributes.
+Use *targetFilter* to specify what needs to be returned in the REST response.
@@ -4410,7 +4707,7 @@ Use *targetFilter* to specify the entity type and attributes to be returned in t
-Use *scopeFilter* to specify the attributes to match on. The value for *scopeFilter* can also be a list of entity types and attributes. scopeFilter returns a boolean.
+ScopeFilter is used to specify the conditions to be applied.
@@ -4959,7 +5256,7 @@ Result limiter.
- Get topology entities by domain, using specified targetFilter as mandatory query parameter.
+ Get topology entities by domain, using a specified *targetFilter* as a query parameter.
/domains/{domainName}/entities
@@ -4986,7 +5283,7 @@ Result limiter.
curl -X GET \
-H "Accept: application/json,application/problem+json" \
- "https://localhost/topology-inventory/v1alpha11/domains/{domainName}/entities?targetFilter=/attributes(nCI,nRPCI)&scopeFilter=/attributes[@nRTAC=310]&offset=56&limit=56"
+ "https://localhost/topology-inventory/v1alpha11/domains/{domainName}/entities?targetFilter=/sourceIds;/classifiers&scopeFilter=/sourceIds[contains(@item,'ManagedElement=1')]&offset=56&limit=56"
@@ -5004,9 +5301,9 @@ public class EntitiesAndRelationshipsApiExample {
// Create an instance of the API class
EntitiesAndRelationshipsApi apiInstance = new EntitiesAndRelationshipsApi();
String accept = application/json; // String |
- String domainName = domainName_example; // String | domain name
- String targetFilter = /attributes(nCI,nRPCI); // String | Use *targetFilter* to specify the entity type and attributes to be returned in the REST response. The value for *targetFilter* can also be a list of entity types and attributes.
- String scopeFilter = /attributes[@nRTAC=310]; // String | Use *scopeFilter* to specify the attributes to match on. The value for *scopeFilter* can also be a list of entity types and attributes. scopeFilter returns a boolean.
+ String domainName = RAN; // String | domain name
+ String targetFilter = /sourceIds;/classifiers; // String | Use *targetFilter* to specify what needs to be returned in the REST response.
+ String scopeFilter = /sourceIds[contains(@item,'ManagedElement=1')]; // String | ScopeFilter is used to specify the conditions to be applied.
Integer offset = 56; // Integer | Pagination offset.
Integer limit = 56; // Integer | Result limiter.
@@ -5029,8 +5326,8 @@ final api_instance = DefaultApi();
final String accept = new String(); // String |
final String domainName = new String(); // String | domain name
-final String targetFilter = new String(); // String | Use *targetFilter* to specify the entity type and attributes to be returned in the REST response. The value for *targetFilter* can also be a list of entity types and attributes.
-final String scopeFilter = new String(); // String | Use *scopeFilter* to specify the attributes to match on. The value for *scopeFilter* can also be a list of entity types and attributes. scopeFilter returns a boolean.
+final String targetFilter = new String(); // String | Use *targetFilter* to specify what needs to be returned in the REST response.
+final String scopeFilter = new String(); // String | ScopeFilter is used to specify the conditions to be applied.
final Integer offset = new Integer(); // Integer | Pagination offset.
final Integer limit = new Integer(); // Integer | Result limiter.
@@ -5051,9 +5348,9 @@ public class EntitiesAndRelationshipsApiExample {
public static void main(String[] args) {
EntitiesAndRelationshipsApi apiInstance = new EntitiesAndRelationshipsApi();
String accept = application/json; // String |
- String domainName = domainName_example; // String | domain name
- String targetFilter = /attributes(nCI,nRPCI); // String | Use *targetFilter* to specify the entity type and attributes to be returned in the REST response. The value for *targetFilter* can also be a list of entity types and attributes.
- String scopeFilter = /attributes[@nRTAC=310]; // String | Use *scopeFilter* to specify the attributes to match on. The value for *scopeFilter* can also be a list of entity types and attributes. scopeFilter returns a boolean.
+ String domainName = RAN; // String | domain name
+ String targetFilter = /sourceIds;/classifiers; // String | Use *targetFilter* to specify what needs to be returned in the REST response.
+ String scopeFilter = /sourceIds[contains(@item,'ManagedElement=1')]; // String | ScopeFilter is used to specify the conditions to be applied.
Integer offset = 56; // Integer | Pagination offset.
Integer limit = 56; // Integer | Result limiter.
@@ -5077,9 +5374,9 @@ public class EntitiesAndRelationshipsApiExample {
// Create an instance of the API class
EntitiesAndRelationshipsApi *apiInstance = [[EntitiesAndRelationshipsApi alloc] init];
String *accept = application/json; // (default to application/json)
-String *domainName = domainName_example; // domain name (default to null)
-String *targetFilter = /attributes(nCI,nRPCI); // Use *targetFilter* to specify the entity type and attributes to be returned in the REST response. The value for *targetFilter* can also be a list of entity types and attributes. (optional) (default to null)
-String *scopeFilter = /attributes[@nRTAC=310]; // Use *scopeFilter* to specify the attributes to match on. The value for *scopeFilter* can also be a list of entity types and attributes. scopeFilter returns a boolean. (optional) (default to null)
+String *domainName = RAN; // domain name (default to null)
+String *targetFilter = /sourceIds;/classifiers; // Use *targetFilter* to specify what needs to be returned in the REST response. (optional) (default to null)
+String *scopeFilter = /sourceIds[contains(@item,'ManagedElement=1')]; // ScopeFilter is used to specify the conditions to be applied. (optional) (default to null)
Integer *offset = 56; // Pagination offset. (optional) (default to 0)
Integer *limit = 56; // Result limiter. (optional) (default to 500)
@@ -5107,10 +5404,10 @@ Integer *limit = 56; // Result limiter. (optional) (default to 500)
// Create an instance of the API class
var api = new TopologyExposureAndInventoryApi.EntitiesAndRelationshipsApi()
var accept = application/json; // {String}
-var domainName = domainName_example; // {String} domain name
+var domainName = RAN; // {String} domain name
var opts = {
- 'targetFilter': /attributes(nCI,nRPCI), // {String} Use *targetFilter* to specify the entity type and attributes to be returned in the REST response. The value for *targetFilter* can also be a list of entity types and attributes.
- 'scopeFilter': /attributes[@nRTAC=310], // {String} Use *scopeFilter* to specify the attributes to match on. The value for *scopeFilter* can also be a list of entity types and attributes. scopeFilter returns a boolean.
+ 'targetFilter': /sourceIds;/classifiers, // {String} Use *targetFilter* to specify what needs to be returned in the REST response.
+ 'scopeFilter': /sourceIds[contains(@item,'ManagedElement=1')], // {String} ScopeFilter is used to specify the conditions to be applied.
'offset': 56, // {Integer} Pagination offset.
'limit': 56 // {Integer} Result limiter.
};
@@ -5146,9 +5443,9 @@ namespace Example
// Create an instance of the API class
var apiInstance = new EntitiesAndRelationshipsApi();
var accept = application/json; // String | (default to application/json)
- var domainName = domainName_example; // String | domain name (default to null)
- var targetFilter = /attributes(nCI,nRPCI); // String | Use *targetFilter* to specify the entity type and attributes to be returned in the REST response. The value for *targetFilter* can also be a list of entity types and attributes. (optional) (default to null)
- var scopeFilter = /attributes[@nRTAC=310]; // String | Use *scopeFilter* to specify the attributes to match on. The value for *scopeFilter* can also be a list of entity types and attributes. scopeFilter returns a boolean. (optional) (default to null)
+ var domainName = RAN; // String | domain name (default to null)
+ var targetFilter = /sourceIds;/classifiers; // String | Use *targetFilter* to specify what needs to be returned in the REST response. (optional) (default to null)
+ var scopeFilter = /sourceIds[contains(@item,'ManagedElement=1')]; // String | ScopeFilter is used to specify the conditions to be applied. (optional) (default to null)
var offset = 56; // Integer | Pagination offset. (optional) (default to 0)
var limit = 56; // Integer | Result limiter. (optional) (default to 500)
@@ -5172,9 +5469,9 @@ require_once(__DIR__ . '/vendor/autoload.php');
// Create an instance of the API class
$api_instance = new OpenAPITools\Client\Api\EntitiesAndRelationshipsApi();
$accept = application/json; // String |
-$domainName = domainName_example; // String | domain name
-$targetFilter = /attributes(nCI,nRPCI); // String | Use *targetFilter* to specify the entity type and attributes to be returned in the REST response. The value for *targetFilter* can also be a list of entity types and attributes.
-$scopeFilter = /attributes[@nRTAC=310]; // String | Use *scopeFilter* to specify the attributes to match on. The value for *scopeFilter* can also be a list of entity types and attributes. scopeFilter returns a boolean.
+$domainName = RAN; // String | domain name
+$targetFilter = /sourceIds;/classifiers; // String | Use *targetFilter* to specify what needs to be returned in the REST response.
+$scopeFilter = /sourceIds[contains(@item,'ManagedElement=1')]; // String | ScopeFilter is used to specify the conditions to be applied.
$offset = 56; // Integer | Pagination offset.
$limit = 56; // Integer | Result limiter.
@@ -5195,9 +5492,9 @@ use WWW::OPenAPIClient::EntitiesAndRelationshipsApi;
# Create an instance of the API class
my $api_instance = WWW::OPenAPIClient::EntitiesAndRelationshipsApi->new();
my $accept = application/json; # String |
-my $domainName = domainName_example; # String | domain name
-my $targetFilter = /attributes(nCI,nRPCI); # String | Use *targetFilter* to specify the entity type and attributes to be returned in the REST response. The value for *targetFilter* can also be a list of entity types and attributes.
-my $scopeFilter = /attributes[@nRTAC=310]; # String | Use *scopeFilter* to specify the attributes to match on. The value for *scopeFilter* can also be a list of entity types and attributes. scopeFilter returns a boolean.
+my $domainName = RAN; # String | domain name
+my $targetFilter = /sourceIds;/classifiers; # String | Use *targetFilter* to specify what needs to be returned in the REST response.
+my $scopeFilter = /sourceIds[contains(@item,'ManagedElement=1')]; # String | ScopeFilter is used to specify the conditions to be applied.
my $offset = 56; # Integer | Pagination offset.
my $limit = 56; # Integer | Result limiter.
@@ -5220,9 +5517,9 @@ from pprint import pprint
# Create an instance of the API class
api_instance = openapi_client.EntitiesAndRelationshipsApi()
accept = application/json # String | (default to application/json)
-domainName = domainName_example # String | domain name (default to null)
-targetFilter = /attributes(nCI,nRPCI) # String | Use *targetFilter* to specify the entity type and attributes to be returned in the REST response. The value for *targetFilter* can also be a list of entity types and attributes. (optional) (default to null)
-scopeFilter = /attributes[@nRTAC=310] # String | Use *scopeFilter* to specify the attributes to match on. The value for *scopeFilter* can also be a list of entity types and attributes. scopeFilter returns a boolean. (optional) (default to null)
+domainName = RAN # String | domain name (default to null)
+targetFilter = /sourceIds;/classifiers # String | Use *targetFilter* to specify what needs to be returned in the REST response. (optional) (default to null)
+scopeFilter = /sourceIds[contains(@item,'ManagedElement=1')] # String | ScopeFilter is used to specify the conditions to be applied. (optional) (default to null)
offset = 56 # Integer | Pagination offset. (optional) (default to 0)
limit = 56 # Integer | Result limiter. (optional) (default to 500)
@@ -5239,9 +5536,9 @@ except ApiException as e:
pub fn main() {
let accept = application/json; // String
- let domainName = domainName_example; // String
- let targetFilter = /attributes(nCI,nRPCI); // String
- let scopeFilter = /attributes[@nRTAC=310]; // String
+ let domainName = RAN; // String
+ let targetFilter = /sourceIds;/classifiers; // String
+ let scopeFilter = /sourceIds[contains(@item,'ManagedElement=1')]; // String
let offset = 56; // Integer
let limit = 56; // Integer
@@ -5340,7 +5637,7 @@ domain name
-Use *targetFilter* to specify the entity type and attributes to be returned in the REST response. The value for *targetFilter* can also be a list of entity types and attributes.
+Use *targetFilter* to specify what needs to be returned in the REST response.
@@ -5360,7 +5657,7 @@ Use *targetFilter* to specify the entity type and attributes to be returned in t
-Use *scopeFilter* to specify the attributes to match on. The value for *scopeFilter* can also be a list of entity types and attributes. scopeFilter returns a boolean.
+ScopeFilter is used to specify the conditions to be applied.
@@ -5873,7 +6170,7 @@ public class EntitiesAndRelationshipsApiExample {
// Create an instance of the API class
EntitiesAndRelationshipsApi apiInstance = new EntitiesAndRelationshipsApi();
String accept = application/yang.data+json; // String |
- String domainName = domainName_example; // String | domain name
+ String domainName = RAN; // String | domain name
String relationshipTypeName = NRCELLDU_USES_NRSECTORCARRIER; // String |
String relationshipId = relationshipId_example; // String |
@@ -5916,7 +6213,7 @@ public class EntitiesAndRelationshipsApiExample {
public static void main(String[] args) {
EntitiesAndRelationshipsApi apiInstance = new EntitiesAndRelationshipsApi();
String accept = application/yang.data+json; // String |
- String domainName = domainName_example; // String | domain name
+ String domainName = RAN; // String | domain name
String relationshipTypeName = NRCELLDU_USES_NRSECTORCARRIER; // String |
String relationshipId = relationshipId_example; // String |
@@ -5940,7 +6237,7 @@ public class EntitiesAndRelationshipsApiExample {
// Create an instance of the API class
EntitiesAndRelationshipsApi *apiInstance = [[EntitiesAndRelationshipsApi alloc] init];
String *accept = application/yang.data+json; // (default to application/yang.data+json)
-String *domainName = domainName_example; // domain name (default to null)
+String *domainName = RAN; // domain name (default to null)
String *relationshipTypeName = NRCELLDU_USES_NRSECTORCARRIER; // (default to null)
String *relationshipId = relationshipId_example; // (default to null)
@@ -5966,7 +6263,7 @@ String *relationshipId = relationshipId_example; // (default to null)
// Create an instance of the API class
var api = new TopologyExposureAndInventoryApi.EntitiesAndRelationshipsApi()
var accept = application/yang.data+json; // {String}
-var domainName = domainName_example; // {String} domain name
+var domainName = RAN; // {String} domain name
var relationshipTypeName = NRCELLDU_USES_NRSECTORCARRIER; // {String}
var relationshipId = relationshipId_example; // {String}
@@ -6001,7 +6298,7 @@ namespace Example
// Create an instance of the API class
var apiInstance = new EntitiesAndRelationshipsApi();
var accept = application/yang.data+json; // String | (default to application/yang.data+json)
- var domainName = domainName_example; // String | domain name (default to null)
+ var domainName = RAN; // String | domain name (default to null)
var relationshipTypeName = NRCELLDU_USES_NRSECTORCARRIER; // String | (default to null)
var relationshipId = relationshipId_example; // String | (default to null)
@@ -6025,7 +6322,7 @@ require_once(__DIR__ . '/vendor/autoload.php');
// Create an instance of the API class
$api_instance = new OpenAPITools\Client\Api\EntitiesAndRelationshipsApi();
$accept = application/yang.data+json; // String |
-$domainName = domainName_example; // String | domain name
+$domainName = RAN; // String | domain name
$relationshipTypeName = NRCELLDU_USES_NRSECTORCARRIER; // String |
$relationshipId = relationshipId_example; // String |
@@ -6046,7 +6343,7 @@ use WWW::OPenAPIClient::EntitiesAndRelationshipsApi;
# Create an instance of the API class
my $api_instance = WWW::OPenAPIClient::EntitiesAndRelationshipsApi->new();
my $accept = application/yang.data+json; # String |
-my $domainName = domainName_example; # String | domain name
+my $domainName = RAN; # String | domain name
my $relationshipTypeName = NRCELLDU_USES_NRSECTORCARRIER; # String |
my $relationshipId = relationshipId_example; # String |
@@ -6069,7 +6366,7 @@ from pprint import pprint
# Create an instance of the API class
api_instance = openapi_client.EntitiesAndRelationshipsApi()
accept = application/yang.data+json # String | (default to application/yang.data+json)
-domainName = domainName_example # String | domain name (default to null)
+domainName = RAN # String | domain name (default to null)
relationshipTypeName = NRCELLDU_USES_NRSECTORCARRIER # String | (default to null)
relationshipId = relationshipId_example # String | (default to null)
@@ -6086,7 +6383,7 @@ except ApiException as e:
pub fn main() {
let accept = application/yang.data+json; // String
- let domainName = domainName_example; // String
+ let domainName = RAN; // String
let relationshipTypeName = NRCELLDU_USES_NRSECTORCARRIER; // String
let relationshipId = relationshipId_example; // String
@@ -6735,7 +7032,7 @@ domain name
curl -X GET \
-H "Accept: application/json,application/problem+json" \
- "https://localhost/topology-inventory/v1alpha11/domains/{domainName}/relationship-types/{relationshipTypeName}/relationships?targetFilter=/attributes(nCI,nRPCI)&scopeFilter=/attributes[@nRTAC=310]&offset=56&limit=56"
+ "https://localhost/topology-inventory/v1alpha11/domains/{domainName}/relationship-types/{relationshipTypeName}/relationships?targetFilter=/sourceIds;/classifiers&scopeFilter=/sourceIds[contains(@item,'ManagedElement=1')]&offset=56&limit=56"
@@ -6753,10 +7050,10 @@ public class EntitiesAndRelationshipsApiExample {
// Create an instance of the API class
EntitiesAndRelationshipsApi apiInstance = new EntitiesAndRelationshipsApi();
String accept = application/json; // String |
- String domainName = domainName_example; // String | domain name
+ String domainName = RAN; // String | domain name
String relationshipTypeName = NRCELLDU_USES_NRSECTORCARRIER; // String |
- String targetFilter = /attributes(nCI,nRPCI); // String | Use *targetFilter* to specify the entity type and attributes to be returned in the REST response. The value for *targetFilter* can also be a list of entity types and attributes.
- String scopeFilter = /attributes[@nRTAC=310]; // String | Use *scopeFilter* to specify the attributes to match on. The value for *scopeFilter* can also be a list of entity types and attributes. scopeFilter returns a boolean.
+ String targetFilter = /sourceIds;/classifiers; // String | Use *targetFilter* to specify what needs to be returned in the REST response.
+ String scopeFilter = /sourceIds[contains(@item,'ManagedElement=1')]; // String | ScopeFilter is used to specify the conditions to be applied.
Integer offset = 56; // Integer | Pagination offset.
Integer limit = 56; // Integer | Result limiter.
@@ -6780,8 +7077,8 @@ final api_instance = DefaultApi();
final String accept = new String(); // String |
final String domainName = new String(); // String | domain name
final String relationshipTypeName = new String(); // String |
-final String targetFilter = new String(); // String | Use *targetFilter* to specify the entity type and attributes to be returned in the REST response. The value for *targetFilter* can also be a list of entity types and attributes.
-final String scopeFilter = new String(); // String | Use *scopeFilter* to specify the attributes to match on. The value for *scopeFilter* can also be a list of entity types and attributes. scopeFilter returns a boolean.
+final String targetFilter = new String(); // String | Use *targetFilter* to specify what needs to be returned in the REST response.
+final String scopeFilter = new String(); // String | ScopeFilter is used to specify the conditions to be applied.
final Integer offset = new Integer(); // Integer | Pagination offset.
final Integer limit = new Integer(); // Integer | Result limiter.
@@ -6802,10 +7099,10 @@ public class EntitiesAndRelationshipsApiExample {
public static void main(String[] args) {
EntitiesAndRelationshipsApi apiInstance = new EntitiesAndRelationshipsApi();
String accept = application/json; // String |
- String domainName = domainName_example; // String | domain name
+ String domainName = RAN; // String | domain name
String relationshipTypeName = NRCELLDU_USES_NRSECTORCARRIER; // String |
- String targetFilter = /attributes(nCI,nRPCI); // String | Use *targetFilter* to specify the entity type and attributes to be returned in the REST response. The value for *targetFilter* can also be a list of entity types and attributes.
- String scopeFilter = /attributes[@nRTAC=310]; // String | Use *scopeFilter* to specify the attributes to match on. The value for *scopeFilter* can also be a list of entity types and attributes. scopeFilter returns a boolean.
+ String targetFilter = /sourceIds;/classifiers; // String | Use *targetFilter* to specify what needs to be returned in the REST response.
+ String scopeFilter = /sourceIds[contains(@item,'ManagedElement=1')]; // String | ScopeFilter is used to specify the conditions to be applied.
Integer offset = 56; // Integer | Pagination offset.
Integer limit = 56; // Integer | Result limiter.
@@ -6829,10 +7126,10 @@ public class EntitiesAndRelationshipsApiExample {
// Create an instance of the API class
EntitiesAndRelationshipsApi *apiInstance = [[EntitiesAndRelationshipsApi alloc] init];
String *accept = application/json; // (default to application/json)
-String *domainName = domainName_example; // domain name (default to null)
+String *domainName = RAN; // domain name (default to null)
String *relationshipTypeName = NRCELLDU_USES_NRSECTORCARRIER; // (default to null)
-String *targetFilter = /attributes(nCI,nRPCI); // Use *targetFilter* to specify the entity type and attributes to be returned in the REST response. The value for *targetFilter* can also be a list of entity types and attributes. (optional) (default to null)
-String *scopeFilter = /attributes[@nRTAC=310]; // Use *scopeFilter* to specify the attributes to match on. The value for *scopeFilter* can also be a list of entity types and attributes. scopeFilter returns a boolean. (optional) (default to null)
+String *targetFilter = /sourceIds;/classifiers; // Use *targetFilter* to specify what needs to be returned in the REST response. (optional) (default to null)
+String *scopeFilter = /sourceIds[contains(@item,'ManagedElement=1')]; // ScopeFilter is used to specify the conditions to be applied. (optional) (default to null)
Integer *offset = 56; // Pagination offset. (optional) (default to 0)
Integer *limit = 56; // Result limiter. (optional) (default to 500)
@@ -6861,11 +7158,11 @@ Integer *limit = 56; // Result limiter. (optional) (default to 500)
// Create an instance of the API class
var api = new TopologyExposureAndInventoryApi.EntitiesAndRelationshipsApi()
var accept = application/json; // {String}
-var domainName = domainName_example; // {String} domain name
+var domainName = RAN; // {String} domain name
var relationshipTypeName = NRCELLDU_USES_NRSECTORCARRIER; // {String}
var opts = {
- 'targetFilter': /attributes(nCI,nRPCI), // {String} Use *targetFilter* to specify the entity type and attributes to be returned in the REST response. The value for *targetFilter* can also be a list of entity types and attributes.
- 'scopeFilter': /attributes[@nRTAC=310], // {String} Use *scopeFilter* to specify the attributes to match on. The value for *scopeFilter* can also be a list of entity types and attributes. scopeFilter returns a boolean.
+ 'targetFilter': /sourceIds;/classifiers, // {String} Use *targetFilter* to specify what needs to be returned in the REST response.
+ 'scopeFilter': /sourceIds[contains(@item,'ManagedElement=1')], // {String} ScopeFilter is used to specify the conditions to be applied.
'offset': 56, // {Integer} Pagination offset.
'limit': 56 // {Integer} Result limiter.
};
@@ -6901,10 +7198,10 @@ namespace Example
// Create an instance of the API class
var apiInstance = new EntitiesAndRelationshipsApi();
var accept = application/json; // String | (default to application/json)
- var domainName = domainName_example; // String | domain name (default to null)
+ var domainName = RAN; // String | domain name (default to null)
var relationshipTypeName = NRCELLDU_USES_NRSECTORCARRIER; // String | (default to null)
- var targetFilter = /attributes(nCI,nRPCI); // String | Use *targetFilter* to specify the entity type and attributes to be returned in the REST response. The value for *targetFilter* can also be a list of entity types and attributes. (optional) (default to null)
- var scopeFilter = /attributes[@nRTAC=310]; // String | Use *scopeFilter* to specify the attributes to match on. The value for *scopeFilter* can also be a list of entity types and attributes. scopeFilter returns a boolean. (optional) (default to null)
+ var targetFilter = /sourceIds;/classifiers; // String | Use *targetFilter* to specify what needs to be returned in the REST response. (optional) (default to null)
+ var scopeFilter = /sourceIds[contains(@item,'ManagedElement=1')]; // String | ScopeFilter is used to specify the conditions to be applied. (optional) (default to null)
var offset = 56; // Integer | Pagination offset. (optional) (default to 0)
var limit = 56; // Integer | Result limiter. (optional) (default to 500)
@@ -6928,10 +7225,10 @@ require_once(__DIR__ . '/vendor/autoload.php');
// Create an instance of the API class
$api_instance = new OpenAPITools\Client\Api\EntitiesAndRelationshipsApi();
$accept = application/json; // String |
-$domainName = domainName_example; // String | domain name
+$domainName = RAN; // String | domain name
$relationshipTypeName = NRCELLDU_USES_NRSECTORCARRIER; // String |
-$targetFilter = /attributes(nCI,nRPCI); // String | Use *targetFilter* to specify the entity type and attributes to be returned in the REST response. The value for *targetFilter* can also be a list of entity types and attributes.
-$scopeFilter = /attributes[@nRTAC=310]; // String | Use *scopeFilter* to specify the attributes to match on. The value for *scopeFilter* can also be a list of entity types and attributes. scopeFilter returns a boolean.
+$targetFilter = /sourceIds;/classifiers; // String | Use *targetFilter* to specify what needs to be returned in the REST response.
+$scopeFilter = /sourceIds[contains(@item,'ManagedElement=1')]; // String | ScopeFilter is used to specify the conditions to be applied.
$offset = 56; // Integer | Pagination offset.
$limit = 56; // Integer | Result limiter.
@@ -6952,10 +7249,10 @@ use WWW::OPenAPIClient::EntitiesAndRelationshipsApi;
# Create an instance of the API class
my $api_instance = WWW::OPenAPIClient::EntitiesAndRelationshipsApi->new();
my $accept = application/json; # String |
-my $domainName = domainName_example; # String | domain name
+my $domainName = RAN; # String | domain name
my $relationshipTypeName = NRCELLDU_USES_NRSECTORCARRIER; # String |
-my $targetFilter = /attributes(nCI,nRPCI); # String | Use *targetFilter* to specify the entity type and attributes to be returned in the REST response. The value for *targetFilter* can also be a list of entity types and attributes.
-my $scopeFilter = /attributes[@nRTAC=310]; # String | Use *scopeFilter* to specify the attributes to match on. The value for *scopeFilter* can also be a list of entity types and attributes. scopeFilter returns a boolean.
+my $targetFilter = /sourceIds;/classifiers; # String | Use *targetFilter* to specify what needs to be returned in the REST response.
+my $scopeFilter = /sourceIds[contains(@item,'ManagedElement=1')]; # String | ScopeFilter is used to specify the conditions to be applied.
my $offset = 56; # Integer | Pagination offset.
my $limit = 56; # Integer | Result limiter.
@@ -6978,10 +7275,10 @@ from pprint import pprint
# Create an instance of the API class
api_instance = openapi_client.EntitiesAndRelationshipsApi()
accept = application/json # String | (default to application/json)
-domainName = domainName_example # String | domain name (default to null)
+domainName = RAN # String | domain name (default to null)
relationshipTypeName = NRCELLDU_USES_NRSECTORCARRIER # String | (default to null)
-targetFilter = /attributes(nCI,nRPCI) # String | Use *targetFilter* to specify the entity type and attributes to be returned in the REST response. The value for *targetFilter* can also be a list of entity types and attributes. (optional) (default to null)
-scopeFilter = /attributes[@nRTAC=310] # String | Use *scopeFilter* to specify the attributes to match on. The value for *scopeFilter* can also be a list of entity types and attributes. scopeFilter returns a boolean. (optional) (default to null)
+targetFilter = /sourceIds;/classifiers # String | Use *targetFilter* to specify what needs to be returned in the REST response. (optional) (default to null)
+scopeFilter = /sourceIds[contains(@item,'ManagedElement=1')] # String | ScopeFilter is used to specify the conditions to be applied. (optional) (default to null)
offset = 56 # Integer | Pagination offset. (optional) (default to 0)
limit = 56 # Integer | Result limiter. (optional) (default to 500)
@@ -6998,10 +7295,10 @@ except ApiException as e:
pub fn main() {
let accept = application/json; // String
- let domainName = domainName_example; // String
+ let domainName = RAN; // String
let relationshipTypeName = NRCELLDU_USES_NRSECTORCARRIER; // String
- let targetFilter = /attributes(nCI,nRPCI); // String
- let scopeFilter = /attributes[@nRTAC=310]; // String
+ let targetFilter = /sourceIds;/classifiers; // String
+ let scopeFilter = /sourceIds[contains(@item,'ManagedElement=1')]; // String
let offset = 56; // Integer
let limit = 56; // Integer
@@ -7120,7 +7417,7 @@ domain name
-Use *targetFilter* to specify the entity type and attributes to be returned in the REST response. The value for *targetFilter* can also be a list of entity types and attributes.
+Use *targetFilter* to specify what needs to be returned in the REST response.
@@ -7140,7 +7437,7 @@ Use *targetFilter* to specify the entity type and attributes to be returned in t
-Use *scopeFilter* to specify the attributes to match on. The value for *scopeFilter* can also be a list of entity types and attributes. scopeFilter returns a boolean.
+ScopeFilter is used to specify the conditions to be applied.
@@ -7635,7 +7932,7 @@ Result limiter.
curl -X GET \
-H "Accept: application/json,application/problem+json" \
- "https://localhost/topology-inventory/v1alpha11/domains/{domainName}/entity-types/{entityTypeName}/entities?targetFilter=/attributes(nCI,nRPCI)&scopeFilter=/attributes[@nRTAC=310]&offset=56&limit=56"
+ "https://localhost/topology-inventory/v1alpha11/domains/{domainName}/entity-types/{entityTypeName}/entities?targetFilter=/sourceIds;/classifiers&scopeFilter=/sourceIds[contains(@item,'ManagedElement=1')]&offset=56&limit=56"
@@ -7653,10 +7950,10 @@ public class EntitiesAndRelationshipsApiExample {
// Create an instance of the API class
EntitiesAndRelationshipsApi apiInstance = new EntitiesAndRelationshipsApi();
String accept = application/json; // String |
- String domainName = domainName_example; // String | domain name
+ String domainName = RAN; // String | domain name
String entityTypeName = entityTypeName_example; // String |
- String targetFilter = /attributes(nCI,nRPCI); // String | Use *targetFilter* to specify the entity type and attributes to be returned in the REST response. The value for *targetFilter* can also be a list of entity types and attributes.
- String scopeFilter = /attributes[@nRTAC=310]; // String | Use *scopeFilter* to specify the attributes to match on. The value for *scopeFilter* can also be a list of entity types and attributes. scopeFilter returns a boolean.
+ String targetFilter = /sourceIds;/classifiers; // String | Use *targetFilter* to specify what needs to be returned in the REST response.
+ String scopeFilter = /sourceIds[contains(@item,'ManagedElement=1')]; // String | ScopeFilter is used to specify the conditions to be applied.
Integer offset = 56; // Integer | Pagination offset.
Integer limit = 56; // Integer | Result limiter.
@@ -7680,8 +7977,8 @@ final api_instance = DefaultApi();
final String accept = new String(); // String |
final String domainName = new String(); // String | domain name
final String entityTypeName = new String(); // String |
-final String targetFilter = new String(); // String | Use *targetFilter* to specify the entity type and attributes to be returned in the REST response. The value for *targetFilter* can also be a list of entity types and attributes.
-final String scopeFilter = new String(); // String | Use *scopeFilter* to specify the attributes to match on. The value for *scopeFilter* can also be a list of entity types and attributes. scopeFilter returns a boolean.
+final String targetFilter = new String(); // String | Use *targetFilter* to specify what needs to be returned in the REST response.
+final String scopeFilter = new String(); // String | ScopeFilter is used to specify the conditions to be applied.
final Integer offset = new Integer(); // Integer | Pagination offset.
final Integer limit = new Integer(); // Integer | Result limiter.
@@ -7702,10 +7999,10 @@ public class EntitiesAndRelationshipsApiExample {
public static void main(String[] args) {
EntitiesAndRelationshipsApi apiInstance = new EntitiesAndRelationshipsApi();
String accept = application/json; // String |
- String domainName = domainName_example; // String | domain name
+ String domainName = RAN; // String | domain name
String entityTypeName = entityTypeName_example; // String |
- String targetFilter = /attributes(nCI,nRPCI); // String | Use *targetFilter* to specify the entity type and attributes to be returned in the REST response. The value for *targetFilter* can also be a list of entity types and attributes.
- String scopeFilter = /attributes[@nRTAC=310]; // String | Use *scopeFilter* to specify the attributes to match on. The value for *scopeFilter* can also be a list of entity types and attributes. scopeFilter returns a boolean.
+ String targetFilter = /sourceIds;/classifiers; // String | Use *targetFilter* to specify what needs to be returned in the REST response.
+ String scopeFilter = /sourceIds[contains(@item,'ManagedElement=1')]; // String | ScopeFilter is used to specify the conditions to be applied.
Integer offset = 56; // Integer | Pagination offset.
Integer limit = 56; // Integer | Result limiter.
@@ -7729,10 +8026,10 @@ public class EntitiesAndRelationshipsApiExample {
// Create an instance of the API class
EntitiesAndRelationshipsApi *apiInstance = [[EntitiesAndRelationshipsApi alloc] init];
String *accept = application/json; // (default to application/json)
-String *domainName = domainName_example; // domain name (default to null)
+String *domainName = RAN; // domain name (default to null)
String *entityTypeName = entityTypeName_example; // (default to null)
-String *targetFilter = /attributes(nCI,nRPCI); // Use *targetFilter* to specify the entity type and attributes to be returned in the REST response. The value for *targetFilter* can also be a list of entity types and attributes. (optional) (default to null)
-String *scopeFilter = /attributes[@nRTAC=310]; // Use *scopeFilter* to specify the attributes to match on. The value for *scopeFilter* can also be a list of entity types and attributes. scopeFilter returns a boolean. (optional) (default to null)
+String *targetFilter = /sourceIds;/classifiers; // Use *targetFilter* to specify what needs to be returned in the REST response. (optional) (default to null)
+String *scopeFilter = /sourceIds[contains(@item,'ManagedElement=1')]; // ScopeFilter is used to specify the conditions to be applied. (optional) (default to null)
Integer *offset = 56; // Pagination offset. (optional) (default to 0)
Integer *limit = 56; // Result limiter. (optional) (default to 500)
@@ -7761,11 +8058,11 @@ Integer *limit = 56; // Result limiter. (optional) (default to 500)
// Create an instance of the API class
var api = new TopologyExposureAndInventoryApi.EntitiesAndRelationshipsApi()
var accept = application/json; // {String}
-var domainName = domainName_example; // {String} domain name
+var domainName = RAN; // {String} domain name
var entityTypeName = entityTypeName_example; // {String}
var opts = {
- 'targetFilter': /attributes(nCI,nRPCI), // {String} Use *targetFilter* to specify the entity type and attributes to be returned in the REST response. The value for *targetFilter* can also be a list of entity types and attributes.
- 'scopeFilter': /attributes[@nRTAC=310], // {String} Use *scopeFilter* to specify the attributes to match on. The value for *scopeFilter* can also be a list of entity types and attributes. scopeFilter returns a boolean.
+ 'targetFilter': /sourceIds;/classifiers, // {String} Use *targetFilter* to specify what needs to be returned in the REST response.
+ 'scopeFilter': /sourceIds[contains(@item,'ManagedElement=1')], // {String} ScopeFilter is used to specify the conditions to be applied.
'offset': 56, // {Integer} Pagination offset.
'limit': 56 // {Integer} Result limiter.
};
@@ -7801,10 +8098,10 @@ namespace Example
// Create an instance of the API class
var apiInstance = new EntitiesAndRelationshipsApi();
var accept = application/json; // String | (default to application/json)
- var domainName = domainName_example; // String | domain name (default to null)
+ var domainName = RAN; // String | domain name (default to null)
var entityTypeName = entityTypeName_example; // String | (default to null)
- var targetFilter = /attributes(nCI,nRPCI); // String | Use *targetFilter* to specify the entity type and attributes to be returned in the REST response. The value for *targetFilter* can also be a list of entity types and attributes. (optional) (default to null)
- var scopeFilter = /attributes[@nRTAC=310]; // String | Use *scopeFilter* to specify the attributes to match on. The value for *scopeFilter* can also be a list of entity types and attributes. scopeFilter returns a boolean. (optional) (default to null)
+ var targetFilter = /sourceIds;/classifiers; // String | Use *targetFilter* to specify what needs to be returned in the REST response. (optional) (default to null)
+ var scopeFilter = /sourceIds[contains(@item,'ManagedElement=1')]; // String | ScopeFilter is used to specify the conditions to be applied. (optional) (default to null)
var offset = 56; // Integer | Pagination offset. (optional) (default to 0)
var limit = 56; // Integer | Result limiter. (optional) (default to 500)
@@ -7828,10 +8125,10 @@ require_once(__DIR__ . '/vendor/autoload.php');
// Create an instance of the API class
$api_instance = new OpenAPITools\Client\Api\EntitiesAndRelationshipsApi();
$accept = application/json; // String |
-$domainName = domainName_example; // String | domain name
+$domainName = RAN; // String | domain name
$entityTypeName = entityTypeName_example; // String |
-$targetFilter = /attributes(nCI,nRPCI); // String | Use *targetFilter* to specify the entity type and attributes to be returned in the REST response. The value for *targetFilter* can also be a list of entity types and attributes.
-$scopeFilter = /attributes[@nRTAC=310]; // String | Use *scopeFilter* to specify the attributes to match on. The value for *scopeFilter* can also be a list of entity types and attributes. scopeFilter returns a boolean.
+$targetFilter = /sourceIds;/classifiers; // String | Use *targetFilter* to specify what needs to be returned in the REST response.
+$scopeFilter = /sourceIds[contains(@item,'ManagedElement=1')]; // String | ScopeFilter is used to specify the conditions to be applied.
$offset = 56; // Integer | Pagination offset.
$limit = 56; // Integer | Result limiter.
@@ -7852,10 +8149,10 @@ use WWW::OPenAPIClient::EntitiesAndRelationshipsApi;
# Create an instance of the API class
my $api_instance = WWW::OPenAPIClient::EntitiesAndRelationshipsApi->new();
my $accept = application/json; # String |
-my $domainName = domainName_example; # String | domain name
+my $domainName = RAN; # String | domain name
my $entityTypeName = entityTypeName_example; # String |
-my $targetFilter = /attributes(nCI,nRPCI); # String | Use *targetFilter* to specify the entity type and attributes to be returned in the REST response. The value for *targetFilter* can also be a list of entity types and attributes.
-my $scopeFilter = /attributes[@nRTAC=310]; # String | Use *scopeFilter* to specify the attributes to match on. The value for *scopeFilter* can also be a list of entity types and attributes. scopeFilter returns a boolean.
+my $targetFilter = /sourceIds;/classifiers; # String | Use *targetFilter* to specify what needs to be returned in the REST response.
+my $scopeFilter = /sourceIds[contains(@item,'ManagedElement=1')]; # String | ScopeFilter is used to specify the conditions to be applied.
my $offset = 56; # Integer | Pagination offset.
my $limit = 56; # Integer | Result limiter.
@@ -7878,10 +8175,10 @@ from pprint import pprint
# Create an instance of the API class
api_instance = openapi_client.EntitiesAndRelationshipsApi()
accept = application/json # String | (default to application/json)
-domainName = domainName_example # String | domain name (default to null)
+domainName = RAN # String | domain name (default to null)
entityTypeName = entityTypeName_example # String | (default to null)
-targetFilter = /attributes(nCI,nRPCI) # String | Use *targetFilter* to specify the entity type and attributes to be returned in the REST response. The value for *targetFilter* can also be a list of entity types and attributes. (optional) (default to null)
-scopeFilter = /attributes[@nRTAC=310] # String | Use *scopeFilter* to specify the attributes to match on. The value for *scopeFilter* can also be a list of entity types and attributes. scopeFilter returns a boolean. (optional) (default to null)
+targetFilter = /sourceIds;/classifiers # String | Use *targetFilter* to specify what needs to be returned in the REST response. (optional) (default to null)
+scopeFilter = /sourceIds[contains(@item,'ManagedElement=1')] # String | ScopeFilter is used to specify the conditions to be applied. (optional) (default to null)
offset = 56 # Integer | Pagination offset. (optional) (default to 0)
limit = 56 # Integer | Result limiter. (optional) (default to 500)
@@ -7898,10 +8195,10 @@ except ApiException as e:
pub fn main() {
let accept = application/json; // String
- let domainName = domainName_example; // String
+ let domainName = RAN; // String
let entityTypeName = entityTypeName_example; // String
- let targetFilter = /attributes(nCI,nRPCI); // String
- let scopeFilter = /attributes[@nRTAC=310]; // String
+ let targetFilter = /sourceIds;/classifiers; // String
+ let scopeFilter = /sourceIds[contains(@item,'ManagedElement=1')]; // String
let offset = 56; // Integer
let limit = 56; // Integer
@@ -8020,7 +8317,7 @@ domain name
-Use *targetFilter* to specify the entity type and attributes to be returned in the REST response. The value for *targetFilter* can also be a list of entity types and attributes.
+Use *targetFilter* to specify what needs to be returned in the REST response.
@@ -8040,7 +8337,7 @@ Use *targetFilter* to specify the entity type and attributes to be returned in t
-Use *scopeFilter* to specify the attributes to match on. The value for *scopeFilter* can also be a list of entity types and attributes. scopeFilter returns a boolean.
+ScopeFilter is used to specify the conditions to be applied.
@@ -8553,7 +8850,7 @@ public class EntitiesAndRelationshipsApiExample {
// Create an instance of the API class
EntitiesAndRelationshipsApi apiInstance = new EntitiesAndRelationshipsApi();
String accept = application/yang.data+json; // String |
- String domainName = domainName_example; // String | domain name
+ String domainName = RAN; // String | domain name
String entityTypeName = entityTypeName_example; // String |
String entityId = entityId_example; // String |
@@ -8596,7 +8893,7 @@ public class EntitiesAndRelationshipsApiExample {
public static void main(String[] args) {
EntitiesAndRelationshipsApi apiInstance = new EntitiesAndRelationshipsApi();
String accept = application/yang.data+json; // String |
- String domainName = domainName_example; // String | domain name
+ String domainName = RAN; // String | domain name
String entityTypeName = entityTypeName_example; // String |
String entityId = entityId_example; // String |
@@ -8620,7 +8917,7 @@ public class EntitiesAndRelationshipsApiExample {
// Create an instance of the API class
EntitiesAndRelationshipsApi *apiInstance = [[EntitiesAndRelationshipsApi alloc] init];
String *accept = application/yang.data+json; // (default to application/yang.data+json)
-String *domainName = domainName_example; // domain name (default to null)
+String *domainName = RAN; // domain name (default to null)
String *entityTypeName = entityTypeName_example; // (default to null)
String *entityId = entityId_example; // (default to null)
@@ -8646,7 +8943,7 @@ String *entityId = entityId_example; // (default to null)
// Create an instance of the API class
var api = new TopologyExposureAndInventoryApi.EntitiesAndRelationshipsApi()
var accept = application/yang.data+json; // {String}
-var domainName = domainName_example; // {String} domain name
+var domainName = RAN; // {String} domain name
var entityTypeName = entityTypeName_example; // {String}
var entityId = entityId_example; // {String}
@@ -8681,7 +8978,7 @@ namespace Example
// Create an instance of the API class
var apiInstance = new EntitiesAndRelationshipsApi();
var accept = application/yang.data+json; // String | (default to application/yang.data+json)
- var domainName = domainName_example; // String | domain name (default to null)
+ var domainName = RAN; // String | domain name (default to null)
var entityTypeName = entityTypeName_example; // String | (default to null)
var entityId = entityId_example; // String | (default to null)
@@ -8705,7 +9002,7 @@ require_once(__DIR__ . '/vendor/autoload.php');
// Create an instance of the API class
$api_instance = new OpenAPITools\Client\Api\EntitiesAndRelationshipsApi();
$accept = application/yang.data+json; // String |
-$domainName = domainName_example; // String | domain name
+$domainName = RAN; // String | domain name
$entityTypeName = entityTypeName_example; // String |
$entityId = entityId_example; // String |
@@ -8726,7 +9023,7 @@ use WWW::OPenAPIClient::EntitiesAndRelationshipsApi;
# Create an instance of the API class
my $api_instance = WWW::OPenAPIClient::EntitiesAndRelationshipsApi->new();
my $accept = application/yang.data+json; # String |
-my $domainName = domainName_example; # String | domain name
+my $domainName = RAN; # String | domain name
my $entityTypeName = entityTypeName_example; # String |
my $entityId = entityId_example; # String |
@@ -8749,7 +9046,7 @@ from pprint import pprint
# Create an instance of the API class
api_instance = openapi_client.EntitiesAndRelationshipsApi()
accept = application/yang.data+json # String | (default to application/yang.data+json)
-domainName = domainName_example # String | domain name (default to null)
+domainName = RAN # String | domain name (default to null)
entityTypeName = entityTypeName_example # String | (default to null)
entityId = entityId_example # String | (default to null)
@@ -8766,7 +9063,7 @@ except ApiException as e:
pub fn main() {
let accept = application/yang.data+json; // String
- let domainName = domainName_example; // String
+ let domainName = RAN; // String
let entityTypeName = entityTypeName_example; // String
let entityId = entityId_example; // String
@@ -9433,7 +9730,7 @@ public class EntitiesAndRelationshipsApiExample {
// Create an instance of the API class
EntitiesAndRelationshipsApi apiInstance = new EntitiesAndRelationshipsApi();
String accept = application/json; // String |
- String domainName = domainName_example; // String | domain name
+ String domainName = RAN; // String | domain name
Integer offset = 56; // Integer | Pagination offset.
Integer limit = 56; // Integer | Result limiter.
@@ -9476,7 +9773,7 @@ public class EntitiesAndRelationshipsApiExample {
public static void main(String[] args) {
EntitiesAndRelationshipsApi apiInstance = new EntitiesAndRelationshipsApi();
String accept = application/json; // String |
- String domainName = domainName_example; // String | domain name
+ String domainName = RAN; // String | domain name
Integer offset = 56; // Integer | Pagination offset.
Integer limit = 56; // Integer | Result limiter.
@@ -9500,7 +9797,7 @@ public class EntitiesAndRelationshipsApiExample {
// Create an instance of the API class
EntitiesAndRelationshipsApi *apiInstance = [[EntitiesAndRelationshipsApi alloc] init];
String *accept = application/json; // (default to application/json)
-String *domainName = domainName_example; // domain name (default to null)
+String *domainName = RAN; // domain name (default to null)
Integer *offset = 56; // Pagination offset. (optional) (default to 0)
Integer *limit = 56; // Result limiter. (optional) (default to 500)
@@ -9526,7 +9823,7 @@ Integer *limit = 56; // Result limiter. (optional) (default to 500)
// Create an instance of the API class
var api = new TopologyExposureAndInventoryApi.EntitiesAndRelationshipsApi()
var accept = application/json; // {String}
-var domainName = domainName_example; // {String} domain name
+var domainName = RAN; // {String} domain name
var opts = {
'offset': 56, // {Integer} Pagination offset.
'limit': 56 // {Integer} Result limiter.
@@ -9563,7 +9860,7 @@ namespace Example
// Create an instance of the API class
var apiInstance = new EntitiesAndRelationshipsApi();
var accept = application/json; // String | (default to application/json)
- var domainName = domainName_example; // String | domain name (default to null)
+ var domainName = RAN; // String | domain name (default to null)
var offset = 56; // Integer | Pagination offset. (optional) (default to 0)
var limit = 56; // Integer | Result limiter. (optional) (default to 500)
@@ -9587,7 +9884,7 @@ require_once(__DIR__ . '/vendor/autoload.php');
// Create an instance of the API class
$api_instance = new OpenAPITools\Client\Api\EntitiesAndRelationshipsApi();
$accept = application/json; // String |
-$domainName = domainName_example; // String | domain name
+$domainName = RAN; // String | domain name
$offset = 56; // Integer | Pagination offset.
$limit = 56; // Integer | Result limiter.
@@ -9608,7 +9905,7 @@ use WWW::OPenAPIClient::EntitiesAndRelationshipsApi;
# Create an instance of the API class
my $api_instance = WWW::OPenAPIClient::EntitiesAndRelationshipsApi->new();
my $accept = application/json; # String |
-my $domainName = domainName_example; # String | domain name
+my $domainName = RAN; # String | domain name
my $offset = 56; # Integer | Pagination offset.
my $limit = 56; # Integer | Result limiter.
@@ -9631,7 +9928,7 @@ from pprint import pprint
# Create an instance of the API class
api_instance = openapi_client.EntitiesAndRelationshipsApi()
accept = application/json # String | (default to application/json)
-domainName = domainName_example # String | domain name (default to null)
+domainName = RAN # String | domain name (default to null)
offset = 56 # Integer | Pagination offset. (optional) (default to 0)
limit = 56 # Integer | Result limiter. (optional) (default to 500)
@@ -9648,7 +9945,7 @@ except ApiException as e:
pub fn main() {
let accept = application/json; // String
- let domainName = domainName_example; // String
+ let domainName = RAN; // String
let offset = 56; // Integer
let limit = 56; // Integer
@@ -10195,7 +10492,7 @@ Result limiter.
- Get all the available topology relationship types.
+ Get all the available topology relationship types in a specified domain.
/domains/{domainName}/relationship-types
@@ -10240,7 +10537,7 @@ public class EntitiesAndRelationshipsApiExample {
// Create an instance of the API class
EntitiesAndRelationshipsApi apiInstance = new EntitiesAndRelationshipsApi();
String accept = application/json; // String |
- String domainName = domainName_example; // String | domain name
+ String domainName = RAN; // String | domain name
Integer offset = 56; // Integer | Pagination offset.
Integer limit = 56; // Integer | Result limiter.
@@ -10283,7 +10580,7 @@ public class EntitiesAndRelationshipsApiExample {
public static void main(String[] args) {
EntitiesAndRelationshipsApi apiInstance = new EntitiesAndRelationshipsApi();
String accept = application/json; // String |
- String domainName = domainName_example; // String | domain name
+ String domainName = RAN; // String | domain name
Integer offset = 56; // Integer | Pagination offset.
Integer limit = 56; // Integer | Result limiter.
@@ -10307,7 +10604,7 @@ public class EntitiesAndRelationshipsApiExample {
// Create an instance of the API class
EntitiesAndRelationshipsApi *apiInstance = [[EntitiesAndRelationshipsApi alloc] init];
String *accept = application/json; // (default to application/json)
-String *domainName = domainName_example; // domain name (default to null)
+String *domainName = RAN; // domain name (default to null)
Integer *offset = 56; // Pagination offset. (optional) (default to 0)
Integer *limit = 56; // Result limiter. (optional) (default to 500)
@@ -10333,7 +10630,7 @@ Integer *limit = 56; // Result limiter. (optional) (default to 500)
// Create an instance of the API class
var api = new TopologyExposureAndInventoryApi.EntitiesAndRelationshipsApi()
var accept = application/json; // {String}
-var domainName = domainName_example; // {String} domain name
+var domainName = RAN; // {String} domain name
var opts = {
'offset': 56, // {Integer} Pagination offset.
'limit': 56 // {Integer} Result limiter.
@@ -10370,7 +10667,7 @@ namespace Example
// Create an instance of the API class
var apiInstance = new EntitiesAndRelationshipsApi();
var accept = application/json; // String | (default to application/json)
- var domainName = domainName_example; // String | domain name (default to null)
+ var domainName = RAN; // String | domain name (default to null)
var offset = 56; // Integer | Pagination offset. (optional) (default to 0)
var limit = 56; // Integer | Result limiter. (optional) (default to 500)
@@ -10394,7 +10691,7 @@ require_once(__DIR__ . '/vendor/autoload.php');
// Create an instance of the API class
$api_instance = new OpenAPITools\Client\Api\EntitiesAndRelationshipsApi();
$accept = application/json; // String |
-$domainName = domainName_example; // String | domain name
+$domainName = RAN; // String | domain name
$offset = 56; // Integer | Pagination offset.
$limit = 56; // Integer | Result limiter.
@@ -10415,7 +10712,7 @@ use WWW::OPenAPIClient::EntitiesAndRelationshipsApi;
# Create an instance of the API class
my $api_instance = WWW::OPenAPIClient::EntitiesAndRelationshipsApi->new();
my $accept = application/json; # String |
-my $domainName = domainName_example; # String | domain name
+my $domainName = RAN; # String | domain name
my $offset = 56; # Integer | Pagination offset.
my $limit = 56; # Integer | Result limiter.
@@ -10438,7 +10735,7 @@ from pprint import pprint
# Create an instance of the API class
api_instance = openapi_client.EntitiesAndRelationshipsApi()
accept = application/json # String | (default to application/json)
-domainName = domainName_example # String | domain name (default to null)
+domainName = RAN # String | domain name (default to null)
offset = 56 # Integer | Pagination offset. (optional) (default to 0)
limit = 56 # Integer | Result limiter. (optional) (default to 500)
@@ -10455,7 +10752,7 @@ except ApiException as e:
pub fn main() {
let accept = application/json; // String
- let domainName = domainName_example; // String
+ let domainName = RAN; // String
let offset = 56; // Integer
let limit = 56; // Integer
@@ -10994,70 +11291,76 @@ Result limiter.
-
- Schemas
-
-
+
+ Groups
+
+
-
createSchema
-
Create a new schema.
+
createGroup
+
Create a new group.
- Create a new schema. The request body shall contain the schema in YANG format.
+ Create a group of entities and/or relationships in a static or dynamic way.
- /schemas
+ /groups
Usage and SDK Samples
-
+
curl -X POST \
- -H "Accept: application/problem+json" \
- -H "Content-Type: multipart/form-data" \
- "https://localhost/topology-inventory/v1alpha11/schemas"
+ -H "Accept: application/json,application/problem+json" \
+ -H "Content-Type: application/json" \
+ "https://localhost/topology-inventory/v1alpha11/groups" \
+ -d '{
+ "name" : "name",
+ "providedMembers" : [ "{}", "{}" ],
+ "type" : "type"
+}'
-
+
import org.openapitools.client.*;
import org.openapitools.client.auth.*;
import org.openapitools.client.model.*;
-import org.openapitools.client.api.SchemasApi;
+import org.openapitools.client.api.GroupsApi;
import java.io.File;
import java.util.*;
-public class SchemasApiExample {
+public class GroupsApiExample {
public static void main(String[] args) {
// Create an instance of the API class
- SchemasApi apiInstance = new SchemasApi();
+ GroupsApi apiInstance = new GroupsApi();
String accept = application/json; // String |
- String contentType = multipart/form-data; // String |
- File file = BINARY_DATA_HERE; // File | multipartFile
+ String contentType = application/json; // String |
+ CreateGroupPayload createGroupPayload = ; // CreateGroupPayload |
try {
- apiInstance.createSchema(accept, contentType, file);
+ GroupByIdResponse result = apiInstance.createGroup(accept, contentType, createGroupPayload);
+ System.out.println(result);
} catch (ApiException e) {
- System.err.println("Exception when calling SchemasApi#createSchema");
+ System.err.println("Exception when calling GroupsApi#createGroup");
e.printStackTrace();
}
}
@@ -11065,62 +11368,66 @@ public class SchemasApiExample {
-
+
import 'package:openapi/api.dart';
final api_instance = DefaultApi();
final String accept = new String(); // String |
final String contentType = new String(); // String |
-final File file = new File(); // File | multipartFile
+final CreateGroupPayload createGroupPayload = new CreateGroupPayload(); // CreateGroupPayload |
try {
- final result = await api_instance.createSchema(accept, contentType, file);
+ final result = await api_instance.createGroup(accept, contentType, createGroupPayload);
print(result);
} catch (e) {
- print('Exception when calling DefaultApi->createSchema: $e\n');
+ print('Exception when calling DefaultApi->createGroup: $e\n');
}
-
-
import org.openapitools.client.api.SchemasApi;
+
+
import org.openapitools.client.api.GroupsApi;
-public class SchemasApiExample {
+public class GroupsApiExample {
public static void main(String[] args) {
- SchemasApi apiInstance = new SchemasApi();
+ GroupsApi apiInstance = new GroupsApi();
String accept = application/json; // String |
- String contentType = multipart/form-data; // String |
- File file = BINARY_DATA_HERE; // File | multipartFile
+ String contentType = application/json; // String |
+ CreateGroupPayload createGroupPayload = ; // CreateGroupPayload |
try {
- apiInstance.createSchema(accept, contentType, file);
+ GroupByIdResponse result = apiInstance.createGroup(accept, contentType, createGroupPayload);
+ System.out.println(result);
} catch (ApiException e) {
- System.err.println("Exception when calling SchemasApi#createSchema");
+ System.err.println("Exception when calling GroupsApi#createGroup");
e.printStackTrace();
}
}
}
-
+
// Create an instance of the API class
-SchemasApi *apiInstance = [[SchemasApi alloc] init];
+GroupsApi *apiInstance = [[GroupsApi alloc] init];
String *accept = application/json; // (default to application/json)
-String *contentType = multipart/form-data; // (default to multipart/form-data)
-File *file = BINARY_DATA_HERE; // multipartFile (default to null)
+String *contentType = application/json; // (default to application/json)
+CreateGroupPayload *createGroupPayload = ; //
-// Create a new schema.
-[apiInstance createSchemaWith:accept
+// Create a new group.
+[apiInstance createGroupWith:accept
contentType:contentType
- file:file
- completionHandler: ^(NSError* error) {
+ createGroupPayload:createGroupPayload
+ completionHandler: ^(GroupByIdResponse output, NSError* error) {
+ if (output) {
+ NSLog(@"%@", output);
+ }
if (error) {
NSLog(@"Error: %@", error);
}
@@ -11128,30 +11435,30 @@ File *file = BINARY_DATA_HERE; // multipartFile (default to null)
-
+
var TopologyExposureAndInventoryApi = require('topology_exposure_and_inventory_api');
// Create an instance of the API class
-var api = new TopologyExposureAndInventoryApi.SchemasApi()
+var api = new TopologyExposureAndInventoryApi.GroupsApi()
var accept = application/json; // {String}
-var contentType = multipart/form-data; // {String}
-var file = BINARY_DATA_HERE; // {File} multipartFile
+var contentType = application/json; // {String}
+var createGroupPayload = ; // {CreateGroupPayload}
var callback = function(error, data, response) {
if (error) {
console.error(error);
} else {
- console.log('API called successfully.');
+ console.log('API called successfully. Returned data: ' + data);
}
};
-api.createSchema(accept, contentType, file, callback);
+api.createGroup(accept, contentType, createGroupPayload, callback);
-
-
+
using System;
using System.Diagnostics;
using Org.OpenAPITools.Api;
@@ -11160,22 +11467,23 @@ using Org.OpenAPITools.Model;
namespace Example
{
- public class createSchemaExample
+ public class createGroupExample
{
public void main()
{
// Create an instance of the API class
- var apiInstance = new SchemasApi();
+ var apiInstance = new GroupsApi();
var accept = application/json; // String | (default to application/json)
- var contentType = multipart/form-data; // String | (default to multipart/form-data)
- var file = BINARY_DATA_HERE; // File | multipartFile (default to null)
+ var contentType = application/json; // String | (default to application/json)
+ var createGroupPayload = new CreateGroupPayload(); // CreateGroupPayload |
try {
- // Create a new schema.
- apiInstance.createSchema(accept, contentType, file);
+ // Create a new group.
+ GroupByIdResponse result = apiInstance.createGroup(accept, contentType, createGroupPayload);
+ Debug.WriteLine(result);
} catch (Exception e) {
- Debug.Print("Exception when calling SchemasApi.createSchema: " + e.Message );
+ Debug.Print("Exception when calling GroupsApi.createGroup: " + e.Message );
}
}
}
@@ -11183,44 +11491,46 @@ namespace Example
-
+
<?php
require_once(__DIR__ . '/vendor/autoload.php');
// Create an instance of the API class
-$api_instance = new OpenAPITools\Client\Api\SchemasApi();
+$api_instance = new OpenAPITools\Client\Api\GroupsApi();
$accept = application/json; // String |
-$contentType = multipart/form-data; // String |
-$file = BINARY_DATA_HERE; // File | multipartFile
+$contentType = application/json; // String |
+$createGroupPayload = ; // CreateGroupPayload |
try {
- $api_instance->createSchema($accept, $contentType, $file);
+ $result = $api_instance->createGroup($accept, $contentType, $createGroupPayload);
+ print_r($result);
} catch (Exception $e) {
- echo 'Exception when calling SchemasApi->createSchema: ', $e->getMessage(), PHP_EOL;
+ echo 'Exception when calling GroupsApi->createGroup: ', $e->getMessage(), PHP_EOL;
}
?>
-
+
use Data::Dumper;
use WWW::OPenAPIClient::Configuration;
-use WWW::OPenAPIClient::SchemasApi;
+use WWW::OPenAPIClient::GroupsApi;
# Create an instance of the API class
-my $api_instance = WWW::OPenAPIClient::SchemasApi->new();
+my $api_instance = WWW::OPenAPIClient::GroupsApi->new();
my $accept = application/json; # String |
-my $contentType = multipart/form-data; # String |
-my $file = BINARY_DATA_HERE; # File | multipartFile
+my $contentType = application/json; # String |
+my $createGroupPayload = WWW::OPenAPIClient::Object::CreateGroupPayload->new(); # CreateGroupPayload |
eval {
- $api_instance->createSchema(accept => $accept, contentType => $contentType, file => $file);
+ my $result = $api_instance->createGroup(accept => $accept, contentType => $contentType, createGroupPayload => $createGroupPayload);
+ print Dumper($result);
};
if ($@) {
- warn "Exception when calling SchemasApi->createSchema: $@\n";
+ warn "Exception when calling GroupsApi->createGroup: $@\n";
}
-
+
from __future__ import print_statement
import time
import openapi_client
@@ -11228,28 +11538,29 @@ from openapi_client.rest import ApiException
from pprint import pprint
# Create an instance of the API class
-api_instance = openapi_client.SchemasApi()
+api_instance = openapi_client.GroupsApi()
accept = application/json # String | (default to application/json)
-contentType = multipart/form-data # String | (default to multipart/form-data)
-file = BINARY_DATA_HERE # File | multipartFile (default to null)
+contentType = application/json # String | (default to application/json)
+createGroupPayload = # CreateGroupPayload |
try:
- # Create a new schema.
- api_instance.create_schema(accept, contentType, file)
+ # Create a new group.
+ api_response = api_instance.create_group(accept, contentType, createGroupPayload)
+ pprint(api_response)
except ApiException as e:
- print("Exception when calling SchemasApi->createSchema: %s\n" % e)
+ print("Exception when calling GroupsApi->createGroup: %s\n" % e)
-
-
extern crate SchemasApi;
+
+
extern crate GroupsApi;
pub fn main() {
let accept = application/json; // String
- let contentType = multipart/form-data; // String
- let file = BINARY_DATA_HERE; // File
+ let contentType = application/json; // String
+ let createGroupPayload = ; // CreateGroupPayload
- let mut context = SchemasApi::Context::default();
- let result = client.createSchema(accept, contentType, file, &context).wait();
+ let mut context = GroupsApi::Context::default();
+ let result = client.createGroup(accept, contentType, createGroupPayload, &context).wait();
println!("{:?}", result);
}
@@ -11275,7 +11586,7 @@ pub fn main() {
-
+
@@ -11295,7 +11606,7 @@ pub fn main() {
-
+
@@ -11313,70 +11624,113 @@ pub fn main() {
-
- Form parameters
+ Body parameters
| Name |
Description |
- | file* |
+ | createGroupPayload * |
+
+
+
|
+
Responses
-
-
+
+
-
+
-
-
-
+
-
-
+
+
-
+
-
-
-
+
-
-
+
+
-
+
-
-
-
+
+
+
+
+ deleteGroup
+ Delete a group with specified id.
+
+
+
+
+ Delete a group with specified id.
+
+
+ /groups/{groupId}
+
+ Usage and SDK Samples
+
+
-
- -
- Schema
-
+
+
+ curl -X DELETE \
+ -H "Accept: application/problem+json" \
+ "https://localhost/topology-inventory/v1alpha11/groups/{groupId}"
+
+
+
+ import org.openapitools.client.*;
+import org.openapitools.client.auth.*;
+import org.openapitools.client.model.*;
+import org.openapitools.client.api.GroupsApi;
+
+import java.io.File;
+import java.util.*;
+
+public class GroupsApiExample {
+ public static void main(String[] args) {
+
+ // Create an instance of the API class
+ GroupsApi apiInstance = new GroupsApi();
+ String groupId = groupId_example; // String |
+
+ try {
+ apiInstance.deleteGroup(groupId);
+ } catch (ApiException e) {
+ System.err.println("Exception when calling GroupsApi#deleteGroup");
+ e.printStackTrace();
+ }
+ }
+}
+
+
+
+
+ import 'package:openapi/api.dart';
+
+final api_instance = DefaultApi();
+
+final String groupId = new String(); // String |
+
+try {
+ final result = await api_instance.deleteGroup(groupId);
+ print(result);
+} catch (e) {
+ print('Exception when calling DefaultApi->deleteGroup: $e\n');
+}
+
+
+
+
+
+ import org.openapitools.client.api.GroupsApi;
+
+public class GroupsApiExample {
+ public static void main(String[] args) {
+ GroupsApi apiInstance = new GroupsApi();
+ String groupId = groupId_example; // String |
+
+ try {
+ apiInstance.deleteGroup(groupId);
+ } catch (ApiException e) {
+ System.err.println("Exception when calling GroupsApi#deleteGroup");
+ e.printStackTrace();
+ }
+ }
+}
+
+
+
+
+
+// Create an instance of the API class
+GroupsApi *apiInstance = [[GroupsApi alloc] init];
+String *groupId = groupId_example; // (default to null)
+
+// Delete a group with specified id.
+[apiInstance deleteGroupWith:groupId
+ completionHandler: ^(NSError* error) {
+ if (error) {
+ NSLog(@"Error: %@", error);
+ }
+}];
+
+
+
+
+ var TopologyExposureAndInventoryApi = require('topology_exposure_and_inventory_api');
+
+// Create an instance of the API class
+var api = new TopologyExposureAndInventoryApi.GroupsApi()
+var groupId = groupId_example; // {String}
+
+var callback = function(error, data, response) {
+ if (error) {
+ console.error(error);
+ } else {
+ console.log('API called successfully.');
+ }
+};
+api.deleteGroup(groupId, callback);
+
+
+
+
+
+ using System;
+using System.Diagnostics;
+using Org.OpenAPITools.Api;
+using Org.OpenAPITools.Client;
+using Org.OpenAPITools.Model;
+
+namespace Example
+{
+ public class deleteGroupExample
+ {
+ public void main()
+ {
+
+ // Create an instance of the API class
+ var apiInstance = new GroupsApi();
+ var groupId = groupId_example; // String | (default to null)
+
+ try {
+ // Delete a group with specified id.
+ apiInstance.deleteGroup(groupId);
+ } catch (Exception e) {
+ Debug.Print("Exception when calling GroupsApi.deleteGroup: " + e.Message );
+ }
+ }
+ }
+}
+
+
+
+
+ <?php
+require_once(__DIR__ . '/vendor/autoload.php');
+
+// Create an instance of the API class
+$api_instance = new OpenAPITools\Client\Api\GroupsApi();
+$groupId = groupId_example; // String |
+
+try {
+ $api_instance->deleteGroup($groupId);
+} catch (Exception $e) {
+ echo 'Exception when calling GroupsApi->deleteGroup: ', $e->getMessage(), PHP_EOL;
+}
+?>
+
+
+
+ use Data::Dumper;
+use WWW::OPenAPIClient::Configuration;
+use WWW::OPenAPIClient::GroupsApi;
+
+# Create an instance of the API class
+my $api_instance = WWW::OPenAPIClient::GroupsApi->new();
+my $groupId = groupId_example; # String |
+
+eval {
+ $api_instance->deleteGroup(groupId => $groupId);
+};
+if ($@) {
+ warn "Exception when calling GroupsApi->deleteGroup: $@\n";
+}
+
+
+
+ from __future__ import print_statement
+import time
+import openapi_client
+from openapi_client.rest import ApiException
+from pprint import pprint
+
+# Create an instance of the API class
+api_instance = openapi_client.GroupsApi()
+groupId = groupId_example # String | (default to null)
+
+try:
+ # Delete a group with specified id.
+ api_instance.delete_group(groupId)
+except ApiException as e:
+ print("Exception when calling GroupsApi->deleteGroup: %s\n" % e)
+
+
+
+ extern crate GroupsApi;
+
+pub fn main() {
+ let groupId = groupId_example; // String
+
+ let mut context = GroupsApi::Context::default();
+ let result = client.deleteGroup(groupId, &context).wait();
+
+ println!("{:?}", result);
+}
+
+
+
+
+ Scopes
+
+
+ Parameters
+
+ Path parameters
+
+
+ | Name |
+ Description |
+
+ | groupId* |
+
+
+
+
+
+
+
+ String
+
+
+
+
+ Required
+
+
+
+ |
+
+
+
+
+
+
+
+
+ Responses
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ getAllGroups
+ Get all groups.
+
+
+
+
+ Get all groups.
+
+
+ /groups
+
+ Usage and SDK Samples
+
+
+
+
+
+ curl -X GET \
+ -H "Accept: application/json,application/problem+json" \
+ "https://localhost/topology-inventory/v1alpha11/groups?offset=56&limit=56&name=name_example"
+
+
+
+ import org.openapitools.client.*;
+import org.openapitools.client.auth.*;
+import org.openapitools.client.model.*;
+import org.openapitools.client.api.GroupsApi;
+
+import java.io.File;
+import java.util.*;
+
+public class GroupsApiExample {
+ public static void main(String[] args) {
+
+ // Create an instance of the API class
+ GroupsApi apiInstance = new GroupsApi();
+ String accept = application/json; // String |
+ Integer offset = 56; // Integer | Pagination offset.
+ Integer limit = 56; // Integer | Result limiter.
+ String name = name_example; // String | Group name. If not specified, returns all the groups.
+
+ try {
+ GroupsResponse result = apiInstance.getAllGroups(accept, offset, limit, name);
+ System.out.println(result);
+ } catch (ApiException e) {
+ System.err.println("Exception when calling GroupsApi#getAllGroups");
+ e.printStackTrace();
+ }
+ }
+}
+
+
+
+
+ import 'package:openapi/api.dart';
+
+final api_instance = DefaultApi();
+
+final String accept = new String(); // String |
+final Integer offset = new Integer(); // Integer | Pagination offset.
+final Integer limit = new Integer(); // Integer | Result limiter.
+final String name = new String(); // String | Group name. If not specified, returns all the groups.
+
+try {
+ final result = await api_instance.getAllGroups(accept, offset, limit, name);
+ print(result);
+} catch (e) {
+ print('Exception when calling DefaultApi->getAllGroups: $e\n');
+}
+
+
+
+
+
+ import org.openapitools.client.api.GroupsApi;
+
+public class GroupsApiExample {
+ public static void main(String[] args) {
+ GroupsApi apiInstance = new GroupsApi();
+ String accept = application/json; // String |
+ Integer offset = 56; // Integer | Pagination offset.
+ Integer limit = 56; // Integer | Result limiter.
+ String name = name_example; // String | Group name. If not specified, returns all the groups.
+
+ try {
+ GroupsResponse result = apiInstance.getAllGroups(accept, offset, limit, name);
+ System.out.println(result);
+ } catch (ApiException e) {
+ System.err.println("Exception when calling GroupsApi#getAllGroups");
+ e.printStackTrace();
+ }
+ }
+}
+
+
+
+
+
+// Create an instance of the API class
+GroupsApi *apiInstance = [[GroupsApi alloc] init];
+String *accept = application/json; // (default to application/json)
+Integer *offset = 56; // Pagination offset. (optional) (default to 0)
+Integer *limit = 56; // Result limiter. (optional) (default to 500)
+String *name = name_example; // Group name. If not specified, returns all the groups. (optional) (default to null)
+
+// Get all groups.
+[apiInstance getAllGroupsWith:accept
+ offset:offset
+ limit:limit
+ name:name
+ completionHandler: ^(GroupsResponse output, NSError* error) {
+ if (output) {
+ NSLog(@"%@", output);
+ }
+ if (error) {
+ NSLog(@"Error: %@", error);
+ }
+}];
+
+
+
+
+ var TopologyExposureAndInventoryApi = require('topology_exposure_and_inventory_api');
+
+// Create an instance of the API class
+var api = new TopologyExposureAndInventoryApi.GroupsApi()
+var accept = application/json; // {String}
+var opts = {
+ 'offset': 56, // {Integer} Pagination offset.
+ 'limit': 56, // {Integer} Result limiter.
+ 'name': name_example // {String} Group name. If not specified, returns all the groups.
+};
+
+var callback = function(error, data, response) {
+ if (error) {
+ console.error(error);
+ } else {
+ console.log('API called successfully. Returned data: ' + data);
+ }
+};
+api.getAllGroups(accept, opts, callback);
+
+
+
+
+
+ using System;
+using System.Diagnostics;
+using Org.OpenAPITools.Api;
+using Org.OpenAPITools.Client;
+using Org.OpenAPITools.Model;
+
+namespace Example
+{
+ public class getAllGroupsExample
+ {
+ public void main()
+ {
+
+ // Create an instance of the API class
+ var apiInstance = new GroupsApi();
+ var accept = application/json; // String | (default to application/json)
+ var offset = 56; // Integer | Pagination offset. (optional) (default to 0)
+ var limit = 56; // Integer | Result limiter. (optional) (default to 500)
+ var name = name_example; // String | Group name. If not specified, returns all the groups. (optional) (default to null)
+
+ try {
+ // Get all groups.
+ GroupsResponse result = apiInstance.getAllGroups(accept, offset, limit, name);
+ Debug.WriteLine(result);
+ } catch (Exception e) {
+ Debug.Print("Exception when calling GroupsApi.getAllGroups: " + e.Message );
+ }
+ }
+ }
+}
+
+
+
+
+ <?php
+require_once(__DIR__ . '/vendor/autoload.php');
+
+// Create an instance of the API class
+$api_instance = new OpenAPITools\Client\Api\GroupsApi();
+$accept = application/json; // String |
+$offset = 56; // Integer | Pagination offset.
+$limit = 56; // Integer | Result limiter.
+$name = name_example; // String | Group name. If not specified, returns all the groups.
+
+try {
+ $result = $api_instance->getAllGroups($accept, $offset, $limit, $name);
+ print_r($result);
+} catch (Exception $e) {
+ echo 'Exception when calling GroupsApi->getAllGroups: ', $e->getMessage(), PHP_EOL;
+}
+?>
+
+
+
+ use Data::Dumper;
+use WWW::OPenAPIClient::Configuration;
+use WWW::OPenAPIClient::GroupsApi;
+
+# Create an instance of the API class
+my $api_instance = WWW::OPenAPIClient::GroupsApi->new();
+my $accept = application/json; # String |
+my $offset = 56; # Integer | Pagination offset.
+my $limit = 56; # Integer | Result limiter.
+my $name = name_example; # String | Group name. If not specified, returns all the groups.
+
+eval {
+ my $result = $api_instance->getAllGroups(accept => $accept, offset => $offset, limit => $limit, name => $name);
+ print Dumper($result);
+};
+if ($@) {
+ warn "Exception when calling GroupsApi->getAllGroups: $@\n";
+}
+
+
+
+ from __future__ import print_statement
+import time
+import openapi_client
+from openapi_client.rest import ApiException
+from pprint import pprint
+
+# Create an instance of the API class
+api_instance = openapi_client.GroupsApi()
+accept = application/json # String | (default to application/json)
+offset = 56 # Integer | Pagination offset. (optional) (default to 0)
+limit = 56 # Integer | Result limiter. (optional) (default to 500)
+name = name_example # String | Group name. If not specified, returns all the groups. (optional) (default to null)
+
+try:
+ # Get all groups.
+ api_response = api_instance.get_all_groups(accept, offset=offset, limit=limit, name=name)
+ pprint(api_response)
+except ApiException as e:
+ print("Exception when calling GroupsApi->getAllGroups: %s\n" % e)
+
+
+
+ extern crate GroupsApi;
+
+pub fn main() {
+ let accept = application/json; // String
+ let offset = 56; // Integer
+ let limit = 56; // Integer
+ let name = name_example; // String
+
+ let mut context = GroupsApi::Context::default();
+ let result = client.getAllGroups(accept, offset, limit, name, &context).wait();
+
+ println!("{:?}", result);
+}
+
+
+
+
+ Scopes
+
+
+ Parameters
+
+
+ Header parameters
+
+
+ | Name |
+ Description |
+
+ | Accept* |
+
+
+
+
+
+
+
+ String
+
+
+
+
+ Required
+
+
+
+ |
+
+
+
+
+
+
+ Query parameters
+
+
+ | Name |
+ Description |
+
+ | offset |
+
+
+
+
+
+
+
+ Integer
+
+
+
+Pagination offset.
+
+
+
+
+ |
+
+
+ | limit |
+
+
+
+
+
+
+
+ Integer
+
+
+
+Result limiter.
+
+
+
+
+ |
+
+
+ | name |
+
+
+
+
+
+
+
+ String
+
+
+
+Group name. If not specified, returns all the groups.
+
+
+
+
+ |
+
+
+
+
+ Responses
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ getGroupById
+ Get a group with specified id.
+
+
+
+
+ Get a group with specified id.
+
+
+ /groups/{groupId}
+
+ Usage and SDK Samples
+
+
+
+
+
+ curl -X GET \
+ -H "Accept: application/json,application/problem+json" \
+ "https://localhost/topology-inventory/v1alpha11/groups/{groupId}"
+
+
+
+ import org.openapitools.client.*;
+import org.openapitools.client.auth.*;
+import org.openapitools.client.model.*;
+import org.openapitools.client.api.GroupsApi;
+
+import java.io.File;
+import java.util.*;
+
+public class GroupsApiExample {
+ public static void main(String[] args) {
+
+ // Create an instance of the API class
+ GroupsApi apiInstance = new GroupsApi();
+ String accept = application/json; // String |
+ String groupId = groupId_example; // String |
+
+ try {
+ GroupByIdResponse result = apiInstance.getGroupById(accept, groupId);
+ System.out.println(result);
+ } catch (ApiException e) {
+ System.err.println("Exception when calling GroupsApi#getGroupById");
+ e.printStackTrace();
+ }
+ }
+}
+
+
+
+
+ import 'package:openapi/api.dart';
+
+final api_instance = DefaultApi();
+
+final String accept = new String(); // String |
+final String groupId = new String(); // String |
+
+try {
+ final result = await api_instance.getGroupById(accept, groupId);
+ print(result);
+} catch (e) {
+ print('Exception when calling DefaultApi->getGroupById: $e\n');
+}
+
+
+
+
+
+ import org.openapitools.client.api.GroupsApi;
+
+public class GroupsApiExample {
+ public static void main(String[] args) {
+ GroupsApi apiInstance = new GroupsApi();
+ String accept = application/json; // String |
+ String groupId = groupId_example; // String |
+
+ try {
+ GroupByIdResponse result = apiInstance.getGroupById(accept, groupId);
+ System.out.println(result);
+ } catch (ApiException e) {
+ System.err.println("Exception when calling GroupsApi#getGroupById");
+ e.printStackTrace();
+ }
+ }
+}
+
+
+
+
+
+// Create an instance of the API class
+GroupsApi *apiInstance = [[GroupsApi alloc] init];
+String *accept = application/json; // (default to application/json)
+String *groupId = groupId_example; // (default to null)
+
+// Get a group with specified id.
+[apiInstance getGroupByIdWith:accept
+ groupId:groupId
+ completionHandler: ^(GroupByIdResponse output, NSError* error) {
+ if (output) {
+ NSLog(@"%@", output);
+ }
+ if (error) {
+ NSLog(@"Error: %@", error);
+ }
+}];
+
+
+
+
+ var TopologyExposureAndInventoryApi = require('topology_exposure_and_inventory_api');
+
+// Create an instance of the API class
+var api = new TopologyExposureAndInventoryApi.GroupsApi()
+var accept = application/json; // {String}
+var groupId = groupId_example; // {String}
+
+var callback = function(error, data, response) {
+ if (error) {
+ console.error(error);
+ } else {
+ console.log('API called successfully. Returned data: ' + data);
+ }
+};
+api.getGroupById(accept, groupId, callback);
+
+
+
+
+
+ using System;
+using System.Diagnostics;
+using Org.OpenAPITools.Api;
+using Org.OpenAPITools.Client;
+using Org.OpenAPITools.Model;
+
+namespace Example
+{
+ public class getGroupByIdExample
+ {
+ public void main()
+ {
+
+ // Create an instance of the API class
+ var apiInstance = new GroupsApi();
+ var accept = application/json; // String | (default to application/json)
+ var groupId = groupId_example; // String | (default to null)
+
+ try {
+ // Get a group with specified id.
+ GroupByIdResponse result = apiInstance.getGroupById(accept, groupId);
+ Debug.WriteLine(result);
+ } catch (Exception e) {
+ Debug.Print("Exception when calling GroupsApi.getGroupById: " + e.Message );
+ }
+ }
+ }
+}
+
+
+
+
+ <?php
+require_once(__DIR__ . '/vendor/autoload.php');
+
+// Create an instance of the API class
+$api_instance = new OpenAPITools\Client\Api\GroupsApi();
+$accept = application/json; // String |
+$groupId = groupId_example; // String |
+
+try {
+ $result = $api_instance->getGroupById($accept, $groupId);
+ print_r($result);
+} catch (Exception $e) {
+ echo 'Exception when calling GroupsApi->getGroupById: ', $e->getMessage(), PHP_EOL;
+}
+?>
+
+
+
+ use Data::Dumper;
+use WWW::OPenAPIClient::Configuration;
+use WWW::OPenAPIClient::GroupsApi;
+
+# Create an instance of the API class
+my $api_instance = WWW::OPenAPIClient::GroupsApi->new();
+my $accept = application/json; # String |
+my $groupId = groupId_example; # String |
+
+eval {
+ my $result = $api_instance->getGroupById(accept => $accept, groupId => $groupId);
+ print Dumper($result);
+};
+if ($@) {
+ warn "Exception when calling GroupsApi->getGroupById: $@\n";
+}
+
+
+
+ from __future__ import print_statement
+import time
+import openapi_client
+from openapi_client.rest import ApiException
+from pprint import pprint
+
+# Create an instance of the API class
+api_instance = openapi_client.GroupsApi()
+accept = application/json # String | (default to application/json)
+groupId = groupId_example # String | (default to null)
+
+try:
+ # Get a group with specified id.
+ api_response = api_instance.get_group_by_id(accept, groupId)
+ pprint(api_response)
+except ApiException as e:
+ print("Exception when calling GroupsApi->getGroupById: %s\n" % e)
+
+
+
+ extern crate GroupsApi;
+
+pub fn main() {
+ let accept = application/json; // String
+ let groupId = groupId_example; // String
+
+ let mut context = GroupsApi::Context::default();
+ let result = client.getGroupById(accept, groupId, &context).wait();
+
+ println!("{:?}", result);
+}
+
+
+
+
+ Scopes
+
+
+ Parameters
+
+ Path parameters
+
+
+ | Name |
+ Description |
+
+ | groupId* |
+
+
+
+
+
+
+
+ String
+
+
+
+
+ Required
+
+
+
+ |
+
+
+
+
+ Header parameters
+
+
+ | Name |
+ Description |
+
+ | Accept* |
+
+
+
+
+
+
+
+ String
+
+
+
+
+ Required
+
+
+
+ |
+
+
+
+
+
+
+
+ Responses
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+ Schema
+
@@ -11601,22 +13591,22 @@ multipartFile
-
-
-
+
-
-
+
+
-
+
-
-
-
+
-
-
+
+
-
+
-
-
-
-
-
+
+
- deleteSchema
- Delete a schema.
+ getMembers
+ Get the members of a group with specified id.
- Delete a schema.
+ Get the members of a group with specified id.
- /schemas/{schemaName}
+ /groups/{groupId}/members
Usage and SDK Samples
-
- curl -X DELETE \
- -H "Accept: application/problem+json" \
- "https://localhost/topology-inventory/v1alpha11/schemas/{schemaName}"
+
+ curl -X GET \
+ -H "Accept: application/json,application/problem+json" \
+ "https://localhost/topology-inventory/v1alpha11/groups/{groupId}/members?offset=56&limit=56"
-
+
import org.openapitools.client.*;
import org.openapitools.client.auth.*;
import org.openapitools.client.model.*;
-import org.openapitools.client.api.SchemasApi;
+import org.openapitools.client.api.GroupsApi;
import java.io.File;
import java.util.*;
-public class SchemasApiExample {
+public class GroupsApiExample {
public static void main(String[] args) {
// Create an instance of the API class
- SchemasApi apiInstance = new SchemasApi();
+ GroupsApi apiInstance = new GroupsApi();
String accept = application/json; // String |
- String schemaName = schemaName_example; // String |
+ String groupId = groupId_example; // String |
+ Integer offset = 56; // Integer | Pagination offset.
+ Integer limit = 56; // Integer | Result limiter.
try {
- apiInstance.deleteSchema(accept, schemaName);
+ MembersResponse result = apiInstance.getMembers(accept, groupId, offset, limit);
+ System.out.println(result);
} catch (ApiException e) {
- System.err.println("Exception when calling SchemasApi#deleteSchema");
+ System.err.println("Exception when calling GroupsApi#getMembers");
e.printStackTrace();
}
}
@@ -11889,58 +13882,70 @@ public class SchemasApiExample {
-
+
import 'package:openapi/api.dart';
final api_instance = DefaultApi();
final String accept = new String(); // String |
-final String schemaName = new String(); // String |
+final String groupId = new String(); // String |
+final Integer offset = new Integer(); // Integer | Pagination offset.
+final Integer limit = new Integer(); // Integer | Result limiter.
try {
- final result = await api_instance.deleteSchema(accept, schemaName);
+ final result = await api_instance.getMembers(accept, groupId, offset, limit);
print(result);
} catch (e) {
- print('Exception when calling DefaultApi->deleteSchema: $e\n');
+ print('Exception when calling DefaultApi->getMembers: $e\n');
}
-
- import org.openapitools.client.api.SchemasApi;
+
+ import org.openapitools.client.api.GroupsApi;
-public class SchemasApiExample {
+public class GroupsApiExample {
public static void main(String[] args) {
- SchemasApi apiInstance = new SchemasApi();
+ GroupsApi apiInstance = new GroupsApi();
String accept = application/json; // String |
- String schemaName = schemaName_example; // String |
+ String groupId = groupId_example; // String |
+ Integer offset = 56; // Integer | Pagination offset.
+ Integer limit = 56; // Integer | Result limiter.
try {
- apiInstance.deleteSchema(accept, schemaName);
+ MembersResponse result = apiInstance.getMembers(accept, groupId, offset, limit);
+ System.out.println(result);
} catch (ApiException e) {
- System.err.println("Exception when calling SchemasApi#deleteSchema");
+ System.err.println("Exception when calling GroupsApi#getMembers");
e.printStackTrace();
}
}
}
-
+
// Create an instance of the API class
-SchemasApi *apiInstance = [[SchemasApi alloc] init];
+GroupsApi *apiInstance = [[GroupsApi alloc] init];
String *accept = application/json; // (default to application/json)
-String *schemaName = schemaName_example; // (default to o-ran-smo-teiv-ran)
+String *groupId = groupId_example; // (default to null)
+Integer *offset = 56; // Pagination offset. (optional) (default to 0)
+Integer *limit = 56; // Result limiter. (optional) (default to 500)
-// Delete a schema.
-[apiInstance deleteSchemaWith:accept
- schemaName:schemaName
- completionHandler: ^(NSError* error) {
+// Get the members of a group with specified id.
+[apiInstance getMembersWith:accept
+ groupId:groupId
+ offset:offset
+ limit:limit
+ completionHandler: ^(MembersResponse output, NSError* error) {
+ if (output) {
+ NSLog(@"%@", output);
+ }
if (error) {
NSLog(@"Error: %@", error);
}
@@ -11948,29 +13953,33 @@ String *schemaName = schemaName_example; // (default to o-ran-smo-teiv-ran)
-
+
var TopologyExposureAndInventoryApi = require('topology_exposure_and_inventory_api');
// Create an instance of the API class
-var api = new TopologyExposureAndInventoryApi.SchemasApi()
+var api = new TopologyExposureAndInventoryApi.GroupsApi()
var accept = application/json; // {String}
-var schemaName = schemaName_example; // {String}
+var groupId = groupId_example; // {String}
+var opts = {
+ 'offset': 56, // {Integer} Pagination offset.
+ 'limit': 56 // {Integer} Result limiter.
+};
var callback = function(error, data, response) {
if (error) {
console.error(error);
} else {
- console.log('API called successfully.');
+ console.log('API called successfully. Returned data: ' + data);
}
};
-api.deleteSchema(accept, schemaName, callback);
+api.getMembers(accept, groupId, opts, callback);
-
-
+
using System;
using System.Diagnostics;
using Org.OpenAPITools.Api;
@@ -11979,21 +13988,24 @@ using Org.OpenAPITools.Model;
namespace Example
{
- public class deleteSchemaExample
+ public class getMembersExample
{
public void main()
{
// Create an instance of the API class
- var apiInstance = new SchemasApi();
+ var apiInstance = new GroupsApi();
var accept = application/json; // String | (default to application/json)
- var schemaName = schemaName_example; // String | (default to o-ran-smo-teiv-ran)
+ var groupId = groupId_example; // String | (default to null)
+ var offset = 56; // Integer | Pagination offset. (optional) (default to 0)
+ var limit = 56; // Integer | Result limiter. (optional) (default to 500)
try {
- // Delete a schema.
- apiInstance.deleteSchema(accept, schemaName);
+ // Get the members of a group with specified id.
+ MembersResponse result = apiInstance.getMembers(accept, groupId, offset, limit);
+ Debug.WriteLine(result);
} catch (Exception e) {
- Debug.Print("Exception when calling SchemasApi.deleteSchema: " + e.Message );
+ Debug.Print("Exception when calling GroupsApi.getMembers: " + e.Message );
}
}
}
@@ -12001,42 +14013,48 @@ namespace Example
-
+
<?php
require_once(__DIR__ . '/vendor/autoload.php');
// Create an instance of the API class
-$api_instance = new OpenAPITools\Client\Api\SchemasApi();
+$api_instance = new OpenAPITools\Client\Api\GroupsApi();
$accept = application/json; // String |
-$schemaName = schemaName_example; // String |
+$groupId = groupId_example; // String |
+$offset = 56; // Integer | Pagination offset.
+$limit = 56; // Integer | Result limiter.
try {
- $api_instance->deleteSchema($accept, $schemaName);
+ $result = $api_instance->getMembers($accept, $groupId, $offset, $limit);
+ print_r($result);
} catch (Exception $e) {
- echo 'Exception when calling SchemasApi->deleteSchema: ', $e->getMessage(), PHP_EOL;
+ echo 'Exception when calling GroupsApi->getMembers: ', $e->getMessage(), PHP_EOL;
}
?>
-
+
use Data::Dumper;
use WWW::OPenAPIClient::Configuration;
-use WWW::OPenAPIClient::SchemasApi;
+use WWW::OPenAPIClient::GroupsApi;
# Create an instance of the API class
-my $api_instance = WWW::OPenAPIClient::SchemasApi->new();
+my $api_instance = WWW::OPenAPIClient::GroupsApi->new();
my $accept = application/json; # String |
-my $schemaName = schemaName_example; # String |
+my $groupId = groupId_example; # String |
+my $offset = 56; # Integer | Pagination offset.
+my $limit = 56; # Integer | Result limiter.
eval {
- $api_instance->deleteSchema(accept => $accept, schemaName => $schemaName);
+ my $result = $api_instance->getMembers(accept => $accept, groupId => $groupId, offset => $offset, limit => $limit);
+ print Dumper($result);
};
if ($@) {
- warn "Exception when calling SchemasApi->deleteSchema: $@\n";
+ warn "Exception when calling GroupsApi->getMembers: $@\n";
}
-
+
from __future__ import print_statement
import time
import openapi_client
@@ -12044,26 +14062,31 @@ from openapi_client.rest import ApiException
from pprint import pprint
# Create an instance of the API class
-api_instance = openapi_client.SchemasApi()
+api_instance = openapi_client.GroupsApi()
accept = application/json # String | (default to application/json)
-schemaName = schemaName_example # String | (default to o-ran-smo-teiv-ran)
+groupId = groupId_example # String | (default to null)
+offset = 56 # Integer | Pagination offset. (optional) (default to 0)
+limit = 56 # Integer | Result limiter. (optional) (default to 500)
try:
- # Delete a schema.
- api_instance.delete_schema(accept, schemaName)
+ # Get the members of a group with specified id.
+ api_response = api_instance.get_members(accept, groupId, offset=offset, limit=limit)
+ pprint(api_response)
except ApiException as e:
- print("Exception when calling SchemasApi->deleteSchema: %s\n" % e)
+ print("Exception when calling GroupsApi->getMembers: %s\n" % e)
-
- extern crate SchemasApi;
+
+ extern crate GroupsApi;
pub fn main() {
let accept = application/json; // String
- let schemaName = schemaName_example; // String
+ let groupId = groupId_example; // String
+ let offset = 56; // Integer
+ let limit = 56; // Integer
- let mut context = SchemasApi::Context::default();
- let result = client.deleteSchema(accept, schemaName, &context).wait();
+ let mut context = GroupsApi::Context::default();
+ let result = client.getMembers(accept, groupId, offset, limit, &context).wait();
println!("{:?}", result);
}
@@ -12084,11 +14107,11 @@ pub fn main() {
| Name |
Description |
- | schemaName* |
+ | groupId* |
-
+
@@ -12116,7 +14139,7 @@ pub fn main() {
-
+
@@ -12136,90 +14159,72 @@ pub fn main() {
+ Query parameters
+
+
+ | Name |
+ Description |
+
+ | offset |
+
- Responses
-
-
-
+
+
+
+
+ Integer
+
-
+
+Pagination offset.
+
+
+
+
+ |
+
+ | limit |
+
-
+
+
+
+
+ Integer
+
+
+
+Result limiter.
+
+
+
+
+ |
+
-
-
-
+ Responses
+
+
-
+
-
-
-
+
-
-
+
+
-
+
-
-
-
+
-
-
+
+
-
+
-
-
-
+
-
-
+
+
-
+
-
-
-
-
-
+
+
- getSchemaByName
- Get the model schema.
+ getProvidedMembers
+ Get the provided members of a static group with specified id.
- Get the model schema by name.
+ Get the provided members of a static group with specified id.
- /schemas/{schemaName}/content
+ /groups/{groupId}/provided-members
Usage and SDK Samples
-
+
curl -X GET \
- -H "Accept: text/plain,application/problem+json" \
- "https://localhost/topology-inventory/v1alpha11/schemas/{schemaName}/content"
+ -H "Accept: application/json,application/problem+json" \
+ "https://localhost/topology-inventory/v1alpha11/groups/{groupId}/provided-members?status=status_example&offset=56&limit=56"
-
+
import org.openapitools.client.*;
import org.openapitools.client.auth.*;
import org.openapitools.client.model.*;
-import org.openapitools.client.api.SchemasApi;
+import org.openapitools.client.api.GroupsApi;
import java.io.File;
import java.util.*;
-public class SchemasApiExample {
+public class GroupsApiExample {
public static void main(String[] args) {
// Create an instance of the API class
- SchemasApi apiInstance = new SchemasApi();
+ GroupsApi apiInstance = new GroupsApi();
String accept = application/json; // String |
- String schemaName = schemaName_example; // String |
+ String groupId = groupId_example; // String |
+ String status = status_example; // String | Status can be present (or) not-present (or) invalid. If not specified, returns all members of the group.
+ Integer offset = 56; // Integer | Pagination offset.
+ Integer limit = 56; // Integer | Result limiter.
try {
- 'String' result = apiInstance.getSchemaByName(accept, schemaName);
+ MembersResponse result = apiInstance.getProvidedMembers(accept, groupId, status, offset, limit);
System.out.println(result);
} catch (ApiException e) {
- System.err.println("Exception when calling SchemasApi#getSchemaByName");
+ System.err.println("Exception when calling GroupsApi#getProvidedMembers");
e.printStackTrace();
}
}
@@ -12598,59 +14606,71 @@ public class SchemasApiExample {
-
+
import 'package:openapi/api.dart';
final api_instance = DefaultApi();
final String accept = new String(); // String |
-final String schemaName = new String(); // String |
+final String groupId = new String(); // String |
+final String status = new String(); // String | Status can be present (or) not-present (or) invalid. If not specified, returns all members of the group.
+final Integer offset = new Integer(); // Integer | Pagination offset.
+final Integer limit = new Integer(); // Integer | Result limiter.
try {
- final result = await api_instance.getSchemaByName(accept, schemaName);
+ final result = await api_instance.getProvidedMembers(accept, groupId, status, offset, limit);
print(result);
} catch (e) {
- print('Exception when calling DefaultApi->getSchemaByName: $e\n');
+ print('Exception when calling DefaultApi->getProvidedMembers: $e\n');
}
-
- import org.openapitools.client.api.SchemasApi;
+
+ import org.openapitools.client.api.GroupsApi;
-public class SchemasApiExample {
+public class GroupsApiExample {
public static void main(String[] args) {
- SchemasApi apiInstance = new SchemasApi();
+ GroupsApi apiInstance = new GroupsApi();
String accept = application/json; // String |
- String schemaName = schemaName_example; // String |
+ String groupId = groupId_example; // String |
+ String status = status_example; // String | Status can be present (or) not-present (or) invalid. If not specified, returns all members of the group.
+ Integer offset = 56; // Integer | Pagination offset.
+ Integer limit = 56; // Integer | Result limiter.
try {
- 'String' result = apiInstance.getSchemaByName(accept, schemaName);
+ MembersResponse result = apiInstance.getProvidedMembers(accept, groupId, status, offset, limit);
System.out.println(result);
} catch (ApiException e) {
- System.err.println("Exception when calling SchemasApi#getSchemaByName");
+ System.err.println("Exception when calling GroupsApi#getProvidedMembers");
e.printStackTrace();
}
}
}
-
+
// Create an instance of the API class
-SchemasApi *apiInstance = [[SchemasApi alloc] init];
+GroupsApi *apiInstance = [[GroupsApi alloc] init];
String *accept = application/json; // (default to application/json)
-String *schemaName = schemaName_example; // (default to o-ran-smo-teiv-ran)
+String *groupId = groupId_example; // (default to null)
+String *status = status_example; // Status can be present (or) not-present (or) invalid. If not specified, returns all members of the group. (optional) (default to null)
+Integer *offset = 56; // Pagination offset. (optional) (default to 0)
+Integer *limit = 56; // Result limiter. (optional) (default to 500)
-// Get the model schema.
-[apiInstance getSchemaByNameWith:accept
- schemaName:schemaName
- completionHandler: ^('String' output, NSError* error) {
+// Get the provided members of a static group with specified id.
+[apiInstance getProvidedMembersWith:accept
+ groupId:groupId
+ status:status
+ offset:offset
+ limit:limit
+ completionHandler: ^(MembersResponse output, NSError* error) {
if (output) {
NSLog(@"%@", output);
}
@@ -12661,13 +14681,18 @@ String *schemaName = schemaName_example; // (default to o-ran-smo-teiv-ran)
-
+
var TopologyExposureAndInventoryApi = require('topology_exposure_and_inventory_api');
// Create an instance of the API class
-var api = new TopologyExposureAndInventoryApi.SchemasApi()
+var api = new TopologyExposureAndInventoryApi.GroupsApi()
var accept = application/json; // {String}
-var schemaName = schemaName_example; // {String}
+var groupId = groupId_example; // {String}
+var opts = {
+ 'status': status_example, // {String} Status can be present (or) not-present (or) invalid. If not specified, returns all members of the group.
+ 'offset': 56, // {Integer} Pagination offset.
+ 'limit': 56 // {Integer} Result limiter.
+};
var callback = function(error, data, response) {
if (error) {
@@ -12676,14 +14701,14 @@ var callback = function(error, data, response) {
console.log('API called successfully. Returned data: ' + data);
}
};
-api.getSchemaByName(accept, schemaName, callback);
+api.getProvidedMembers(accept, groupId, opts, callback);
-
-
+
using System;
using System.Diagnostics;
using Org.OpenAPITools.Api;
@@ -12692,22 +14717,25 @@ using Org.OpenAPITools.Model;
namespace Example
{
- public class getSchemaByNameExample
+ public class getProvidedMembersExample
{
public void main()
{
// Create an instance of the API class
- var apiInstance = new SchemasApi();
+ var apiInstance = new GroupsApi();
var accept = application/json; // String | (default to application/json)
- var schemaName = schemaName_example; // String | (default to o-ran-smo-teiv-ran)
+ var groupId = groupId_example; // String | (default to null)
+ var status = status_example; // String | Status can be present (or) not-present (or) invalid. If not specified, returns all members of the group. (optional) (default to null)
+ var offset = 56; // Integer | Pagination offset. (optional) (default to 0)
+ var limit = 56; // Integer | Result limiter. (optional) (default to 500)
try {
- // Get the model schema.
- 'String' result = apiInstance.getSchemaByName(accept, schemaName);
+ // Get the provided members of a static group with specified id.
+ MembersResponse result = apiInstance.getProvidedMembers(accept, groupId, status, offset, limit);
Debug.WriteLine(result);
} catch (Exception e) {
- Debug.Print("Exception when calling SchemasApi.getSchemaByName: " + e.Message );
+ Debug.Print("Exception when calling GroupsApi.getProvidedMembers: " + e.Message );
}
}
}
@@ -12715,44 +14743,50 @@ namespace Example
-
+
<?php
require_once(__DIR__ . '/vendor/autoload.php');
// Create an instance of the API class
-$api_instance = new OpenAPITools\Client\Api\SchemasApi();
+$api_instance = new OpenAPITools\Client\Api\GroupsApi();
$accept = application/json; // String |
-$schemaName = schemaName_example; // String |
+$groupId = groupId_example; // String |
+$status = status_example; // String | Status can be present (or) not-present (or) invalid. If not specified, returns all members of the group.
+$offset = 56; // Integer | Pagination offset.
+$limit = 56; // Integer | Result limiter.
try {
- $result = $api_instance->getSchemaByName($accept, $schemaName);
+ $result = $api_instance->getProvidedMembers($accept, $groupId, $status, $offset, $limit);
print_r($result);
} catch (Exception $e) {
- echo 'Exception when calling SchemasApi->getSchemaByName: ', $e->getMessage(), PHP_EOL;
+ echo 'Exception when calling GroupsApi->getProvidedMembers: ', $e->getMessage(), PHP_EOL;
}
?>
-
+
use Data::Dumper;
use WWW::OPenAPIClient::Configuration;
-use WWW::OPenAPIClient::SchemasApi;
+use WWW::OPenAPIClient::GroupsApi;
# Create an instance of the API class
-my $api_instance = WWW::OPenAPIClient::SchemasApi->new();
+my $api_instance = WWW::OPenAPIClient::GroupsApi->new();
my $accept = application/json; # String |
-my $schemaName = schemaName_example; # String |
+my $groupId = groupId_example; # String |
+my $status = status_example; # String | Status can be present (or) not-present (or) invalid. If not specified, returns all members of the group.
+my $offset = 56; # Integer | Pagination offset.
+my $limit = 56; # Integer | Result limiter.
eval {
- my $result = $api_instance->getSchemaByName(accept => $accept, schemaName => $schemaName);
+ my $result = $api_instance->getProvidedMembers(accept => $accept, groupId => $groupId, status => $status, offset => $offset, limit => $limit);
print Dumper($result);
};
if ($@) {
- warn "Exception when calling SchemasApi->getSchemaByName: $@\n";
+ warn "Exception when calling GroupsApi->getProvidedMembers: $@\n";
}
-
+
from __future__ import print_statement
import time
import openapi_client
@@ -12760,27 +14794,33 @@ from openapi_client.rest import ApiException
from pprint import pprint
# Create an instance of the API class
-api_instance = openapi_client.SchemasApi()
+api_instance = openapi_client.GroupsApi()
accept = application/json # String | (default to application/json)
-schemaName = schemaName_example # String | (default to o-ran-smo-teiv-ran)
+groupId = groupId_example # String | (default to null)
+status = status_example # String | Status can be present (or) not-present (or) invalid. If not specified, returns all members of the group. (optional) (default to null)
+offset = 56 # Integer | Pagination offset. (optional) (default to 0)
+limit = 56 # Integer | Result limiter. (optional) (default to 500)
try:
- # Get the model schema.
- api_response = api_instance.get_schema_by_name(accept, schemaName)
+ # Get the provided members of a static group with specified id.
+ api_response = api_instance.get_provided_members(accept, groupId, status=status, offset=offset, limit=limit)
pprint(api_response)
except ApiException as e:
- print("Exception when calling SchemasApi->getSchemaByName: %s\n" % e)
+ print("Exception when calling GroupsApi->getProvidedMembers: %s\n" % e)
-
- extern crate SchemasApi;
+
+ extern crate GroupsApi;
pub fn main() {
let accept = application/json; // String
- let schemaName = schemaName_example; // String
+ let groupId = groupId_example; // String
+ let status = status_example; // String
+ let offset = 56; // Integer
+ let limit = 56; // Integer
- let mut context = SchemasApi::Context::default();
- let result = client.getSchemaByName(accept, schemaName, &context).wait();
+ let mut context = GroupsApi::Context::default();
+ let result = client.getProvidedMembers(accept, groupId, status, offset, limit, &context).wait();
println!("{:?}", result);
}
@@ -12801,11 +14841,11 @@ pub fn main() {
| Name |
Description |
- | schemaName* |
+ | groupId* |
-
+
@@ -12833,7 +14873,7 @@ pub fn main() {
-
+
@@ -12853,187 +14893,92 @@ pub fn main() {
+ Query parameters
+
+
+ | Name |
+ Description |
+
+ | status |
+
- Responses
-
-
-
-
-
-
+
+
+
+
+ String
+
-
-
-
-
+ | offset |
+
-
- -
- Schema
-
+
+
+
+
+ Integer
+
+
+Pagination offset.
+
+
+
+
+ |
+
+ | limit |
+
-
+
+
+
+
+ Integer
+
+
+Result limiter.
+
+
+
+
+ |
+
-
-
-
+ Responses
+
+
-
+
-
-
-
+
-
-
+
+
-
+
-
-
-
-
-
+
+
+
-
-
+
+
-
+
-
-
-
+
-
-
+
+
-
+
-
-
-
-
-
+
+
- getSchemas
- Get a list of all schemas.
+ updateGroupName
+ Update the name of a group.
- Get a list of all schemas.
+ Update the name of a group.
- /schemas
+ /groups/{groupId}/name
Usage and SDK Samples
-
- curl -X GET \
- -H "Accept: application/json,application/problem+json" \
- "https://localhost/topology-inventory/v1alpha11/schemas?domain=ran&offset=56&limit=56"
+
+ curl -X PUT \
+ -H "Accept: application/problem+json" \
+ -H "Content-Type: application/json" \
+ "https://localhost/topology-inventory/v1alpha11/groups/{groupId}/name" \
+ -d '{
+ "name" : "name"
+}'
-
+
import org.openapitools.client.*;
import org.openapitools.client.auth.*;
import org.openapitools.client.model.*;
-import org.openapitools.client.api.SchemasApi;
+import org.openapitools.client.api.GroupsApi;
import java.io.File;
import java.util.*;
-public class SchemasApiExample {
+public class GroupsApiExample {
public static void main(String[] args) {
// Create an instance of the API class
- SchemasApi apiInstance = new SchemasApi();
- String accept = application/json; // String |
- String domain = ran; // String |
- Integer offset = 56; // Integer | Pagination offset.
- Integer limit = 56; // Integer | Result limiter.
+ GroupsApi apiInstance = new GroupsApi();
+ String contentType = application/json; // String |
+ String groupId = groupId_example; // String |
+ UpdateGroupNamePayload updateGroupNamePayload = ; // UpdateGroupNamePayload |
try {
- SchemaList result = apiInstance.getSchemas(accept, domain, offset, limit);
- System.out.println(result);
+ apiInstance.updateGroupName(contentType, groupId, updateGroupNamePayload);
} catch (ApiException e) {
- System.err.println("Exception when calling SchemasApi#getSchemas");
+ System.err.println("Exception when calling GroupsApi#updateGroupName");
e.printStackTrace();
}
}
@@ -13414,70 +15361,62 @@ public class SchemasApiExample {
-
+
import 'package:openapi/api.dart';
final api_instance = DefaultApi();
-final String accept = new String(); // String |
-final String domain = new String(); // String |
-final Integer offset = new Integer(); // Integer | Pagination offset.
-final Integer limit = new Integer(); // Integer | Result limiter.
+final String contentType = new String(); // String |
+final String groupId = new String(); // String |
+final UpdateGroupNamePayload updateGroupNamePayload = new UpdateGroupNamePayload(); // UpdateGroupNamePayload |
try {
- final result = await api_instance.getSchemas(accept, domain, offset, limit);
+ final result = await api_instance.updateGroupName(contentType, groupId, updateGroupNamePayload);
print(result);
} catch (e) {
- print('Exception when calling DefaultApi->getSchemas: $e\n');
+ print('Exception when calling DefaultApi->updateGroupName: $e\n');
}
-
- import org.openapitools.client.api.SchemasApi;
+
+ import org.openapitools.client.api.GroupsApi;
-public class SchemasApiExample {
+public class GroupsApiExample {
public static void main(String[] args) {
- SchemasApi apiInstance = new SchemasApi();
- String accept = application/json; // String |
- String domain = ran; // String |
- Integer offset = 56; // Integer | Pagination offset.
- Integer limit = 56; // Integer | Result limiter.
+ GroupsApi apiInstance = new GroupsApi();
+ String contentType = application/json; // String |
+ String groupId = groupId_example; // String |
+ UpdateGroupNamePayload updateGroupNamePayload = ; // UpdateGroupNamePayload |
try {
- SchemaList result = apiInstance.getSchemas(accept, domain, offset, limit);
- System.out.println(result);
+ apiInstance.updateGroupName(contentType, groupId, updateGroupNamePayload);
} catch (ApiException e) {
- System.err.println("Exception when calling SchemasApi#getSchemas");
+ System.err.println("Exception when calling GroupsApi#updateGroupName");
e.printStackTrace();
}
}
}
-
+
// Create an instance of the API class
-SchemasApi *apiInstance = [[SchemasApi alloc] init];
-String *accept = application/json; // (default to application/json)
-String *domain = ran; // (optional) (default to null)
-Integer *offset = 56; // Pagination offset. (optional) (default to 0)
-Integer *limit = 56; // Result limiter. (optional) (default to 500)
+GroupsApi *apiInstance = [[GroupsApi alloc] init];
+String *contentType = application/json; // (default to application/json)
+String *groupId = groupId_example; // (default to null)
+UpdateGroupNamePayload *updateGroupNamePayload = ; //
-// Get a list of all schemas.
-[apiInstance getSchemasWith:accept
- domain:domain
- offset:offset
- limit:limit
- completionHandler: ^(SchemaList output, NSError* error) {
- if (output) {
- NSLog(@"%@", output);
- }
+// Update the name of a group.
+[apiInstance updateGroupNameWith:contentType
+ groupId:groupId
+ updateGroupNamePayload:updateGroupNamePayload
+ completionHandler: ^(NSError* error) {
if (error) {
NSLog(@"Error: %@", error);
}
@@ -13485,33 +15424,30 @@ Integer *limit = 56; // Result limiter. (optional) (default to 500)
-
+
var TopologyExposureAndInventoryApi = require('topology_exposure_and_inventory_api');
// Create an instance of the API class
-var api = new TopologyExposureAndInventoryApi.SchemasApi()
-var accept = application/json; // {String}
-var opts = {
- 'domain': ran, // {String}
- 'offset': 56, // {Integer} Pagination offset.
- 'limit': 56 // {Integer} Result limiter.
-};
+var api = new TopologyExposureAndInventoryApi.GroupsApi()
+var contentType = application/json; // {String}
+var groupId = groupId_example; // {String}
+var updateGroupNamePayload = ; // {UpdateGroupNamePayload}
var callback = function(error, data, response) {
if (error) {
console.error(error);
} else {
- console.log('API called successfully. Returned data: ' + data);
+ console.log('API called successfully.');
}
};
-api.getSchemas(accept, opts, callback);
+api.updateGroupName(contentType, groupId, updateGroupNamePayload, callback);
-
-
+
using System;
using System.Diagnostics;
using Org.OpenAPITools.Api;
@@ -13520,24 +15456,22 @@ using Org.OpenAPITools.Model;
namespace Example
{
- public class getSchemasExample
+ public class updateGroupNameExample
{
public void main()
{
// Create an instance of the API class
- var apiInstance = new SchemasApi();
- var accept = application/json; // String | (default to application/json)
- var domain = ran; // String | (optional) (default to null)
- var offset = 56; // Integer | Pagination offset. (optional) (default to 0)
- var limit = 56; // Integer | Result limiter. (optional) (default to 500)
+ var apiInstance = new GroupsApi();
+ var contentType = application/json; // String | (default to application/json)
+ var groupId = groupId_example; // String | (default to null)
+ var updateGroupNamePayload = new UpdateGroupNamePayload(); // UpdateGroupNamePayload |
try {
- // Get a list of all schemas.
- SchemaList result = apiInstance.getSchemas(accept, domain, offset, limit);
- Debug.WriteLine(result);
+ // Update the name of a group.
+ apiInstance.updateGroupName(contentType, groupId, updateGroupNamePayload);
} catch (Exception e) {
- Debug.Print("Exception when calling SchemasApi.getSchemas: " + e.Message );
+ Debug.Print("Exception when calling GroupsApi.updateGroupName: " + e.Message );
}
}
}
@@ -13545,48 +15479,44 @@ namespace Example
-
+
<?php
require_once(__DIR__ . '/vendor/autoload.php');
// Create an instance of the API class
-$api_instance = new OpenAPITools\Client\Api\SchemasApi();
-$accept = application/json; // String |
-$domain = ran; // String |
-$offset = 56; // Integer | Pagination offset.
-$limit = 56; // Integer | Result limiter.
+$api_instance = new OpenAPITools\Client\Api\GroupsApi();
+$contentType = application/json; // String |
+$groupId = groupId_example; // String |
+$updateGroupNamePayload = ; // UpdateGroupNamePayload |
try {
- $result = $api_instance->getSchemas($accept, $domain, $offset, $limit);
- print_r($result);
+ $api_instance->updateGroupName($contentType, $groupId, $updateGroupNamePayload);
} catch (Exception $e) {
- echo 'Exception when calling SchemasApi->getSchemas: ', $e->getMessage(), PHP_EOL;
+ echo 'Exception when calling GroupsApi->updateGroupName: ', $e->getMessage(), PHP_EOL;
}
?>
-
+
use Data::Dumper;
use WWW::OPenAPIClient::Configuration;
-use WWW::OPenAPIClient::SchemasApi;
+use WWW::OPenAPIClient::GroupsApi;
# Create an instance of the API class
-my $api_instance = WWW::OPenAPIClient::SchemasApi->new();
-my $accept = application/json; # String |
-my $domain = ran; # String |
-my $offset = 56; # Integer | Pagination offset.
-my $limit = 56; # Integer | Result limiter.
+my $api_instance = WWW::OPenAPIClient::GroupsApi->new();
+my $contentType = application/json; # String |
+my $groupId = groupId_example; # String |
+my $updateGroupNamePayload = WWW::OPenAPIClient::Object::UpdateGroupNamePayload->new(); # UpdateGroupNamePayload |
eval {
- my $result = $api_instance->getSchemas(accept => $accept, domain => $domain, offset => $offset, limit => $limit);
- print Dumper($result);
+ $api_instance->updateGroupName(contentType => $contentType, groupId => $groupId, updateGroupNamePayload => $updateGroupNamePayload);
};
if ($@) {
- warn "Exception when calling SchemasApi->getSchemas: $@\n";
+ warn "Exception when calling GroupsApi->updateGroupName: $@\n";
}
-
+
from __future__ import print_statement
import time
import openapi_client
@@ -13594,31 +15524,28 @@ from openapi_client.rest import ApiException
from pprint import pprint
# Create an instance of the API class
-api_instance = openapi_client.SchemasApi()
-accept = application/json # String | (default to application/json)
-domain = ran # String | (optional) (default to null)
-offset = 56 # Integer | Pagination offset. (optional) (default to 0)
-limit = 56 # Integer | Result limiter. (optional) (default to 500)
+api_instance = openapi_client.GroupsApi()
+contentType = application/json # String | (default to application/json)
+groupId = groupId_example # String | (default to null)
+updateGroupNamePayload = # UpdateGroupNamePayload |
try:
- # Get a list of all schemas.
- api_response = api_instance.get_schemas(accept, domain=domain, offset=offset, limit=limit)
- pprint(api_response)
+ # Update the name of a group.
+ api_instance.update_group_name(contentType, groupId, updateGroupNamePayload)
except ApiException as e:
- print("Exception when calling SchemasApi->getSchemas: %s\n" % e)
+ print("Exception when calling GroupsApi->updateGroupName: %s\n" % e)
-
- extern crate SchemasApi;
+
+ extern crate GroupsApi;
pub fn main() {
- let accept = application/json; // String
- let domain = ran; // String
- let offset = 56; // Integer
- let limit = 56; // Integer
+ let contentType = application/json; // String
+ let groupId = groupId_example; // String
+ let updateGroupNamePayload = ; // UpdateGroupNamePayload
- let mut context = SchemasApi::Context::default();
- let result = client.getSchemas(accept, domain, offset, limit, &context).wait();
+ let mut context = GroupsApi::Context::default();
+ let result = client.updateGroupName(contentType, groupId, updateGroupNamePayload, &context).wait();
println!("{:?}", result);
}
@@ -13633,95 +15560,55 @@ pub fn main() {
Parameters
-
- Header parameters
-
-
- | Name |
- Description |
-
- | Accept* |
-
-
-
-
-
-
-
- String
-
-
-
-
- Required
-
-
-
- |
-
-
-
-
-
-
- Query parameters
+ Path parameters
-
- | Name |
- Description |
-
- | domain |
+
+ | Name |
+ Description |
+
+ | groupId* |
- |
-
-
- | offset |
-
-
-
-
-
-
-
- Integer
-
-
-
-Pagination offset.
-
+
+
+
+ Required
+
|
- | limit |
+
+
+ Header parameters
+
+
+ | Name |
+ Description |
+
+ | Content-Type* |
-
+
- Integer
+ String
-
-Result limiter.
-
+
+ Required
+
|
@@ -13729,132 +15616,91 @@ Result limiter.
- Responses
-
-
-
-
-
-
-
-
-
-
-
+ var schema = findNode('schema',schemaWrapper).schema;
+ if (!schema) {
+ schema = schemaWrapper.schema;
+ }
+ if (schema.$ref != null) {
+ schema = defsParser.$refs.get(schema.$ref);
+ } else if (schema.items != null && schema.items.$ref != null) {
+ schema.items = defsParser.$refs.get(schema.items.$ref);
+ } else {
+ schemaWrapper.definitions = Object.assign({}, defs);
+ $RefParser.dereference(schemaWrapper).catch(function(err) {
+ console.log(err);
+ });
+ }
+
+ var view = new JSONSchemaView(schema,2,{isBodyParam: true});
+ var result = $('#d2e199_updateGroupName_updateGroupNamePayload');
+ result.empty();
+ result.append(view.render());
+});
+
+
+
|
+
+
+
+
+
+
+ Responses
+
+
-
- -
- Schema
-
-
-
+
-
-
-
+
-
-
+
+
-
+
-
-
-
+
-
-
+
+
-
+
-
-
-
+
-
-
+
+
-
+
-
-
-
-
-
- TopologyGroups
-
-
+
+
- createGroup
- Create group.
+ updateProvidedMembers
+ Merge or remove members of a static group.
- Create group.
+ Merge or remove members in an existing topology group. This operation is applicable for static group only.
- /groups
+ /groups/{groupId}/provided-members-operations
Usage and SDK Samples
-
+
curl -X POST \
- -H "Accept: application/json,application/problem+json" \
+ -H "Accept: application/problem+json" \
-H "Content-Type: application/json" \
- "https://localhost/topology-inventory/v1alpha11/groups" \
+ "https://localhost/topology-inventory/v1alpha11/groups/{groupId}/provided-members-operations" \
-d '{
- "groupName" : "groupName",
- "criteria" : {
- "resourceInstances" : [ "resourceInstances", "resourceInstances" ]
- }
+ "providedMembers" : [ "{}", "{}" ],
+ "operation" : "merge"
}'
-
+
import org.openapitools.client.*;
import org.openapitools.client.auth.*;
import org.openapitools.client.model.*;
-import org.openapitools.client.api.TopologyGroupsApi;
+import org.openapitools.client.api.GroupsApi;
import java.io.File;
import java.util.*;
-public class TopologyGroupsApiExample {
+public class GroupsApiExample {
public static void main(String[] args) {
// Create an instance of the API class
- TopologyGroupsApi apiInstance = new TopologyGroupsApi();
+ GroupsApi apiInstance = new GroupsApi();
String accept = application/json; // String |
String contentType = application/json; // String |
- Group group = ; // Group |
+ String groupId = groupId_example; // String |
+ UpdateProvidedMembersPayload updateProvidedMembersPayload = ; // UpdateProvidedMembersPayload |
try {
- GroupResponse result = apiInstance.createGroup(accept, contentType, group);
- System.out.println(result);
+ apiInstance.updateProvidedMembers(accept, contentType, groupId, updateProvidedMembersPayload);
} catch (ApiException e) {
- System.err.println("Exception when calling TopologyGroupsApi#createGroup");
+ System.err.println("Exception when calling GroupsApi#updateProvidedMembers");
e.printStackTrace();
}
}
@@ -14217,66 +16058,66 @@ public class TopologyGroupsApiExample {
-
+
import 'package:openapi/api.dart';
final api_instance = DefaultApi();
final String accept = new String(); // String |
final String contentType = new String(); // String |
-final Group group = new Group(); // Group |
+final String groupId = new String(); // String |
+final UpdateProvidedMembersPayload updateProvidedMembersPayload = new UpdateProvidedMembersPayload(); // UpdateProvidedMembersPayload |
try {
- final result = await api_instance.createGroup(accept, contentType, group);
+ final result = await api_instance.updateProvidedMembers(accept, contentType, groupId, updateProvidedMembersPayload);
print(result);
} catch (e) {
- print('Exception when calling DefaultApi->createGroup: $e\n');
+ print('Exception when calling DefaultApi->updateProvidedMembers: $e\n');
}
-
- import org.openapitools.client.api.TopologyGroupsApi;
+
+ import org.openapitools.client.api.GroupsApi;
-public class TopologyGroupsApiExample {
+public class GroupsApiExample {
public static void main(String[] args) {
- TopologyGroupsApi apiInstance = new TopologyGroupsApi();
+ GroupsApi apiInstance = new GroupsApi();
String accept = application/json; // String |
String contentType = application/json; // String |
- Group group = ; // Group |
+ String groupId = groupId_example; // String |
+ UpdateProvidedMembersPayload updateProvidedMembersPayload = ; // UpdateProvidedMembersPayload |
try {
- GroupResponse result = apiInstance.createGroup(accept, contentType, group);
- System.out.println(result);
+ apiInstance.updateProvidedMembers(accept, contentType, groupId, updateProvidedMembersPayload);
} catch (ApiException e) {
- System.err.println("Exception when calling TopologyGroupsApi#createGroup");
+ System.err.println("Exception when calling GroupsApi#updateProvidedMembers");
e.printStackTrace();
}
}
}
-
+
// Create an instance of the API class
-TopologyGroupsApi *apiInstance = [[TopologyGroupsApi alloc] init];
+GroupsApi *apiInstance = [[GroupsApi alloc] init];
String *accept = application/json; // (default to application/json)
String *contentType = application/json; // (default to application/json)
-Group *group = ; //
+String *groupId = groupId_example; // (default to null)
+UpdateProvidedMembersPayload *updateProvidedMembersPayload = ; //
-// Create group.
-[apiInstance createGroupWith:accept
+// Merge or remove members of a static group.
+[apiInstance updateProvidedMembersWith:accept
contentType:contentType
- group:group
- completionHandler: ^(GroupResponse output, NSError* error) {
- if (output) {
- NSLog(@"%@", output);
- }
+ groupId:groupId
+ updateProvidedMembersPayload:updateProvidedMembersPayload
+ completionHandler: ^(NSError* error) {
if (error) {
NSLog(@"Error: %@", error);
}
@@ -14284,30 +16125,31 @@ Group *group = ; //
-
+
var TopologyExposureAndInventoryApi = require('topology_exposure_and_inventory_api');
// Create an instance of the API class
-var api = new TopologyExposureAndInventoryApi.TopologyGroupsApi()
+var api = new TopologyExposureAndInventoryApi.GroupsApi()
var accept = application/json; // {String}
var contentType = application/json; // {String}
-var group = ; // {Group}
+var groupId = groupId_example; // {String}
+var updateProvidedMembersPayload = ; // {UpdateProvidedMembersPayload}
var callback = function(error, data, response) {
if (error) {
console.error(error);
} else {
- console.log('API called successfully. Returned data: ' + data);
+ console.log('API called successfully.');
}
};
-api.createGroup(accept, contentType, group, callback);
+api.updateProvidedMembers(accept, contentType, groupId, updateProvidedMembersPayload, callback);
-
-
+
using System;
using System.Diagnostics;
using Org.OpenAPITools.Api;
@@ -14316,23 +16158,23 @@ using Org.OpenAPITools.Model;
namespace Example
{
- public class createGroupExample
+ public class updateProvidedMembersExample
{
public void main()
{
// Create an instance of the API class
- var apiInstance = new TopologyGroupsApi();
+ var apiInstance = new GroupsApi();
var accept = application/json; // String | (default to application/json)
var contentType = application/json; // String | (default to application/json)
- var group = new Group(); // Group |
+ var groupId = groupId_example; // String | (default to null)
+ var updateProvidedMembersPayload = new UpdateProvidedMembersPayload(); // UpdateProvidedMembersPayload |
try {
- // Create group.
- GroupResponse result = apiInstance.createGroup(accept, contentType, group);
- Debug.WriteLine(result);
+ // Merge or remove members of a static group.
+ apiInstance.updateProvidedMembers(accept, contentType, groupId, updateProvidedMembersPayload);
} catch (Exception e) {
- Debug.Print("Exception when calling TopologyGroupsApi.createGroup: " + e.Message );
+ Debug.Print("Exception when calling GroupsApi.updateProvidedMembers: " + e.Message );
}
}
}
@@ -14340,46 +16182,46 @@ namespace Example
-
+
<?php
require_once(__DIR__ . '/vendor/autoload.php');
// Create an instance of the API class
-$api_instance = new OpenAPITools\Client\Api\TopologyGroupsApi();
+$api_instance = new OpenAPITools\Client\Api\GroupsApi();
$accept = application/json; // String |
$contentType = application/json; // String |
-$group = ; // Group |
+$groupId = groupId_example; // String |
+$updateProvidedMembersPayload = ; // UpdateProvidedMembersPayload |
try {
- $result = $api_instance->createGroup($accept, $contentType, $group);
- print_r($result);
+ $api_instance->updateProvidedMembers($accept, $contentType, $groupId, $updateProvidedMembersPayload);
} catch (Exception $e) {
- echo 'Exception when calling TopologyGroupsApi->createGroup: ', $e->getMessage(), PHP_EOL;
+ echo 'Exception when calling GroupsApi->updateProvidedMembers: ', $e->getMessage(), PHP_EOL;
}
?>
-
+
use Data::Dumper;
use WWW::OPenAPIClient::Configuration;
-use WWW::OPenAPIClient::TopologyGroupsApi;
+use WWW::OPenAPIClient::GroupsApi;
# Create an instance of the API class
-my $api_instance = WWW::OPenAPIClient::TopologyGroupsApi->new();
+my $api_instance = WWW::OPenAPIClient::GroupsApi->new();
my $accept = application/json; # String |
my $contentType = application/json; # String |
-my $group = WWW::OPenAPIClient::Object::Group->new(); # Group |
+my $groupId = groupId_example; # String |
+my $updateProvidedMembersPayload = WWW::OPenAPIClient::Object::UpdateProvidedMembersPayload->new(); # UpdateProvidedMembersPayload |
eval {
- my $result = $api_instance->createGroup(accept => $accept, contentType => $contentType, group => $group);
- print Dumper($result);
+ $api_instance->updateProvidedMembers(accept => $accept, contentType => $contentType, groupId => $groupId, updateProvidedMembersPayload => $updateProvidedMembersPayload);
};
if ($@) {
- warn "Exception when calling TopologyGroupsApi->createGroup: $@\n";
+ warn "Exception when calling GroupsApi->updateProvidedMembers: $@\n";
}
-
+
from __future__ import print_statement
import time
import openapi_client
@@ -14387,29 +16229,30 @@ from openapi_client.rest import ApiException
from pprint import pprint
# Create an instance of the API class
-api_instance = openapi_client.TopologyGroupsApi()
+api_instance = openapi_client.GroupsApi()
accept = application/json # String | (default to application/json)
contentType = application/json # String | (default to application/json)
-group = # Group |
+groupId = groupId_example # String | (default to null)
+updateProvidedMembersPayload = # UpdateProvidedMembersPayload |
try:
- # Create group.
- api_response = api_instance.create_group(accept, contentType, group)
- pprint(api_response)
+ # Merge or remove members of a static group.
+ api_instance.update_provided_members(accept, contentType, groupId, updateProvidedMembersPayload)
except ApiException as e:
- print("Exception when calling TopologyGroupsApi->createGroup: %s\n" % e)
+ print("Exception when calling GroupsApi->updateProvidedMembers: %s\n" % e)
-
- extern crate TopologyGroupsApi;
+
+ extern crate GroupsApi;
pub fn main() {
let accept = application/json; // String
let contentType = application/json; // String
- let group = ; // Group
+ let groupId = groupId_example; // String
+ let updateProvidedMembersPayload = ; // UpdateProvidedMembersPayload
- let mut context = TopologyGroupsApi::Context::default();
- let result = client.createGroup(accept, contentType, group, &context).wait();
+ let mut context = GroupsApi::Context::default();
+ let result = client.updateProvidedMembers(accept, contentType, groupId, updateProvidedMembersPayload, &context).wait();
println!("{:?}", result);
}
@@ -14424,6 +16267,33 @@ pub fn main() {
Parameters
+ Path parameters
+
+
+ | Name |
+ Description |
+
+ | groupId* |
+
+
+
+
+
+
+
+ String
+
+
+
+
+ Required
+
+
+
+ |
+
+
+
Header parameters
@@ -14435,7 +16305,7 @@ pub fn main() {
-
+
@@ -14455,7 +16325,7 @@ pub fn main() {
-
+
@@ -14479,7 +16349,7 @@ pub fn main() {
| Name |
Description |
- | group * |
+ | updateProvidedMembersPayload * |
-
- |
-
-
- | |
-
-
-
- Responses
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+ var schema = findNode('schema',schemaWrapper).schema;
+ if (!schema) {
+ schema = schemaWrapper.schema;
+ }
+ if (schema.$ref != null) {
+ schema = defsParser.$refs.get(schema.$ref);
+ } else if (schema.items != null && schema.items.$ref != null) {
+ schema.items = defsParser.$refs.get(schema.items.$ref);
+ } else {
+ schemaWrapper.definitions = Object.assign({}, defs);
+ $RefParser.dereference(schemaWrapper).catch(function(err) {
+ console.log(err);
+ });
+ }
+
+ var view = new JSONSchemaView(schema,2,{isBodyParam: true});
+ var result = $('#d2e199_updateProvidedMembers_updateProvidedMembersPayload');
+ result.empty();
+ result.append(view.render());
+});
+
+
+
|
+ |
+
+
+
+
+
+ Responses
+
+
-
- -
- Schema
-
-
-
+
-
-
-
+
-
-
+
+
-
+
-
- Schema
+ Schema
@@ -14882,22 +16493,22 @@ $(document).ready(function() {
-
-
-
+
-
-
+
+
-
+
-
- Schema
+ Schema
@@ -14963,9 +16574,9 @@ $(document).ready(function() {
-
-
-
-
-
+
+
+ Schemas
+
+
- deleteGroup
- Delete a group with specified id.
+ createSchema
+ Create a new schema.
- Delete a group with specified id.
+ Create a new schema. The request body contains the schema in YANG format.
- /groups/{groupId}
+ /schemas
Usage and SDK Samples
-
- curl -X DELETE \
+
+ curl -X POST \
-H "Accept: application/problem+json" \
- "https://localhost/topology-inventory/v1alpha11/groups/{groupId}"
+ -H "Content-Type: multipart/form-data" \
+ "https://localhost/topology-inventory/v1alpha11/schemas"
-
+
import org.openapitools.client.*;
import org.openapitools.client.auth.*;
import org.openapitools.client.model.*;
-import org.openapitools.client.api.TopologyGroupsApi;
+import org.openapitools.client.api.SchemasApi;
import java.io.File;
import java.util.*;
-public class TopologyGroupsApiExample {
+public class SchemasApiExample {
public static void main(String[] args) {
// Create an instance of the API class
- TopologyGroupsApi apiInstance = new TopologyGroupsApi();
+ SchemasApi apiInstance = new SchemasApi();
String accept = application/json; // String |
- String groupId = groupId_example; // String |
+ String contentType = multipart/form-data; // String |
+ File file = BINARY_DATA_HERE; // File | multipartFile
try {
- apiInstance.deleteGroup(accept, groupId);
+ apiInstance.createSchema(accept, contentType, file);
} catch (ApiException e) {
- System.err.println("Exception when calling TopologyGroupsApi#deleteGroup");
+ System.err.println("Exception when calling SchemasApi#createSchema");
e.printStackTrace();
}
}
@@ -15089,57 +16705,61 @@ public class TopologyGroupsApiExample {
-
+
import 'package:openapi/api.dart';
final api_instance = DefaultApi();
final String accept = new String(); // String |
-final String groupId = new String(); // String |
+final String contentType = new String(); // String |
+final File file = new File(); // File | multipartFile
try {
- final result = await api_instance.deleteGroup(accept, groupId);
+ final result = await api_instance.createSchema(accept, contentType, file);
print(result);
} catch (e) {
- print('Exception when calling DefaultApi->deleteGroup: $e\n');
+ print('Exception when calling DefaultApi->createSchema: $e\n');
}
-
- import org.openapitools.client.api.TopologyGroupsApi;
+
+ import org.openapitools.client.api.SchemasApi;
-public class TopologyGroupsApiExample {
+public class SchemasApiExample {
public static void main(String[] args) {
- TopologyGroupsApi apiInstance = new TopologyGroupsApi();
+ SchemasApi apiInstance = new SchemasApi();
String accept = application/json; // String |
- String groupId = groupId_example; // String |
+ String contentType = multipart/form-data; // String |
+ File file = BINARY_DATA_HERE; // File | multipartFile
try {
- apiInstance.deleteGroup(accept, groupId);
+ apiInstance.createSchema(accept, contentType, file);
} catch (ApiException e) {
- System.err.println("Exception when calling TopologyGroupsApi#deleteGroup");
+ System.err.println("Exception when calling SchemasApi#createSchema");
e.printStackTrace();
}
}
}
-
+
// Create an instance of the API class
-TopologyGroupsApi *apiInstance = [[TopologyGroupsApi alloc] init];
+SchemasApi *apiInstance = [[SchemasApi alloc] init];
String *accept = application/json; // (default to application/json)
-String *groupId = groupId_example; // (default to null)
+String *contentType = multipart/form-data; // (default to multipart/form-data)
+File *file = BINARY_DATA_HERE; // multipartFile (default to null)
-// Delete a group with specified id.
-[apiInstance deleteGroupWith:accept
- groupId:groupId
+// Create a new schema.
+[apiInstance createSchemaWith:accept
+ contentType:contentType
+ file:file
completionHandler: ^(NSError* error) {
if (error) {
NSLog(@"Error: %@", error);
@@ -15148,13 +16768,14 @@ String *groupId = groupId_example; // (default to null)
-
+
var TopologyExposureAndInventoryApi = require('topology_exposure_and_inventory_api');
// Create an instance of the API class
-var api = new TopologyExposureAndInventoryApi.TopologyGroupsApi()
+var api = new TopologyExposureAndInventoryApi.SchemasApi()
var accept = application/json; // {String}
-var groupId = groupId_example; // {String}
+var contentType = multipart/form-data; // {String}
+var file = BINARY_DATA_HERE; // {File} multipartFile
var callback = function(error, data, response) {
if (error) {
@@ -15163,14 +16784,14 @@ var callback = function(error, data, response) {
console.log('API called successfully.');
}
};
-api.deleteGroup(accept, groupId, callback);
+api.createSchema(accept, contentType, file, callback);
-
-
+
using System;
using System.Diagnostics;
using Org.OpenAPITools.Api;
@@ -15179,21 +16800,22 @@ using Org.OpenAPITools.Model;
namespace Example
{
- public class deleteGroupExample
+ public class createSchemaExample
{
public void main()
{
// Create an instance of the API class
- var apiInstance = new TopologyGroupsApi();
+ var apiInstance = new SchemasApi();
var accept = application/json; // String | (default to application/json)
- var groupId = groupId_example; // String | (default to null)
+ var contentType = multipart/form-data; // String | (default to multipart/form-data)
+ var file = BINARY_DATA_HERE; // File | multipartFile (default to null)
try {
- // Delete a group with specified id.
- apiInstance.deleteGroup(accept, groupId);
+ // Create a new schema.
+ apiInstance.createSchema(accept, contentType, file);
} catch (Exception e) {
- Debug.Print("Exception when calling TopologyGroupsApi.deleteGroup: " + e.Message );
+ Debug.Print("Exception when calling SchemasApi.createSchema: " + e.Message );
}
}
}
@@ -15201,42 +16823,44 @@ namespace Example
-
+
<?php
require_once(__DIR__ . '/vendor/autoload.php');
// Create an instance of the API class
-$api_instance = new OpenAPITools\Client\Api\TopologyGroupsApi();
+$api_instance = new OpenAPITools\Client\Api\SchemasApi();
$accept = application/json; // String |
-$groupId = groupId_example; // String |
+$contentType = multipart/form-data; // String |
+$file = BINARY_DATA_HERE; // File | multipartFile
try {
- $api_instance->deleteGroup($accept, $groupId);
+ $api_instance->createSchema($accept, $contentType, $file);
} catch (Exception $e) {
- echo 'Exception when calling TopologyGroupsApi->deleteGroup: ', $e->getMessage(), PHP_EOL;
+ echo 'Exception when calling SchemasApi->createSchema: ', $e->getMessage(), PHP_EOL;
}
?>
-
+
use Data::Dumper;
use WWW::OPenAPIClient::Configuration;
-use WWW::OPenAPIClient::TopologyGroupsApi;
+use WWW::OPenAPIClient::SchemasApi;
# Create an instance of the API class
-my $api_instance = WWW::OPenAPIClient::TopologyGroupsApi->new();
+my $api_instance = WWW::OPenAPIClient::SchemasApi->new();
my $accept = application/json; # String |
-my $groupId = groupId_example; # String |
+my $contentType = multipart/form-data; # String |
+my $file = BINARY_DATA_HERE; # File | multipartFile
eval {
- $api_instance->deleteGroup(accept => $accept, groupId => $groupId);
+ $api_instance->createSchema(accept => $accept, contentType => $contentType, file => $file);
};
if ($@) {
- warn "Exception when calling TopologyGroupsApi->deleteGroup: $@\n";
+ warn "Exception when calling SchemasApi->createSchema: $@\n";
}
-
+
from __future__ import print_statement
import time
import openapi_client
@@ -15244,26 +16868,28 @@ from openapi_client.rest import ApiException
from pprint import pprint
# Create an instance of the API class
-api_instance = openapi_client.TopologyGroupsApi()
+api_instance = openapi_client.SchemasApi()
accept = application/json # String | (default to application/json)
-groupId = groupId_example # String | (default to null)
+contentType = multipart/form-data # String | (default to multipart/form-data)
+file = BINARY_DATA_HERE # File | multipartFile (default to null)
try:
- # Delete a group with specified id.
- api_instance.delete_group(accept, groupId)
+ # Create a new schema.
+ api_instance.create_schema(accept, contentType, file)
except ApiException as e:
- print("Exception when calling TopologyGroupsApi->deleteGroup: %s\n" % e)
+ print("Exception when calling SchemasApi->createSchema: %s\n" % e)
-
- extern crate TopologyGroupsApi;
+
+ extern crate SchemasApi;
pub fn main() {
let accept = application/json; // String
- let groupId = groupId_example; // String
+ let contentType = multipart/form-data; // String
+ let file = BINARY_DATA_HERE; // File
- let mut context = TopologyGroupsApi::Context::default();
- let result = client.deleteGroup(accept, groupId, &context).wait();
+ let mut context = SchemasApi::Context::default();
+ let result = client.createSchema(accept, contentType, file, &context).wait();
println!("{:?}", result);
}
@@ -15278,17 +16904,38 @@ pub fn main() {
Parameters
- Path parameters
+
+ Header parameters
-
- | Name |
- Description |
-
- | groupId* |
+
+ | Name |
+ Description |
+
+ | Accept* |
-
+
+
+
+
+ String
+
+
+
+
+ Required
+
+
+
+ |
+
+
+ | Content-Type* |
+
+
+
+
@@ -15306,23 +16953,30 @@ pub fn main() {
|
- Header parameters
+
+ Form parameters
| Name |
Description |
- | Accept* |
+ | file* |
-
+
- String
+ File
+
+ (binary)
+
+
+multipartFile
+
Required
@@ -15335,37 +16989,34 @@ pub fn main() {
|
-
-
Responses
-
-
+
+
-
+
-
-
-
+
-
-
+
+
-
+
-
-
-
+
-
-
+
+
-
+
-
-
-
+
-
-
+
+
-
+
-
-
-
+
-
-
+
+
-
+
-
-
-
+
-
-
+
+
-
+
-
-
-
-
-
+
+
- getAllGroups
- Get all groups.
+ deleteSchema
+ Delete a schema.
- Get all groups.
+ Delete a schema.
- /groups
+ /schemas/{schemaName}
Usage and SDK Samples
-
- curl -X GET \
- -H "Accept: application/json,application/problem+json" \
- "https://localhost/topology-inventory/v1alpha11/groups?offset=56&limit=56"
+
+ curl -X DELETE \
+ -H "Accept: application/problem+json" \
+ "https://localhost/topology-inventory/v1alpha11/schemas/{schemaName}"
-
+
import org.openapitools.client.*;
import org.openapitools.client.auth.*;
import org.openapitools.client.model.*;
-import org.openapitools.client.api.TopologyGroupsApi;
+import org.openapitools.client.api.SchemasApi;
import java.io.File;
import java.util.*;
-public class TopologyGroupsApiExample {
+public class SchemasApiExample {
public static void main(String[] args) {
// Create an instance of the API class
- TopologyGroupsApi apiInstance = new TopologyGroupsApi();
+ SchemasApi apiInstance = new SchemasApi();
String accept = application/json; // String |
- Integer offset = 56; // Integer | Pagination offset.
- Integer limit = 56; // Integer | Result limiter.
+ String schemaName = schemaName_example; // String |
try {
- Groups result = apiInstance.getAllGroups(accept, offset, limit);
- System.out.println(result);
+ apiInstance.deleteSchema(accept, schemaName);
} catch (ApiException e) {
- System.err.println("Exception when calling TopologyGroupsApi#getAllGroups");
+ System.err.println("Exception when calling SchemasApi#deleteSchema");
e.printStackTrace();
}
}
@@ -15880,66 +17529,58 @@ public class TopologyGroupsApiExample {
-
+
import 'package:openapi/api.dart';
final api_instance = DefaultApi();
final String accept = new String(); // String |
-final Integer offset = new Integer(); // Integer | Pagination offset.
-final Integer limit = new Integer(); // Integer | Result limiter.
+final String schemaName = new String(); // String |
try {
- final result = await api_instance.getAllGroups(accept, offset, limit);
+ final result = await api_instance.deleteSchema(accept, schemaName);
print(result);
} catch (e) {
- print('Exception when calling DefaultApi->getAllGroups: $e\n');
+ print('Exception when calling DefaultApi->deleteSchema: $e\n');
}
-
- import org.openapitools.client.api.TopologyGroupsApi;
+
+ import org.openapitools.client.api.SchemasApi;
-public class TopologyGroupsApiExample {
+public class SchemasApiExample {
public static void main(String[] args) {
- TopologyGroupsApi apiInstance = new TopologyGroupsApi();
+ SchemasApi apiInstance = new SchemasApi();
String accept = application/json; // String |
- Integer offset = 56; // Integer | Pagination offset.
- Integer limit = 56; // Integer | Result limiter.
+ String schemaName = schemaName_example; // String |
try {
- Groups result = apiInstance.getAllGroups(accept, offset, limit);
- System.out.println(result);
+ apiInstance.deleteSchema(accept, schemaName);
} catch (ApiException e) {
- System.err.println("Exception when calling TopologyGroupsApi#getAllGroups");
+ System.err.println("Exception when calling SchemasApi#deleteSchema");
e.printStackTrace();
}
}
}
-
+
// Create an instance of the API class
-TopologyGroupsApi *apiInstance = [[TopologyGroupsApi alloc] init];
+SchemasApi *apiInstance = [[SchemasApi alloc] init];
String *accept = application/json; // (default to application/json)
-Integer *offset = 56; // Pagination offset. (optional) (default to 0)
-Integer *limit = 56; // Result limiter. (optional) (default to 500)
+String *schemaName = schemaName_example; // (default to o-ran-smo-teiv-ran)
-// Get all groups.
-[apiInstance getAllGroupsWith:accept
- offset:offset
- limit:limit
- completionHandler: ^(Groups output, NSError* error) {
- if (output) {
- NSLog(@"%@", output);
- }
+// Delete a schema.
+[apiInstance deleteSchemaWith:accept
+ schemaName:schemaName
+ completionHandler: ^(NSError* error) {
if (error) {
NSLog(@"Error: %@", error);
}
@@ -15947,32 +17588,29 @@ Integer *limit = 56; // Result limiter. (optional) (default to 500)
-
+
var TopologyExposureAndInventoryApi = require('topology_exposure_and_inventory_api');
// Create an instance of the API class
-var api = new TopologyExposureAndInventoryApi.TopologyGroupsApi()
+var api = new TopologyExposureAndInventoryApi.SchemasApi()
var accept = application/json; // {String}
-var opts = {
- 'offset': 56, // {Integer} Pagination offset.
- 'limit': 56 // {Integer} Result limiter.
-};
+var schemaName = schemaName_example; // {String}
var callback = function(error, data, response) {
if (error) {
console.error(error);
} else {
- console.log('API called successfully. Returned data: ' + data);
+ console.log('API called successfully.');
}
};
-api.getAllGroups(accept, opts, callback);
+api.deleteSchema(accept, schemaName, callback);
-
-
+
using System;
using System.Diagnostics;
using Org.OpenAPITools.Api;
@@ -15981,23 +17619,21 @@ using Org.OpenAPITools.Model;
namespace Example
{
- public class getAllGroupsExample
+ public class deleteSchemaExample
{
public void main()
{
// Create an instance of the API class
- var apiInstance = new TopologyGroupsApi();
+ var apiInstance = new SchemasApi();
var accept = application/json; // String | (default to application/json)
- var offset = 56; // Integer | Pagination offset. (optional) (default to 0)
- var limit = 56; // Integer | Result limiter. (optional) (default to 500)
+ var schemaName = schemaName_example; // String | (default to o-ran-smo-teiv-ran)
try {
- // Get all groups.
- Groups result = apiInstance.getAllGroups(accept, offset, limit);
- Debug.WriteLine(result);
+ // Delete a schema.
+ apiInstance.deleteSchema(accept, schemaName);
} catch (Exception e) {
- Debug.Print("Exception when calling TopologyGroupsApi.getAllGroups: " + e.Message );
+ Debug.Print("Exception when calling SchemasApi.deleteSchema: " + e.Message );
}
}
}
@@ -16005,46 +17641,42 @@ namespace Example
-
+
<?php
require_once(__DIR__ . '/vendor/autoload.php');
// Create an instance of the API class
-$api_instance = new OpenAPITools\Client\Api\TopologyGroupsApi();
+$api_instance = new OpenAPITools\Client\Api\SchemasApi();
$accept = application/json; // String |
-$offset = 56; // Integer | Pagination offset.
-$limit = 56; // Integer | Result limiter.
+$schemaName = schemaName_example; // String |
try {
- $result = $api_instance->getAllGroups($accept, $offset, $limit);
- print_r($result);
+ $api_instance->deleteSchema($accept, $schemaName);
} catch (Exception $e) {
- echo 'Exception when calling TopologyGroupsApi->getAllGroups: ', $e->getMessage(), PHP_EOL;
+ echo 'Exception when calling SchemasApi->deleteSchema: ', $e->getMessage(), PHP_EOL;
}
?>
-
+
use Data::Dumper;
use WWW::OPenAPIClient::Configuration;
-use WWW::OPenAPIClient::TopologyGroupsApi;
+use WWW::OPenAPIClient::SchemasApi;
# Create an instance of the API class
-my $api_instance = WWW::OPenAPIClient::TopologyGroupsApi->new();
+my $api_instance = WWW::OPenAPIClient::SchemasApi->new();
my $accept = application/json; # String |
-my $offset = 56; # Integer | Pagination offset.
-my $limit = 56; # Integer | Result limiter.
+my $schemaName = schemaName_example; # String |
eval {
- my $result = $api_instance->getAllGroups(accept => $accept, offset => $offset, limit => $limit);
- print Dumper($result);
+ $api_instance->deleteSchema(accept => $accept, schemaName => $schemaName);
};
if ($@) {
- warn "Exception when calling TopologyGroupsApi->getAllGroups: $@\n";
+ warn "Exception when calling SchemasApi->deleteSchema: $@\n";
}
-
+
from __future__ import print_statement
import time
import openapi_client
@@ -16052,29 +17684,26 @@ from openapi_client.rest import ApiException
from pprint import pprint
# Create an instance of the API class
-api_instance = openapi_client.TopologyGroupsApi()
+api_instance = openapi_client.SchemasApi()
accept = application/json # String | (default to application/json)
-offset = 56 # Integer | Pagination offset. (optional) (default to 0)
-limit = 56 # Integer | Result limiter. (optional) (default to 500)
+schemaName = schemaName_example # String | (default to o-ran-smo-teiv-ran)
try:
- # Get all groups.
- api_response = api_instance.get_all_groups(accept, offset=offset, limit=limit)
- pprint(api_response)
+ # Delete a schema.
+ api_instance.delete_schema(accept, schemaName)
except ApiException as e:
- print("Exception when calling TopologyGroupsApi->getAllGroups: %s\n" % e)
+ print("Exception when calling SchemasApi->deleteSchema: %s\n" % e)
-
- extern crate TopologyGroupsApi;
+
+ extern crate SchemasApi;
pub fn main() {
let accept = application/json; // String
- let offset = 56; // Integer
- let limit = 56; // Integer
+ let schemaName = schemaName_example; // String
- let mut context = TopologyGroupsApi::Context::default();
- let result = client.getAllGroups(accept, offset, limit, &context).wait();
+ let mut context = SchemasApi::Context::default();
+ let result = client.deleteSchema(accept, schemaName, &context).wait();
println!("{:?}", result);
}
@@ -16089,18 +17718,17 @@ pub fn main() {
Parameters
-
- Header parameters
+ Path parameters
-
- | Name |
- Description |
-
- | Accept* |
+
+ | Name |
+ Description |
+
+ | schemaName* |
-
+
@@ -16116,51 +17744,29 @@ pub fn main() {
|
-
-
-
-
- Query parameters
-
-
- | Name |
- Description |
-
- | offset |
-
-
-
-
-
-
-
- Integer
-
-
-
-Pagination offset.
-
-
-
-
- |
-
+
- | limit |
+ Header parameters
+
+
+ | Name |
+ Description |
+
+ | Accept* |
-
+
- Integer
+ String
-
-Result limiter.
-
+
+ Required
+
|
@@ -16168,111 +17774,33 @@ Result limiter.
- Responses
-
-
-
-
-
-
-
-
-
+ Responses
+
+
-
+
-
-
-
+
-
-
+
+
-
+
-
-
-
+
-
-
+
+
-
+
-
-
-
+
-
-
+
+
-
+
-
-
-
+
-
-
+
+
-
+
-
-
-
-
-
+
+
- getGroup
- Get a group with specified id.
+ getSchemaByName
+ Get the model schema.
- Get a Group with specified id.
+ Get the model schema by name.
- /groups/{groupId}
+ /schemas/{schemaName}/content
Usage and SDK Samples
-
+
curl -X GET \
- -H "Accept: application/json,application/problem+json" \
- "https://localhost/topology-inventory/v1alpha11/groups/{groupId}"
+ -H "Accept: text/plain,application/problem+json" \
+ "https://localhost/topology-inventory/v1alpha11/schemas/{schemaName}/content"
-
+
import org.openapitools.client.*;
import org.openapitools.client.auth.*;
import org.openapitools.client.model.*;
-import org.openapitools.client.api.TopologyGroupsApi;
+import org.openapitools.client.api.SchemasApi;
import java.io.File;
import java.util.*;
-public class TopologyGroupsApiExample {
+public class SchemasApiExample {
public static void main(String[] args) {
// Create an instance of the API class
- TopologyGroupsApi apiInstance = new TopologyGroupsApi();
+ SchemasApi apiInstance = new SchemasApi();
String accept = application/json; // String |
- String groupId = groupId_example; // String |
+ String schemaName = schemaName_example; // String |
try {
- GroupResponse result = apiInstance.getGroup(accept, groupId);
+ 'String' result = apiInstance.getSchemaByName(accept, schemaName);
System.out.println(result);
} catch (ApiException e) {
- System.err.println("Exception when calling TopologyGroupsApi#getGroup");
+ System.err.println("Exception when calling SchemasApi#getSchemaByName");
e.printStackTrace();
}
}
@@ -16710,59 +18238,59 @@ public class TopologyGroupsApiExample {
-
+
import 'package:openapi/api.dart';
final api_instance = DefaultApi();
final String accept = new String(); // String |
-final String groupId = new String(); // String |
+final String schemaName = new String(); // String |
try {
- final result = await api_instance.getGroup(accept, groupId);
+ final result = await api_instance.getSchemaByName(accept, schemaName);
print(result);
} catch (e) {
- print('Exception when calling DefaultApi->getGroup: $e\n');
+ print('Exception when calling DefaultApi->getSchemaByName: $e\n');
}
-
- import org.openapitools.client.api.TopologyGroupsApi;
+
+ import org.openapitools.client.api.SchemasApi;
-public class TopologyGroupsApiExample {
+public class SchemasApiExample {
public static void main(String[] args) {
- TopologyGroupsApi apiInstance = new TopologyGroupsApi();
+ SchemasApi apiInstance = new SchemasApi();
String accept = application/json; // String |
- String groupId = groupId_example; // String |
+ String schemaName = schemaName_example; // String |
try {
- GroupResponse result = apiInstance.getGroup(accept, groupId);
+ 'String' result = apiInstance.getSchemaByName(accept, schemaName);
System.out.println(result);
} catch (ApiException e) {
- System.err.println("Exception when calling TopologyGroupsApi#getGroup");
+ System.err.println("Exception when calling SchemasApi#getSchemaByName");
e.printStackTrace();
}
}
}
-
+
// Create an instance of the API class
-TopologyGroupsApi *apiInstance = [[TopologyGroupsApi alloc] init];
+SchemasApi *apiInstance = [[SchemasApi alloc] init];
String *accept = application/json; // (default to application/json)
-String *groupId = groupId_example; // (default to null)
+String *schemaName = schemaName_example; // (default to o-ran-smo-teiv-ran)
-// Get a group with specified id.
-[apiInstance getGroupWith:accept
- groupId:groupId
- completionHandler: ^(GroupResponse output, NSError* error) {
+// Get the model schema.
+[apiInstance getSchemaByNameWith:accept
+ schemaName:schemaName
+ completionHandler: ^('String' output, NSError* error) {
if (output) {
NSLog(@"%@", output);
}
@@ -16773,13 +18301,13 @@ String *groupId = groupId_example; // (default to null)
-
+
var TopologyExposureAndInventoryApi = require('topology_exposure_and_inventory_api');
// Create an instance of the API class
-var api = new TopologyExposureAndInventoryApi.TopologyGroupsApi()
+var api = new TopologyExposureAndInventoryApi.SchemasApi()
var accept = application/json; // {String}
-var groupId = groupId_example; // {String}
+var schemaName = schemaName_example; // {String}
var callback = function(error, data, response) {
if (error) {
@@ -16788,14 +18316,14 @@ var callback = function(error, data, response) {
console.log('API called successfully. Returned data: ' + data);
}
};
-api.getGroup(accept, groupId, callback);
+api.getSchemaByName(accept, schemaName, callback);
-
-
+
using System;
using System.Diagnostics;
using Org.OpenAPITools.Api;
@@ -16804,22 +18332,22 @@ using Org.OpenAPITools.Model;
namespace Example
{
- public class getGroupExample
+ public class getSchemaByNameExample
{
public void main()
{
// Create an instance of the API class
- var apiInstance = new TopologyGroupsApi();
+ var apiInstance = new SchemasApi();
var accept = application/json; // String | (default to application/json)
- var groupId = groupId_example; // String | (default to null)
+ var schemaName = schemaName_example; // String | (default to o-ran-smo-teiv-ran)
try {
- // Get a group with specified id.
- GroupResponse result = apiInstance.getGroup(accept, groupId);
+ // Get the model schema.
+ 'String' result = apiInstance.getSchemaByName(accept, schemaName);
Debug.WriteLine(result);
} catch (Exception e) {
- Debug.Print("Exception when calling TopologyGroupsApi.getGroup: " + e.Message );
+ Debug.Print("Exception when calling SchemasApi.getSchemaByName: " + e.Message );
}
}
}
@@ -16827,44 +18355,44 @@ namespace Example
-
+
<?php
require_once(__DIR__ . '/vendor/autoload.php');
// Create an instance of the API class
-$api_instance = new OpenAPITools\Client\Api\TopologyGroupsApi();
+$api_instance = new OpenAPITools\Client\Api\SchemasApi();
$accept = application/json; // String |
-$groupId = groupId_example; // String |
+$schemaName = schemaName_example; // String |
try {
- $result = $api_instance->getGroup($accept, $groupId);
+ $result = $api_instance->getSchemaByName($accept, $schemaName);
print_r($result);
} catch (Exception $e) {
- echo 'Exception when calling TopologyGroupsApi->getGroup: ', $e->getMessage(), PHP_EOL;
+ echo 'Exception when calling SchemasApi->getSchemaByName: ', $e->getMessage(), PHP_EOL;
}
?>
-
+
use Data::Dumper;
use WWW::OPenAPIClient::Configuration;
-use WWW::OPenAPIClient::TopologyGroupsApi;
+use WWW::OPenAPIClient::SchemasApi;
# Create an instance of the API class
-my $api_instance = WWW::OPenAPIClient::TopologyGroupsApi->new();
+my $api_instance = WWW::OPenAPIClient::SchemasApi->new();
my $accept = application/json; # String |
-my $groupId = groupId_example; # String |
+my $schemaName = schemaName_example; # String |
eval {
- my $result = $api_instance->getGroup(accept => $accept, groupId => $groupId);
+ my $result = $api_instance->getSchemaByName(accept => $accept, schemaName => $schemaName);
print Dumper($result);
};
if ($@) {
- warn "Exception when calling TopologyGroupsApi->getGroup: $@\n";
+ warn "Exception when calling SchemasApi->getSchemaByName: $@\n";
}
-
+
from __future__ import print_statement
import time
import openapi_client
@@ -16872,27 +18400,27 @@ from openapi_client.rest import ApiException
from pprint import pprint
# Create an instance of the API class
-api_instance = openapi_client.TopologyGroupsApi()
+api_instance = openapi_client.SchemasApi()
accept = application/json # String | (default to application/json)
-groupId = groupId_example # String | (default to null)
+schemaName = schemaName_example # String | (default to o-ran-smo-teiv-ran)
try:
- # Get a group with specified id.
- api_response = api_instance.get_group(accept, groupId)
+ # Get the model schema.
+ api_response = api_instance.get_schema_by_name(accept, schemaName)
pprint(api_response)
except ApiException as e:
- print("Exception when calling TopologyGroupsApi->getGroup: %s\n" % e)
+ print("Exception when calling SchemasApi->getSchemaByName: %s\n" % e)
-
- extern crate TopologyGroupsApi;
+
+ extern crate SchemasApi;
pub fn main() {
let accept = application/json; // String
- let groupId = groupId_example; // String
+ let schemaName = schemaName_example; // String
- let mut context = TopologyGroupsApi::Context::default();
- let result = client.getGroup(accept, groupId, &context).wait();
+ let mut context = SchemasApi::Context::default();
+ let result = client.getSchemaByName(accept, schemaName, &context).wait();
println!("{:?}", result);
}
@@ -16913,11 +18441,11 @@ pub fn main() {
| Name |
Description |
- | groupId* |
+ | schemaName* |
-
+
@@ -16945,7 +18473,7 @@ pub fn main() {
-
+
@@ -16967,23 +18495,23 @@ pub fn main() {
Responses
-
-
+
+
-
+
-
-
-
+
-
-
+
+
-
+
-
-
-
+
-
-
+
+
-
+
-
-
-
+
-
-
+
+
-
+
-
-
-
+
-
-
+
+
-
+
-
-
-
+
-
-
+
+
-
+
-
-
-
-
-
+
+
- updateGroup
- Update a Group.
+ getSchemas
+ Get a list of all schemas.
- Update a Group.
+ Get a list of all schemas.
- /groups/{groupId}
+ /schemas
Usage and SDK Samples
-
- curl -X PUT \
- -H "Accept: application/problem+json" \
- -H "Content-Type: application/json" \
- "https://localhost/topology-inventory/v1alpha11/groups/{groupId}" \
- -d '{
- "groupName" : "groupName",
- "criteria" : {
- "resourceInstances" : [ "resourceInstances", "resourceInstances" ]
- }
-}'
+
+ curl -X GET \
+ -H "Accept: application/json,application/problem+json" \
+ "https://localhost/topology-inventory/v1alpha11/schemas?domain=RAN&offset=56&limit=56"
-
+
import org.openapitools.client.*;
import org.openapitools.client.auth.*;
import org.openapitools.client.model.*;
-import org.openapitools.client.api.TopologyGroupsApi;
+import org.openapitools.client.api.SchemasApi;
import java.io.File;
import java.util.*;
-public class TopologyGroupsApiExample {
+public class SchemasApiExample {
public static void main(String[] args) {
// Create an instance of the API class
- TopologyGroupsApi apiInstance = new TopologyGroupsApi();
+ SchemasApi apiInstance = new SchemasApi();
String accept = application/json; // String |
- String contentType = application/json; // String |
- String groupId = groupId_example; // String |
- Group group = ; // Group |
+ String domain = RAN; // String |
+ Integer offset = 56; // Integer | Pagination offset.
+ Integer limit = 56; // Integer | Result limiter.
try {
- apiInstance.updateGroup(accept, contentType, groupId, group);
+ SchemaList result = apiInstance.getSchemas(accept, domain, offset, limit);
+ System.out.println(result);
} catch (ApiException e) {
- System.err.println("Exception when calling TopologyGroupsApi#updateGroup");
+ System.err.println("Exception when calling SchemasApi#getSchemas");
e.printStackTrace();
}
}
@@ -17532,66 +19054,70 @@ public class TopologyGroupsApiExample {
-
+
import 'package:openapi/api.dart';
final api_instance = DefaultApi();
final String accept = new String(); // String |
-final String contentType = new String(); // String |
-final String groupId = new String(); // String |
-final Group group = new Group(); // Group |
+final String domain = new String(); // String |
+final Integer offset = new Integer(); // Integer | Pagination offset.
+final Integer limit = new Integer(); // Integer | Result limiter.
try {
- final result = await api_instance.updateGroup(accept, contentType, groupId, group);
+ final result = await api_instance.getSchemas(accept, domain, offset, limit);
print(result);
} catch (e) {
- print('Exception when calling DefaultApi->updateGroup: $e\n');
+ print('Exception when calling DefaultApi->getSchemas: $e\n');
}
-
- import org.openapitools.client.api.TopologyGroupsApi;
+
+ import org.openapitools.client.api.SchemasApi;
-public class TopologyGroupsApiExample {
+public class SchemasApiExample {
public static void main(String[] args) {
- TopologyGroupsApi apiInstance = new TopologyGroupsApi();
+ SchemasApi apiInstance = new SchemasApi();
String accept = application/json; // String |
- String contentType = application/json; // String |
- String groupId = groupId_example; // String |
- Group group = ; // Group |
+ String domain = RAN; // String |
+ Integer offset = 56; // Integer | Pagination offset.
+ Integer limit = 56; // Integer | Result limiter.
try {
- apiInstance.updateGroup(accept, contentType, groupId, group);
+ SchemaList result = apiInstance.getSchemas(accept, domain, offset, limit);
+ System.out.println(result);
} catch (ApiException e) {
- System.err.println("Exception when calling TopologyGroupsApi#updateGroup");
+ System.err.println("Exception when calling SchemasApi#getSchemas");
e.printStackTrace();
}
}
}
-
+
// Create an instance of the API class
-TopologyGroupsApi *apiInstance = [[TopologyGroupsApi alloc] init];
+SchemasApi *apiInstance = [[SchemasApi alloc] init];
String *accept = application/json; // (default to application/json)
-String *contentType = application/json; // (default to application/json)
-String *groupId = groupId_example; // (default to null)
-Group *group = ; //
+String *domain = RAN; // (optional) (default to null)
+Integer *offset = 56; // Pagination offset. (optional) (default to 0)
+Integer *limit = 56; // Result limiter. (optional) (default to 500)
-// Update a Group.
-[apiInstance updateGroupWith:accept
- contentType:contentType
- groupId:groupId
- group:group
- completionHandler: ^(NSError* error) {
+// Get a list of all schemas.
+[apiInstance getSchemasWith:accept
+ domain:domain
+ offset:offset
+ limit:limit
+ completionHandler: ^(SchemaList output, NSError* error) {
+ if (output) {
+ NSLog(@"%@", output);
+ }
if (error) {
NSLog(@"Error: %@", error);
}
@@ -17599,31 +19125,33 @@ Group *group = ; //
-
+
var TopologyExposureAndInventoryApi = require('topology_exposure_and_inventory_api');
// Create an instance of the API class
-var api = new TopologyExposureAndInventoryApi.TopologyGroupsApi()
+var api = new TopologyExposureAndInventoryApi.SchemasApi()
var accept = application/json; // {String}
-var contentType = application/json; // {String}
-var groupId = groupId_example; // {String}
-var group = ; // {Group}
+var opts = {
+ 'domain': RAN, // {String}
+ 'offset': 56, // {Integer} Pagination offset.
+ 'limit': 56 // {Integer} Result limiter.
+};
var callback = function(error, data, response) {
if (error) {
console.error(error);
} else {
- console.log('API called successfully.');
+ console.log('API called successfully. Returned data: ' + data);
}
};
-api.updateGroup(accept, contentType, groupId, group, callback);
+api.getSchemas(accept, opts, callback);
-
-
+
using System;
using System.Diagnostics;
using Org.OpenAPITools.Api;
@@ -17632,23 +19160,24 @@ using Org.OpenAPITools.Model;
namespace Example
{
- public class updateGroupExample
+ public class getSchemasExample
{
public void main()
{
// Create an instance of the API class
- var apiInstance = new TopologyGroupsApi();
+ var apiInstance = new SchemasApi();
var accept = application/json; // String | (default to application/json)
- var contentType = application/json; // String | (default to application/json)
- var groupId = groupId_example; // String | (default to null)
- var group = new Group(); // Group |
+ var domain = RAN; // String | (optional) (default to null)
+ var offset = 56; // Integer | Pagination offset. (optional) (default to 0)
+ var limit = 56; // Integer | Result limiter. (optional) (default to 500)
try {
- // Update a Group.
- apiInstance.updateGroup(accept, contentType, groupId, group);
+ // Get a list of all schemas.
+ SchemaList result = apiInstance.getSchemas(accept, domain, offset, limit);
+ Debug.WriteLine(result);
} catch (Exception e) {
- Debug.Print("Exception when calling TopologyGroupsApi.updateGroup: " + e.Message );
+ Debug.Print("Exception when calling SchemasApi.getSchemas: " + e.Message );
}
}
}
@@ -17656,46 +19185,48 @@ namespace Example
-
+
<?php
require_once(__DIR__ . '/vendor/autoload.php');
// Create an instance of the API class
-$api_instance = new OpenAPITools\Client\Api\TopologyGroupsApi();
+$api_instance = new OpenAPITools\Client\Api\SchemasApi();
$accept = application/json; // String |
-$contentType = application/json; // String |
-$groupId = groupId_example; // String |
-$group = ; // Group |
+$domain = RAN; // String |
+$offset = 56; // Integer | Pagination offset.
+$limit = 56; // Integer | Result limiter.
try {
- $api_instance->updateGroup($accept, $contentType, $groupId, $group);
+ $result = $api_instance->getSchemas($accept, $domain, $offset, $limit);
+ print_r($result);
} catch (Exception $e) {
- echo 'Exception when calling TopologyGroupsApi->updateGroup: ', $e->getMessage(), PHP_EOL;
+ echo 'Exception when calling SchemasApi->getSchemas: ', $e->getMessage(), PHP_EOL;
}
?>
-
+
use Data::Dumper;
use WWW::OPenAPIClient::Configuration;
-use WWW::OPenAPIClient::TopologyGroupsApi;
+use WWW::OPenAPIClient::SchemasApi;
# Create an instance of the API class
-my $api_instance = WWW::OPenAPIClient::TopologyGroupsApi->new();
+my $api_instance = WWW::OPenAPIClient::SchemasApi->new();
my $accept = application/json; # String |
-my $contentType = application/json; # String |
-my $groupId = groupId_example; # String |
-my $group = WWW::OPenAPIClient::Object::Group->new(); # Group |
+my $domain = RAN; # String |
+my $offset = 56; # Integer | Pagination offset.
+my $limit = 56; # Integer | Result limiter.
eval {
- $api_instance->updateGroup(accept => $accept, contentType => $contentType, groupId => $groupId, group => $group);
+ my $result = $api_instance->getSchemas(accept => $accept, domain => $domain, offset => $offset, limit => $limit);
+ print Dumper($result);
};
if ($@) {
- warn "Exception when calling TopologyGroupsApi->updateGroup: $@\n";
+ warn "Exception when calling SchemasApi->getSchemas: $@\n";
}
-
+
from __future__ import print_statement
import time
import openapi_client
@@ -17703,30 +19234,31 @@ from openapi_client.rest import ApiException
from pprint import pprint
# Create an instance of the API class
-api_instance = openapi_client.TopologyGroupsApi()
+api_instance = openapi_client.SchemasApi()
accept = application/json # String | (default to application/json)
-contentType = application/json # String | (default to application/json)
-groupId = groupId_example # String | (default to null)
-group = # Group |
+domain = RAN # String | (optional) (default to null)
+offset = 56 # Integer | Pagination offset. (optional) (default to 0)
+limit = 56 # Integer | Result limiter. (optional) (default to 500)
try:
- # Update a Group.
- api_instance.update_group(accept, contentType, groupId, group)
+ # Get a list of all schemas.
+ api_response = api_instance.get_schemas(accept, domain=domain, offset=offset, limit=limit)
+ pprint(api_response)
except ApiException as e:
- print("Exception when calling TopologyGroupsApi->updateGroup: %s\n" % e)
+ print("Exception when calling SchemasApi->getSchemas: %s\n" % e)
-
- extern crate TopologyGroupsApi;
+
+ extern crate SchemasApi;
pub fn main() {
let accept = application/json; // String
- let contentType = application/json; // String
- let groupId = groupId_example; // String
- let group = ; // Group
+ let domain = RAN; // String
+ let offset = 56; // Integer
+ let limit = 56; // Integer
- let mut context = TopologyGroupsApi::Context::default();
- let result = client.updateGroup(accept, contentType, groupId, group, &context).wait();
+ let mut context = SchemasApi::Context::default();
+ let result = client.getSchemas(accept, domain, offset, limit, &context).wait();
println!("{:?}", result);
}
@@ -17740,18 +19272,19 @@ pub fn main() {
Parameters
-
- Path parameters
-
-
- | Name |
- Description |
-
- | groupId* |
+
+
+ Header parameters
+
+
+ | Name |
+ Description |
+
+ | Accept* |
-
+
@@ -17769,17 +19302,19 @@ pub fn main() {
|
- Header parameters
+
+
+ Query parameters
| Name |
Description |
- | Accept* |
+ | domain |
-
+
@@ -17787,124 +19322,98 @@ pub fn main() {
-
- Required
-
|
- | Content-Type* |
+ | offset |
-
+
- String
+ Integer
+
+Pagination offset.
+
-
- Required
-
|
-
-
- Body parameters
-
-
- | Name |
- Description |
-
- | group * |
+ | limit |
-
-
-
+
+
+
+
+ Integer
+
+
+
+Result limiter.
+
+
+
+
|
-
-
Responses
-
-
+
+
-
+
-
-
-
+
-
-
+
+
-
+
-
- Schema
+ Schema
@@ -17967,9 +19476,9 @@ $(document).ready(function() {
-
-
-
+
-
-
+
+
-
+
| |
| |
| |