camel
Model
name
importURI
CamelModel
actions
applications
deploymentModels
executionModels
locationModels
metricModels
organisationModels
providerModels
requirementModels
scalabilityModels
securityModels
typeModels
unitModels
Action
name
type
ActionType
EVENT_CREATION
EVENT_CREATION
SCALE_IN
SCALE_IN
SCALE_OUT
SCALE_OUT
SCALE_UP
SCALE_UP
SCALE_DOWN
SCALE_DOWN
READ
READ
WRITE
WRITE
Application
name
version
description
owner
deploymentModels
LayerType
SaaS
SaaS
PaaS
PaaS
IaaS
IaaS
BPM
BPM
SCC
SCC
deployment
DeploymentElement
name
DeploymentModel
internalComponents
internalComponentInstances
vms
vmInstances
communications
communicationInstances
hostings
hostingInstances
vmRequirementSets
globalVMRequirementSet
Component
providedCommunications
providedHosts
configurations
InternalComponent
contains
ic
rc
compositeInternalComponents
requiredCommunications
requiredHost
version
VM
vmRequirementSet
VMRequirementSet
name
locationRequirement
providerRequirement
qualitativeHardwareRequirement
quantitativeHardwareRequirement
osOrImageRequirement
Configuration
downloadCommand
uploadCommand
installCommand
configureCommand
startCommand
stopCommand
Communication
type
ANY
providedCommunication
requiredCommunication
providedPortConfiguration
requiredPortConfiguration
CommunicationType
ANY
ANY
LOCAL
LOCAL
REMOTE
REMOTE
CommunicationPort
portNumber
ProvidedCommunication
RequiredCommunication
isMandatory
Hosting
providedHost
requiredHost
providedHostConfiguration
requiredHostConfiguration
HostingPort
ProvidedHost
RequiredHost
ComponentInstance
type
providedCommunicationInstances
providedHostInstances
instantiatedOn
destroyedOn
InternalComponentInstance
requiredCommunicationInstances
requiredHostInstance
VMInstance
checkDates
vm
vmType
vmTypeValue
ip
CommunicationInstance
type
providedCommunicationInstance
requiredCommunicationInstance
CommunicationPortInstance
type
ProvidedCommunicationInstance
RequiredCommunicationInstance
HostingInstance
type
providedHostInstance
requiredHostInstance
HostingPortInstance
type
ProvidedHostInstance
RequiredHostInstance
execution
ExecutionModel
actionRealisations
eventInstances
executionContexts
measurements
sloAssessessments
ruleTriggers
ActionRealisation
name
action
startTime
endTime
lowLevelActions
ExecutionContext
name
application
startTime
endTime
totalCost
costUnit
deploymentModel
requirementGroup
Measurement
name
executionContext
metricInstance
value
rawData
measurementTime
slo
eventInstance
ApplicationMeasurement
application
InternalComponentMeasurement
internalComponentInstance
CommunicationMeasurement
sourceVMInstance
destinationVMInstance
VMMeasurement
vmInstance
SLOAssessment
name
slo
assessment
executionContext
measurement
assessmentTime
RuleTrigger
name
scalabilityRule
eventInstances
actionRealisations
trigerringTime
executionContext
location
LocationModel
cloudLocations
countries
regions
Location
id
CloudLocation
checkRecursiveness
cl1
cl2
isAssignable
false
subLocations
parent
geographicalRegion
GeographicalRegion
name
parentRegions
alternativeNames
Country
metric
Condition
name
comparisonOperator
threshold
validity
MetricCondition
metricContext
PropertyCondition
propertyContext
unit
timeUnit
ComparisonOperatorType
GREATER_THAN
GREATER_THAN
GREATER_EQUAL_THAN
GREATER_EQUAL_THAN
LESS_THAN
LESS_THAN
LESS_EQUAL_THAN
LESS_EQUAL_THAN
EQUAL
EQUAL
NOT_EQUAL
NOT_EQUAL
MetricInstance
checkRecursiveness
m1
m2
name
metric
schedule
window
objectBinding
metricContext
CompositeMetricInstance
composingMetricInstances
RawMetricInstance
sensor
MetricFormulaParameter
name
value
MetricFormula
containsMetric
m
hasMetric
function
functionArity
functionPattern
parameters
Metric
checkRecursiveness
mt1
mt2
description
valueType
valueDirection
unit
layer
property
isVariable
CompositeMetric
greaterEqualThanLayer
l1
l2
formula
RawMetric
MetricFunctionArityType
UNARY
UNARY
BINARY
BINARY
N_ARY
N_ARY
MetricFunctionType
PLUS
PLUS
MINUS
MINUS
TIMES
TIMES
DIV
DIV
MODULO
MODULO
MEAN
MEAN
STD
STD
COUNT
COUNT
MIN
MIN
MAX
MAX
PERCENTILE
PERCENTILE
DERIVATIVE
DERIVATIVE
MODE
MODE
MEDIAN
MEDIAN
MetricObjectBinding
name
executionContext
MetricApplicationBinding
MetricComponentBinding
vmInstance
componentInstance
MetricVMBinding
vmInstance
Property
name
description
type
subProperties
sensors
PropertyType
ABSTRACT
ABSTRACT
MEASURABLE
MEASURABLE
Schedule
checkStartEndDates
this
checkIntervalRepetitions
s
name
start
end
type
unit
repetitions
interval
ScheduleType
FIXED_RATE
FIXED_RATE
FIXED_DELAY
FIXED_DELAY
SINGLE_EVENT
SINGLE_EVENT
Sensor
name
configuration
isPush
Window
name
unit
windowType
sizeType
measurementSize
timeSize
WindowSizeType
MEASUREMENTS_ONLY
MEASUREMENTS_ONLY
TIME_ONLY
TIME_ONLY
FIRST_MATCH
FIRST_MATCH
BOTH_MATCH
BOTH_MATCH
WindowType
FIXED
FIXED
SLIDING
SLIDING
ConditionContext
name
component
application
quantifier
ANY
minQuantity
maxQuantity
isRelative
QuantifierType
ANY
ANY
ALL
ALL
SOME
SOME
MetricModel
contexts
metrics
metricInstances
conditions
properties
bindings
windows
schedules
parameters
sensors
units
MetricContext
metric
window
schedule
CompositeMetricContext
composingMetricContexts
RawMetricContext
sensor
PropertyContext
property
FunctionPatternType
MAP
MAP
REDUCE
REDUCE
organisation
OrganisationModel
organisation
provider
externalIdentifiers
users
userGroups
dataCentres
roles
roleAssigments
permissions
securityLevel
resourceFilters
Credentials
CloudCredentials
name
cloudProvider
securityGroup
publicSSHKey
privateSSHKey
username
password
DataCenter
name
codeName
location
Entity
Organisation
name
www
postalAddress
email
CloudProvider
public
SaaS
PaaS
IaaS
providerModel
securityCapability
User
name
email
firstName
lastName
www
externalIdentifiers
requirementModels
cloudCredentials
deploymentModels
paasageCredentials
ExternalIdentifier
identifier
description
Permission
checkStartEndDates
this
name
role
startTime
endTime
resourceFilter
action
SecurityLevel
LOW
LOW
MEDIUM
MEDIUM
HIGH
HIGH
ResourcePattern
EXACT
EXACT
TREE
TREE
ResourceFilter
name
resourcePattern
InformationResourceFilter
informationResourcePath
everyInformationResource
ServiceResourceFilter
serviceURL
everyService
Role
name
RoleAssignment
checkAssignedOnDates
this
checkStartEndDates
this
name
user
role
userGroup
startTime
endTime
assignmentTime
UserGroup
name
users
PaaSageCredentials
password
provider
ProviderModel
constraints
rootFeature
Attribute
checkValue
v
diff
name
value
valueType
unitType
AttributeConstraint
name
from
to
fromValue
toValue
Cardinality
cardinalityMin
cardinalityMax
FeatCardinality
value
GroupCardinality
Clone
name
subClones
Constraint
name
from
to
attributeConstraints
Excludes
Implies
Requires
scopeFrom
scopeTo
cardFrom
cardTo
Functional
type
order
value
Feature
name
attributes
subFeatures
featureCardinality
clones
Alternative
groupCardinality
variants
Exclusive
Operator
select
select
add
add
remove
remove
multiply
multiply
divide
divide
Scope
Instance
feature
Product
requirement
RequirementModel
requirements
Requirement
name
RequirementGroup
checkRecursiveness
rg1
r
resources
context
requirements
application
requirementOperator
RequirementOperatorType
AND
AND
OR
OR
XOR
XOR
HardRequirement
SoftRequirement
priority
ServiceLevelObjective
customServiceLevel
OptimisationRequirement
optimisationFunction
metric
property
application
component
metricContext
HardwareRequirement
QualitativeHardwareRequirement
minBenchmark
maxBenchmark
QuantitativeHardwareRequirement
minCPU
maxCPU
minCores
maxCores
minRAM
maxRAM
minStorage
maxStorage
ProviderRequirement
providers
OSOrImageRequirement
OSRequirement
os
is64os
true
ImageRequirement
imageId
SecurityRequirement
securityControls
application
component
LocationRequirement
locations
ScaleRequirement
HorizontalScaleRequirement
minInstances
maxInstances
component
VerticalScaleRequirement
minCPU
maxCPU
minCores
maxCores
minRAM
maxRAM
minStorage
maxStorage
vm
OptimisationFunctionType
MINIMISE
MINIMISE
MAXIMISE
MAXIMISE
scalability
ScalabilityModel
rules
events
eventInstances
actions
patterns
timers
scaleRequirements
BinaryPatternOperatorType
AND
AND
OR
OR
XOR
XOR
PRECEDES
PRECEDES
REPEAT_UNTIL
REPEAT_UNTIL
Event
name
EventPattern
includesEvent
e
includesLeftEvent
e
includesRightEvent
e
timer
BinaryEventPattern
leftEvent
rightEvent
lowerOccurrenceBound
upperOccurrenceBound
operator
UnaryEventPattern
event
occurrenceNum
operator
SimpleEvent
FunctionalEvent
functionalType
NonFunctionalEvent
metricCondition
isViolation
EventInstance
equalLayer
l1
l2
name
status
layer
event
metricInstance
ScalabilityRule
name
event
actions
entity
scaleRequirements
ScalingAction
vm
HorizontalScalingAction
count
internalComponent
VerticalScalingAction
memoryUpdate
CPUUpdate
coreUpdate
storageUpdate
ioUpdate
networkUpdate
Timer
name
type
timeValue
maxOccurrenceNum
unit
TimerType
WITHIN
WITHIN
WITHIN_MAX
WITHIN_MAX
INTERVAL
INTERVAL
UnaryPatternOperatorType
EVERY
EVERY
NOT
NOT
REPEAT
REPEAT
WHEN
WHEN
StatusType
CRITICAL
CRITICAL
WARNING
WARNING
SUCCESS
SUCCESS
FATAL
FATAL
security
SecurityModel
securityControls
securityRequirements
securityProperties
rawSecurityMetrics
compositeSecurityMetrics
rawSecurityMetricInstances
compositeSecurityMetricInstances
securityDomains
securityCapabilities
securitySLOs
SecurityDomain
id
name
subDomain
SecurityControl
name
domain
subDomain
specification
securityProperties
rawSecurityMetrics
compositeSecurityMetrics
RawSecurityMetricInstance
RawSecurityMetric
SecurityProperty
domain
Certifiable
SecuritySLO
SecurityCapability
name
securityControls
dataCenter
CompositeSecurityMetric
CompositeSecurityMetricInstance
type
TypeModel
dataTypes
values
Limit
included
value
TypeEnum
IntType
IntType
StringType
StringType
BooleanType
BooleanType
FloatType
FloatType
DoubleType
DoubleType
SingleValue
valueEquals
v
BoolValue
value
EnumerateValue
name
value
NumericValue
IntegerValue
value
FloatsValue
value
DoublePrecisionValue
value
NegativeInf
PositiveInf
ValueToIncrease
value
StringsValue
value
ValueType
name
BooleanValueType
primitiveType
Enumeration
includesName
name
includesValue
value
values
List
includesValue
v
checkValueType
p
values
primitiveType
type
Range
checkType
l
type
lower
includesValue
n
lowerLimit
upperLimit
primitiveType
RangeUnion
includesValue
n
invalidRangeSequence
ru
ranges
primitiveType
StringValueType
primitiveType
unit
Unit
checkUnit
name
unit
CoreUnit
Dimensionless
MonetaryUnit
RequestUnit
StorageUnit
ThroughputUnit
TimeIntervalUnit
TransactionUnit
UnitType
BYTES
BYTES
BYTES_PER_SECOND
BYTES_PER_SECOND
KILOBYTES
KILOBYTES
MEGABYTES
MEGABYTES
GIGABYTES
GIGABYTES
MILLISECONDS
MILLISECONDS
SECONDS
SECONDS
MINUTES
MINUTES
HOURS
HOURS
DAYS
DAYS
WEEKS
WEEKS
MONTHS
MONTHS
REQUESTS
REQUESTS
REQUESTS_PER_SECOND
REQUESTS_PER_SECOND
TRANSACTIONS
TRANSACTIONS
TRANSACTIONS_PER_SECOND
TRANSACTIONS_PER_SECOND
CORES
CORES
PERCENTAGE
PERCENTAGE
EUROS
EUROS
POUNDS
POUNDS
DOLLARS
DOLLARS
UnitDimensionType
TIME_INTERVAL
TIME_INTERVAL
STORAGE
STORAGE
COST
COST
THROUGHPUT
THROUGHPUT
REQUEST_NUM
REQUEST_NUM
TRANSACTION_NUM
TRANSACTION_NUM
DIMENSIONLESS
DIMENSIONLESS
CORE_NUM
CORE_NUM
UnitModel
units
<?xml version="1.0" encoding="UTF-8"?>
<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="camel" nsURI="http://www.paasage.eu/2015/06/camel" nsPrefix="camel">
  <eAnnotations source="http://www.eclipse.org/OCL/Import">
    <details key="ecore" value="http://www.eclipse.org/emf/2002/Ecore"/>
  </eAnnotations>
  <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
    <details key="invocationDelegates" value="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot"/>
    <details key="settingDelegates" value="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot"/>
    <details key="validationDelegates" value="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot"/>
  </eAnnotations>
  <eClassifiers xsi:type="ecore:EClass" name="Model" abstract="true">
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="importURI" upperBound="-1"
        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString">
      <eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
        <details key="body" value="Metric"/>
        <details key="unique" value="false"/>
        <details key="upper" value="*"/>
      </eAnnotations>
    </eStructuralFeatures>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="CamelModel" eSuperTypes="#//Model">
    <eStructuralFeatures xsi:type="ecore:EReference" name="actions" ordered="false"
        upperBound="-1" eType="#//Action" containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="applications" ordered="false"
        upperBound="-1" eType="#//Application" containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="deploymentModels" ordered="false"
        upperBound="-1" eType="#//deployment/DeploymentModel" containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="executionModels" ordered="false"
        upperBound="-1" eType="#//execution/ExecutionModel" containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="locationModels" upperBound="-1"
        eType="#//location/LocationModel" containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="metricModels" upperBound="-1"
        eType="#//metric/MetricModel" containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="organisationModels" ordered="false"
        upperBound="-1" eType="#//organisation/OrganisationModel" containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="providerModels" ordered="false"
        upperBound="-1" eType="#//provider/ProviderModel" containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="requirementModels" upperBound="-1"
        eType="#//requirement/RequirementModel" containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="scalabilityModels" ordered="false"
        upperBound="-1" eType="#//scalability/ScalabilityModel" containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="securityModels" ordered="false"
        upperBound="-1" eType="#//security/SecurityModel" containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="typeModels" ordered="false"
        upperBound="-1" eType="#//type/TypeModel" containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="unitModels" ordered="false"
        upperBound="-1" eType="#//unit/UnitModel" containment="true"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="Action">
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
      <details key="constraints" value="correct_action_type"/>
    </eAnnotations>
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
      <details key="correct_action_type" value="Tuple {&#xA;&#x9;message : String = 'Action: ' + self.toString() + ' has a wrong type (' + self.type.toString() +&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;'). Any kind of scaling action should be take one of the four possible action type values, while in the opposite case should map to a CREATION_EVENT',&#xA;&#x9;status : Boolean = if&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;(self.oclIsKindOf(camel::scalability::ScalingAction))&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;then (self.type = ActionType::SCALE_IN or self.type = ActionType::SCALE_OUT or self.type = ActionType::SCALE_UP or&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;self.type = ActionType::SCALE_DOWN)&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;else not (self.type = ActionType::SCALE_IN or self.type = ActionType::SCALE_OUT or self.type =&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;ActionType::SCALE_UP or self.type = ActionType::SCALE_DOWN)&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;endif&#xA;}.status"/>
    </eAnnotations>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString">
      <eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
        <details key="body" value="InternalComponentMeasurement"/>
        <details key="unique" value="false"/>
        <details key="upper" value="*"/>
      </eAnnotations>
    </eStructuralFeatures>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="type" lowerBound="1" eType="#//ActionType">
      <eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
        <details key="body" value="UserGroup"/>
        <details key="unique" value="false"/>
        <details key="upper" value="*"/>
      </eAnnotations>
    </eStructuralFeatures>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EEnum" name="ActionType">
    <eLiterals name="EVENT_CREATION"/>
    <eLiterals name="SCALE_IN" value="1"/>
    <eLiterals name="SCALE_OUT" value="2"/>
    <eLiterals name="SCALE_UP" value="3"/>
    <eLiterals name="SCALE_DOWN" value="4"/>
    <eLiterals name="READ" value="5"/>
    <eLiterals name="WRITE" value="6"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="Application">
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="version" lowerBound="1"
        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="description" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="owner" lowerBound="1" eType="#//organisation/Entity"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="deploymentModels" ordered="false"
        upperBound="-1" eType="#//deployment/DeploymentModel"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EEnum" name="LayerType">
    <eLiterals name="SaaS"/>
    <eLiterals name="PaaS" value="1"/>
    <eLiterals name="IaaS" value="2"/>
    <eLiterals name="BPM" value="3"/>
    <eLiterals name="SCC" value="4"/>
  </eClassifiers>
  <eSubpackages name="deployment" nsURI="http://www.paasage.eu/2015/06/camel/deployment"
      nsPrefix="deployment">
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
      <details key="invocationDelegates" value="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot"/>
      <details key="settingDelegates" value="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot"/>
      <details key="validationDelegates" value="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot"/>
    </eAnnotations>
    <eClassifiers xsi:type="ecore:EClass" name="DeploymentElement" abstract="true">
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" lowerBound="1"
          eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="DeploymentModel" eSuperTypes="#//Model">
      <eStructuralFeatures xsi:type="ecore:EReference" name="internalComponents" upperBound="-1"
          eType="#//deployment/InternalComponent" containment="true"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="internalComponentInstances"
          upperBound="-1" eType="#//deployment/InternalComponentInstance" containment="true"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="vms" upperBound="-1"
          eType="#//deployment/VM" containment="true"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="vmInstances" upperBound="-1"
          eType="#//deployment/VMInstance" containment="true"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="communications" upperBound="-1"
          eType="#//deployment/Communication" containment="true"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="communicationInstances"
          upperBound="-1" eType="#//deployment/CommunicationInstance" containment="true"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="hostings" upperBound="-1"
          eType="#//deployment/Hosting" containment="true"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="hostingInstances" upperBound="-1"
          eType="#//deployment/HostingInstance" containment="true"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="vmRequirementSets" upperBound="-1"
          eType="#//deployment/VMRequirementSet" containment="true"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="globalVMRequirementSet"
          eType="#//deployment/VMRequirementSet"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="Component" abstract="true" eSuperTypes="#//deployment/DeploymentElement">
      <eStructuralFeatures xsi:type="ecore:EReference" name="providedCommunications"
          upperBound="-1" eType="#//deployment/ProvidedCommunication" containment="true"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="providedHosts" upperBound="-1"
          eType="#//deployment/ProvidedHost" containment="true"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="configurations" upperBound="-1"
          eType="#//deployment/Configuration" containment="true"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="InternalComponent" eSuperTypes="#//deployment/Component">
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
        <details key="constraints" value="no_recursion_in_parts_of_internal_component"/>
      </eAnnotations>
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
        <details key="no_recursion_in_parts_of_internal_component" value="Tuple {&#xA;&#x9;message : String = 'InternalComponent: ' + self.name +&#xA;&#x9;&#x9;&#x9;&#x9;' should not be recursively contained by itself via the compositeInternalComponent association',&#xA;&#x9;status : Boolean = not&#xA;&#x9;&#x9;&#x9;&#x9;(self.contains(self, self))&#xA;}.status"/>
      </eAnnotations>
      <eOperations name="contains" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
        <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
          <details key="body" value="ic.compositeInternalComponents&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;->exists(p | p.name = rc.name or p.contains(p, rc))"/>
        </eAnnotations>
        <eParameters name="ic" lowerBound="1" eType="#//deployment/InternalComponent"/>
        <eParameters name="rc" lowerBound="1" eType="#//deployment/InternalComponent"/>
      </eOperations>
      <eStructuralFeatures xsi:type="ecore:EReference" name="compositeInternalComponents"
          upperBound="-1" eType="#//deployment/InternalComponent" containment="true"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="requiredCommunications"
          upperBound="-1" eType="#//deployment/RequiredCommunication" containment="true"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="requiredHost" eType="#//deployment/RequiredHost"
          containment="true"/>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="version" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="VM" eSuperTypes="#//deployment/Component">
      <eStructuralFeatures xsi:type="ecore:EReference" name="vmRequirementSet" eType="#//deployment/VMRequirementSet"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="VMRequirementSet">
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
        <details key="constraints" value="at_least_one_alternative_in_vm_req_set"/>
      </eAnnotations>
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
        <details key="at_least_one_alternative_in_vm_req_set" value="Tuple {&#xA;&#x9;message : String = 'VMRequirementSet: ' + self.name +&#xA;&#x9;&#x9;&#x9;&#x9;' should include the specification of at least one requirement',&#xA;&#x9;status : Boolean = (locationRequirement &lt;> null or&#xA;&#x9;&#x9;&#x9;&#x9;providerRequirement &lt;> null or osOrImageRequirement &lt;> null or qualitativeHardwareRequirement &lt;> null or&#xA;&#x9;&#x9;&#x9;&#x9;quantitativeHardwareRequirement &lt;> null)&#xA;}.status"/>
      </eAnnotations>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" lowerBound="1"
          eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="locationRequirement"
          eType="#//requirement/LocationRequirement"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="providerRequirement"
          eType="#//requirement/ProviderRequirement"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="qualitativeHardwareRequirement"
          eType="#//requirement/QualitativeHardwareRequirement">
        <eAnnotations source="teneo.jpa">
          <details key="value" value="@JoinColumn(name=&quot;qualitativehardwarerequirement&quot;)"/>
        </eAnnotations>
      </eStructuralFeatures>
      <eStructuralFeatures xsi:type="ecore:EReference" name="quantitativeHardwareRequirement"
          eType="#//requirement/QuantitativeHardwareRequirement">
        <eAnnotations source="teneo.jpa">
          <details key="value" value="@JoinColumn(name=&quot;quantitativehardwarerequirement&quot;)"/>
        </eAnnotations>
      </eStructuralFeatures>
      <eStructuralFeatures xsi:type="ecore:EReference" name="osOrImageRequirement"
          eType="#//requirement/OSOrImageRequirement"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="Configuration" eSuperTypes="#//deployment/DeploymentElement">
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="downloadCommand" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="uploadCommand" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="installCommand" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="configureCommand" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="startCommand" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="stopCommand" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="Communication" eSuperTypes="#//deployment/DeploymentElement">
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
        <details key="constraints" value="local_communication_both_comp_same_vm"/>
      </eAnnotations>
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
        <details key="local_communication_both_comp_same_vm" value="Tuple {&#xA;&#x9;message : String = 'The communication:' + self.name +&#xA;&#x9;&#x9;&#x9;&#x9;' is local but the communicating components are mapped to different VMs',&#xA;&#x9;status : Boolean = let firstOwner : Component =&#xA;&#x9;&#x9;&#x9;&#x9;self.providedCommunication.oclContainer().oclContainer().oclAsType(DeploymentModel).hostings&#xA;&#x9;&#x9;&#x9;&#x9;->select(p | p.requiredHost.oclContainer() = self.providedCommunication.oclContainer())&#xA;&#x9;&#x9;&#x9;&#x9;->first().providedHost.oclContainer() , secondOwner : Component =&#xA;&#x9;&#x9;&#x9;&#x9;self.requiredCommunication.oclContainer().oclContainer().oclAsType(DeploymentModel).hostings&#xA;&#x9;&#x9;&#x9;&#x9;->select(q | q.requiredHost.oclContainer() = self.requiredCommunication.oclContainer())&#xA;&#x9;&#x9;&#x9;&#x9;->first().providedHost.oclContainer()&#xA;&#x9;&#x9;&#x9;in (self.type = CommunicationType::LOCAL) implies (if (firstOwner.oclIsTypeOf(InternalComponent) and&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;secondOwner.oclIsTypeOf(InternalComponent))&#xA;&#x9;&#x9;&#x9;&#x9;then firstOwner.oclAsType(InternalComponent).oclContainer().oclAsType(DeploymentModel).hostings&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;->select(p | p.requiredHost.oclContainer() = firstOwner)&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;->first().providedHost.oclContainer() =&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;secondOwner.oclAsType(InternalComponent).oclContainer().oclAsType(DeploymentModel).hostings&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;->select(p | p.requiredHost.oclContainer() = secondOwner)&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;->first().providedHost.oclContainer()&#xA;&#x9;&#x9;&#x9;&#x9;else if (firstOwner.oclIsTypeOf(VM) and secondOwner.oclIsTypeOf(InternalComponent))&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;then firstOwner = secondOwner.oclAsType(InternalComponent).oclContainer().oclAsType(DeploymentModel).hostings&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;->select(p | p.requiredHost.oclContainer() = secondOwner)&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;->first().providedHost.oclContainer()&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;else if (firstOwner.oclIsTypeOf(InternalComponent) and secondOwner.oclIsTypeOf(VM))&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;then firstOwner.oclAsType(InternalComponent).oclContainer().oclAsType(DeploymentModel).hostings&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;->select(p | p.requiredHost.oclContainer() = firstOwner)&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;->first().providedHost.oclContainer() = secondOwner&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else if (firstOwner = secondOwner)&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;then true&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else false&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;&#x9;endif)&#xA;}.status"/>
      </eAnnotations>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="type" lowerBound="1"
          eType="#//deployment/CommunicationType" defaultValueLiteral="ANY"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="providedCommunication"
          lowerBound="1" eType="#//deployment/ProvidedCommunication"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="requiredCommunication"
          lowerBound="1" eType="#//deployment/RequiredCommunication"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="providedPortConfiguration"
          eType="#//deployment/Configuration" containment="true"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="requiredPortConfiguration"
          eType="#//deployment/Configuration" containment="true"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EEnum" name="CommunicationType">
      <eLiterals name="ANY"/>
      <eLiterals name="LOCAL" value="1"/>
      <eLiterals name="REMOTE" value="2"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="CommunicationPort" abstract="true"
        eSuperTypes="#//deployment/DeploymentElement">
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="portNumber" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="ProvidedCommunication" eSuperTypes="#//deployment/CommunicationPort"/>
    <eClassifiers xsi:type="ecore:EClass" name="RequiredCommunication" eSuperTypes="#//deployment/CommunicationPort">
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="isMandatory" lowerBound="1"
          eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="Hosting" eSuperTypes="#//deployment/DeploymentElement">
      <eStructuralFeatures xsi:type="ecore:EReference" name="providedHost" lowerBound="1"
          eType="#//deployment/ProvidedHost"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="requiredHost" lowerBound="1"
          eType="#//deployment/RequiredHost"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="providedHostConfiguration"
          eType="#//deployment/Configuration" containment="true"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="requiredHostConfiguration"
          eType="#//deployment/Configuration" containment="true"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="HostingPort" abstract="true" eSuperTypes="#//deployment/DeploymentElement"/>
    <eClassifiers xsi:type="ecore:EClass" name="ProvidedHost" eSuperTypes="#//deployment/HostingPort"/>
    <eClassifiers xsi:type="ecore:EClass" name="RequiredHost" eSuperTypes="#//deployment/HostingPort"/>
    <eClassifiers xsi:type="ecore:EClass" name="ComponentInstance" abstract="true"
        eSuperTypes="#//deployment/DeploymentElement">
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
        <details key="constraints" value="component_port_instances_of_correct_type"/>
      </eAnnotations>
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
        <details key="component_port_instances_of_correct_type" value="Tuple {&#xA;&#x9;message : String = 'The type of component instance:' + self.name +&#xA;&#x9;&#x9;&#x9;&#x9;' should have as provided communication/hosts the types of the component instance\'s provided communication/host instances',&#xA;&#x9;status : Boolean = providedCommunicationInstances&#xA;&#x9;&#x9;&#x9;&#x9;->forAll(p | type.providedCommunications&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;->includes(p.type)) and providedHostInstances&#xA;&#x9;&#x9;&#x9;&#x9;->forAll(p | type.providedHosts&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;->includes(p.type))&#xA;}.status"/>
      </eAnnotations>
      <eStructuralFeatures xsi:type="ecore:EReference" name="type" lowerBound="1"
          eType="#//deployment/Component"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="providedCommunicationInstances"
          upperBound="-1" eType="#//deployment/ProvidedCommunicationInstance" containment="true"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="providedHostInstances"
          upperBound="-1" eType="#//deployment/ProvidedHostInstance" containment="true"/>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="instantiatedOn" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDate"/>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="destroyedOn" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDate"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="InternalComponentInstance" eSuperTypes="#//deployment/ComponentInstance">
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
        <details key="constraints" value="internal_component_port_instances_of_correct_type"/>
      </eAnnotations>
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
        <details key="internal_component_port_instances_of_correct_type" value="Tuple {&#xA;&#x9;message : String = 'The type of component instance:' + self.name +&#xA;&#x9;&#x9;&#x9;&#x9;' should have as required communication/hosts the types of the component instance\'s required communication/host instances',&#xA;&#x9;status : Boolean = type.oclIsKindOf(InternalComponent)&#xA;&#x9;&#x9;&#x9;&#x9;and requiredCommunicationInstances&#xA;&#x9;&#x9;&#x9;&#x9;->forAll(p | type.oclAsType(InternalComponent).requiredCommunications&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;->includes(p.type)) and (requiredHostInstance &lt;> null implies requiredHostInstance.type =&#xA;&#x9;&#x9;&#x9;&#x9;type.oclAsType(InternalComponent).requiredHost)&#xA;}.status"/>
      </eAnnotations>
      <eStructuralFeatures xsi:type="ecore:EReference" name="requiredCommunicationInstances"
          upperBound="-1" eType="#//deployment/RequiredCommunicationInstance" containment="true"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="requiredHostInstance"
          eType="#//deployment/RequiredHostInstance" containment="true"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="VMInstance" eSuperTypes="#//deployment/ComponentInstance">
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
        <details key="constraints" value="correct_type_for_vm_instance correct_vm_type_value_in_vm_instance"/>
      </eAnnotations>
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
        <details key="correct_type_for_vm_instance" value="Tuple {&#xA;&#x9;message : String = 'VM Instance: ' + self.name +&#xA;&#x9;&#x9;&#x9;&#x9;' should have as type a VM',&#xA;&#x9;status : Boolean = type.oclIsTypeOf(VM)&#xA;}.status"/>
        <details key="correct_vm_type_value_in_vm_instance" value="Tuple {&#xA;&#x9;message : String = 'VMInstance: ' + self.name +&#xA;&#x9;&#x9;&#x9;&#x9;' has a vmTypeValue which is not included in the ValueType of the vmType Attribute',&#xA;&#x9;status : Boolean = ((vmType &lt;> null and&#xA;&#x9;&#x9;&#x9;&#x9;vmType.valueType &lt;> null) implies (if (vmType.valueType.oclIsTypeOf(camel::type::Range))&#xA;&#x9;&#x9;&#x9;&#x9;then if (vmTypeValue.oclIsTypeOf(camel::type::IntegerValue))&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;then&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;vmType.valueType.oclAsType(camel::type::Range).includesValue(vmTypeValue.oclAsType(camel::type::IntegerValue).value.oclAsType(ecore::EDouble))&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;else if (vmTypeValue.oclIsTypeOf(camel::type::FloatsValue))&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;then&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;vmType.valueType.oclAsType(camel::type::Range).includesValue(vmTypeValue.oclAsType(camel::type::FloatsValue).value.oclAsType(ecore::EDouble))&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else if (vmTypeValue.oclIsTypeOf(camel::type::DoublePrecisionValue))&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;then&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;vmType.valueType.oclAsType(camel::type::Range).includesValue(vmTypeValue.oclAsType(camel::type::DoublePrecisionValue).value)&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else false&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;&#x9;else if (vmType.valueType.oclIsTypeOf(camel::type::Enumeration))&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;then if (vmTypeValue.oclIsTypeOf(camel::type::StringsValue))&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;then&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;vmType.valueType.oclAsType(camel::type::Enumeration).includesName(vmTypeValue.oclAsType(camel::type::StringsValue).value)&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else if (vmTypeValue.oclIsTypeOf(camel::type::EnumerateValue))&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;then&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;vmType.valueType.oclAsType(camel::type::Enumeration).includesName(vmTypeValue.oclAsType(camel::type::EnumerateValue).name)&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else false&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;else if (vmType.valueType.oclIsTypeOf(camel::type::List))&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;then vmType.valueType.oclAsType(camel::type::List).includesValue(vmTypeValue)&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else if (vmType.valueType.oclIsTypeOf(camel::type::RangeUnion))&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;then if (vmTypeValue.oclIsTypeOf(camel::type::IntegerValue))&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;then&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;vmType.valueType.oclAsType(camel::type::RangeUnion).includesValue(vmTypeValue.oclAsType(camel::type::IntegerValue).value.oclAsType(ecore::EDouble))&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else if (vmTypeValue.oclIsTypeOf(camel::type::FloatsValue))&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;then&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;vmType.valueType.oclAsType(camel::type::RangeUnion).includesValue(vmTypeValue.oclAsType(camel::type::FloatsValue).value.oclAsType(ecore::EDouble))&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else if (vmTypeValue.oclIsTypeOf(camel::type::DoublePrecisionValue))&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;then&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;vmType.valueType.oclAsType(camel::type::RangeUnion).includesValue(vmTypeValue.oclAsType(camel::type::DoublePrecisionValue).value)&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else false&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else false&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;&#x9;endif))&#xA;}.status"/>
      </eAnnotations>
      <eOperations name="checkDates" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
          <details key="body" value="System.out.println(&quot;Checking dates for VMInstance: &quot; + vm);&#xA;&#x9;&#x9;java.util.Date createdOn = vm.getInstantiatedOn();&#xA;&#x9;&#x9;java.util.Date destroyedOn = vm.getDestroyedOn();&#xA;&#x9;&#x9;if (createdOn != null &amp;&amp; destroyedOn != null &amp;&amp; destroyedOn.before(createdOn)) return Boolean.FALSE;&#xA;&#x9;&#x9;return Boolean.TRUE;"/>
        </eAnnotations>
        <eParameters name="vm" eType="#//deployment/VMInstance"/>
      </eOperations>
      <eStructuralFeatures xsi:type="ecore:EReference" name="vmType" eType="#//provider/Attribute"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="vmTypeValue" eType="#//type/SingleValue"/>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="ip" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString">
        <eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
          <details key="body" value="CommunicationInstance"/>
          <details key="unique" value="false"/>
          <details key="upper" value="*"/>
        </eAnnotations>
      </eStructuralFeatures>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="CommunicationInstance" eSuperTypes="#//deployment/DeploymentElement">
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
        <details key="constraints" value="communication_instance_correct_port_instances"/>
      </eAnnotations>
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
        <details key="communication_instance_correct_port_instances" value="Tuple {&#xA;&#x9;message : String = 'CommunicationInstance: ' + self.name +&#xA;&#x9;&#x9;&#x9;&#x9;' should have its provided and required communication instances\' types mapping to its required communication/host type, respectively',&#xA;&#x9;status : Boolean = requiredCommunicationInstance.type&#xA;&#x9;&#x9;&#x9;&#x9;= type.requiredCommunication and providedCommunicationInstance.type = type.providedCommunication&#xA;}.status"/>
      </eAnnotations>
      <eStructuralFeatures xsi:type="ecore:EReference" name="type" lowerBound="1"
          eType="#//deployment/Communication"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="providedCommunicationInstance"
          lowerBound="1" eType="#//deployment/ProvidedCommunicationInstance"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="requiredCommunicationInstance"
          lowerBound="1" eType="#//deployment/RequiredCommunicationInstance"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="CommunicationPortInstance" eSuperTypes="#//deployment/DeploymentElement">
      <eStructuralFeatures xsi:type="ecore:EReference" name="type" lowerBound="1"
          eType="#//deployment/CommunicationPort"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="ProvidedCommunicationInstance" eSuperTypes="#//deployment/CommunicationPortInstance"/>
    <eClassifiers xsi:type="ecore:EClass" name="RequiredCommunicationInstance" eSuperTypes="#//deployment/CommunicationPortInstance"/>
    <eClassifiers xsi:type="ecore:EClass" name="HostingInstance" eSuperTypes="#//deployment/DeploymentElement">
      <eStructuralFeatures xsi:type="ecore:EReference" name="type" lowerBound="1"
          eType="#//deployment/Hosting"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="providedHostInstance"
          lowerBound="1" eType="#//deployment/ProvidedHostInstance"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="requiredHostInstance"
          lowerBound="1" eType="#//deployment/RequiredHostInstance"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="HostingPortInstance" abstract="true"
        eSuperTypes="#//deployment/DeploymentElement">
      <eStructuralFeatures xsi:type="ecore:EReference" name="type" lowerBound="1"
          eType="#//deployment/HostingPort"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="ProvidedHostInstance" eSuperTypes="#//deployment/HostingPortInstance"/>
    <eClassifiers xsi:type="ecore:EClass" name="RequiredHostInstance" eSuperTypes="#//deployment/HostingPortInstance"/>
  </eSubpackages>
  <eSubpackages name="execution" nsURI="http://www.paasage.eu/2015/06/camel/execution"
      nsPrefix="execution">
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
      <details key="invocationDelegates" value="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot"/>
      <details key="settingDelegates" value="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot"/>
      <details key="validationDelegates" value="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot"/>
    </eAnnotations>
    <eClassifiers xsi:type="ecore:EClass" name="ExecutionModel" eSuperTypes="#//Model">
      <eStructuralFeatures xsi:type="ecore:EReference" name="actionRealisations" ordered="false"
          upperBound="-1" eType="#//execution/ActionRealisation" containment="true"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="eventInstances" upperBound="-1"
          eType="#//scalability/EventInstance" containment="true"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="executionContexts" ordered="false"
          upperBound="-1" eType="#//execution/ExecutionContext" containment="true"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="measurements" ordered="false"
          upperBound="-1" eType="#//execution/Measurement" containment="true"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="sloAssessessments" ordered="false"
          upperBound="-1" eType="#//execution/SLOAssessment" containment="true"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="ruleTriggers" ordered="false"
          upperBound="-1" eType="#//execution/RuleTrigger" containment="true"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="ActionRealisation">
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" lowerBound="1"
          eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
          iD="true"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="action" lowerBound="1"
          eType="#//Action"/>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="startTime" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDate"/>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="endTime" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDate"/>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="lowLevelActions" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="ExecutionContext">
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
        <details key="constraints" value="execution_context_total_cost execution_context_unit_cost"/>
      </eAnnotations>
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
        <details key="execution_context_total_cost" value="Tuple {&#xA;&#x9;message : String = 'The total cost of execution context: ' + self.name +&#xA;&#x9;&#x9;&#x9;&#x9;' should be non-negative',&#xA;&#x9;status : Boolean = self.totalCost >= 0&#xA;}.status"/>
        <details key="execution_context_unit_cost" value="Tuple {&#xA;&#x9;message : String = 'The unit of cost should be provided as the totalCost of execution context: '&#xA;&#x9;&#x9;&#x9;&#x9;+ self.name + ' is positive',&#xA;&#x9;status : Boolean = self.totalCost > 0 implies costUnit &lt;> null&#xA;}.status"/>
      </eAnnotations>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" lowerBound="1"
          eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
          iD="true">
        <eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
          <details key="body" value="Measurement"/>
          <details key="unique" value="false"/>
          <details key="upper" value="*"/>
        </eAnnotations>
      </eStructuralFeatures>
      <eStructuralFeatures xsi:type="ecore:EReference" name="application" lowerBound="1"
          eType="#//Application"/>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="startTime" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDate">
        <eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
          <details key="body" value="Measurement"/>
          <details key="unique" value="false"/>
          <details key="upper" value="*"/>
        </eAnnotations>
      </eStructuralFeatures>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="endTime" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDate"/>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="totalCost" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="costUnit" eType="#//unit/MonetaryUnit"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="deploymentModel" lowerBound="1"
          eType="#//deployment/DeploymentModel"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="requirementGroup" lowerBound="1"
          eType="#//requirement/RequirementGroup"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="Measurement">
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
        <details key="constraints" value="measurement_slo_refer_to_correct_metric measurement_event_instance_same_metric correct_measurement_value measurement_metric_refers_to_correct_execution_context"/>
      </eAnnotations>
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
        <details key="measurement_slo_refer_to_correct_metric" value="Tuple {&#xA;&#x9;message : String = 'Measurement: ' + self.name +&#xA;&#x9;&#x9;&#x9;&#x9;' should have a metric instance with a type that maps to the metric referred to by the the measurement\'s respective SLO',&#xA;&#x9;status : Boolean = self.slo&#xA;&#x9;&#x9;&#x9;&#x9;&lt;> null implies (if (self.slo.customServiceLevel.oclIsTypeOf(camel::metric::MetricCondition))&#xA;&#x9;&#x9;&#x9;&#x9;then self.slo.customServiceLevel.oclAsType(camel::metric::MetricCondition).metricContext.metric =&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;self.metricInstance.metric&#xA;&#x9;&#x9;&#x9;&#x9;else false&#xA;&#x9;&#x9;&#x9;&#x9;endif)&#xA;}.status"/>
        <details key="measurement_event_instance_same_metric" value="Tuple {&#xA;&#x9;message : String = 'Measurement: ' + self.name +&#xA;&#x9;&#x9;&#x9;&#x9;' maps to non-functional event instance : ' + eventInstance.toString() +&#xA;&#x9;&#x9;&#x9;&#x9;' with a type related to a metric different from the one of this measurement',&#xA;&#x9;status : Boolean = (self.eventInstance &lt;> null and&#xA;&#x9;&#x9;&#x9;&#x9;self.eventInstance.event.oclIsTypeOf(camel::scalability::NonFunctionalEvent)) implies self.metricInstance.metric =&#xA;&#x9;&#x9;&#x9;&#x9;self.eventInstance.event.oclAsType(camel::scalability::NonFunctionalEvent).metricCondition.metricContext.metric&#xA;}.status"/>
        <details key="correct_measurement_value" value="Tuple {&#xA;&#x9;message : String = 'Measurement: ' + self.name + ' has a value: ' + value.toString() +&#xA;&#x9;&#x9;&#x9;&#x9;' that is outside the range of values of metric instance: ' + metricInstance.name,&#xA;&#x9;status : Boolean = let type :&#xA;&#x9;&#x9;&#x9;&#x9;camel::type::ValueType = metricInstance.metric.valueType&#xA;&#x9;&#x9;&#x9;in if (type &lt;> null)&#xA;&#x9;&#x9;&#x9;&#x9;then if (type.oclIsTypeOf(camel::type::Range))&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;then type.oclAsType(camel::type::Range).includesValue(self.value)&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;else if (type.oclIsTypeOf(camel::type::RangeUnion))&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;then type.oclAsType(camel::type::RangeUnion).includesValue(self.value)&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else true&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;&#x9;else true&#xA;&#x9;&#x9;&#x9;&#x9;endif&#xA;}.status"/>
        <details key="measurement_metric_refers_to_correct_execution_context" value="Tuple {&#xA;&#x9;message : String = 'Measurement: ' + self.name +&#xA;&#x9;&#x9;&#x9;&#x9;' has execution context:' + executionContext.name +&#xA;&#x9;&#x9;&#x9;&#x9;' which is different from the one of the binding of the respective metric instance:' +&#xA;&#x9;&#x9;&#x9;&#x9;metricInstance.name,&#xA;&#x9;status : Boolean = executionContext = metricInstance.objectBinding.executionContext&#xA;}.status"/>
      </eAnnotations>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" lowerBound="1"
          eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
          iD="true"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="executionContext" lowerBound="1"
          eType="#//execution/ExecutionContext"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="metricInstance" lowerBound="1"
          eType="#//metric/MetricInstance"/>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="value" lowerBound="1"
          eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="rawData" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="measurementTime" lowerBound="1"
          eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDate"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="slo" eType="#//requirement/ServiceLevelObjective"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="eventInstance" eType="#//scalability/EventInstance"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="ApplicationMeasurement" eSuperTypes="#//execution/Measurement">
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
        <details key="constraints" value="application_measurement_same_app"/>
      </eAnnotations>
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
        <details key="application_measurement_same_app" value="Tuple {&#xA;&#x9;message : String = 'ApplicationMeasurement: ' + self.name +&#xA;&#x9;&#x9;&#x9;&#x9;' has a different application from the one referenced by its execution context: ' +&#xA;&#x9;&#x9;&#x9;&#x9;self.executionContext.name,&#xA;&#x9;status : Boolean = self.executionContext.application = self.application&#xA;}.status"/>
      </eAnnotations>
      <eStructuralFeatures xsi:type="ecore:EReference" name="application" lowerBound="1"
          eType="#//Application"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="InternalComponentMeasurement" eSuperTypes="#//execution/Measurement">
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
        <details key="constraints" value="internal_component_measurement_metric_refer_to_same_component internal_component_measurement_included_in_execution_context"/>
      </eAnnotations>
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
        <details key="internal_component_measurement_metric_refer_to_same_component"
            value="Tuple {&#xA;&#x9;message : String = 'The ComponentInstance: ' +&#xA;&#x9;&#x9;&#x9;&#x9;internalComponentInstance.name + ' of InternalComponentMeasurement: ' + self.name +&#xA;&#x9;&#x9;&#x9;&#x9;' is different from the one referenced by the binding of the respective metric instance: ' +&#xA;&#x9;&#x9;&#x9;&#x9;self.metricInstance.name,&#xA;&#x9;status : Boolean = metricInstance.objectBinding.oclIsTypeOf(camel::metric::MetricComponentBinding) and&#xA;&#x9;&#x9;&#x9;&#x9;metricInstance.objectBinding.oclAsType(camel::metric::MetricComponentBinding).componentInstance =&#xA;&#x9;&#x9;&#x9;&#x9;internalComponentInstance&#xA;}.status"/>
        <details key="internal_component_measurement_included_in_execution_context"
            value="Tuple {&#xA;&#x9;message : String = 'ComponentInstance: ' +&#xA;&#x9;&#x9;&#x9;&#x9;internalComponentInstance.name + ' is not included in the deployment model of execution context: ' +&#xA;&#x9;&#x9;&#x9;&#x9;self.executionContext.name + ' for InternalComponentMeasurement: ' +&#xA;&#x9;&#x9;&#x9;&#x9;self.name,&#xA;&#x9;status : Boolean = executionContext.deploymentModel.internalComponentInstances&#xA;&#x9;&#x9;&#x9;&#x9;->includes(internalComponentInstance)&#xA;}.status"/>
      </eAnnotations>
      <eStructuralFeatures xsi:type="ecore:EReference" name="internalComponentInstance"
          lowerBound="1" eType="#//deployment/InternalComponentInstance"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="CommunicationMeasurement" eSuperTypes="#//execution/Measurement">
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
        <details key="constraints" value="resource_coupling_measurement_diff_vm_instances"/>
      </eAnnotations>
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
        <details key="resource_coupling_measurement_diff_vm_instances" value="Tuple {&#xA;&#x9;message : String = 'The source: ' + sourceVMInstance.name +&#xA;&#x9;&#x9;&#x9;&#x9;' and destination: ' + destinationVMInstance.name + ' VM instances of ResourceCouplingMeasurement: ' + self.name +&#xA;&#x9;&#x9;&#x9;&#x9;' are either identical or not included in the deployment model of the respective execution context: ' +&#xA;&#x9;&#x9;&#x9;&#x9;self.executionContext.name,&#xA;&#x9;status : Boolean = sourceVMInstance &lt;> destinationVMInstance and&#xA;&#x9;&#x9;&#x9;&#x9;(executionContext.deploymentModel.vmInstances&#xA;&#x9;&#x9;&#x9;&#x9;->includes(sourceVMInstance)) and (executionContext.deploymentModel.vmInstances&#xA;&#x9;&#x9;&#x9;&#x9;->includes(destinationVMInstance))&#xA;}.status"/>
      </eAnnotations>
      <eStructuralFeatures xsi:type="ecore:EReference" name="sourceVMInstance" lowerBound="1"
          eType="#//deployment/VMInstance"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="destinationVMInstance"
          lowerBound="1" eType="#//deployment/VMInstance"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="VMMeasurement" eSuperTypes="#//execution/Measurement">
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
        <details key="constraints" value="resource_measurement_ec_deployment_model_vm_instance resource_measurement_metric_vm_instance"/>
      </eAnnotations>
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
        <details key="resource_measurement_ec_deployment_model_vm_instance" value="Tuple {&#xA;&#x9;message : String = 'The VMInstance: ' + vmInstance.name +&#xA;&#x9;&#x9;&#x9;&#x9;' of ResourceMeasurement: ' + self.name +&#xA;&#x9;&#x9;&#x9;&#x9;' is not included in the deployment model of the respective execution context: ' +&#xA;&#x9;&#x9;&#x9;&#x9;self.executionContext.name,&#xA;&#x9;status : Boolean = vmInstance &lt;> null implies (executionContext.deploymentModel.vmInstances&#xA;&#x9;&#x9;&#x9;&#x9;->includes(vmInstance))&#xA;}.status"/>
        <details key="resource_measurement_metric_vm_instance" value="Tuple {&#xA;&#x9;message : String = 'The binding of metric instance: ' + metricInstance.name +&#xA;&#x9;&#x9;&#x9;&#x9;' associated to ResourceMeasurement: ' + self.name +&#xA;&#x9;&#x9;&#x9;&#x9;' refers to a different VMInstance from the one related to this measurement',&#xA;&#x9;status : Boolean = vmInstance &lt;> null implies&#xA;&#x9;&#x9;&#x9;&#x9;(metricInstance.objectBinding.oclIsTypeOf(camel::metric::MetricVMBinding) and&#xA;&#x9;&#x9;&#x9;&#x9;metricInstance.objectBinding.oclAsType(camel::metric::MetricVMBinding).vmInstance = vmInstance)&#xA;}.status"/>
      </eAnnotations>
      <eStructuralFeatures xsi:type="ecore:EReference" name="vmInstance" lowerBound="1"
          eType="#//deployment/VMInstance"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="SLOAssessment">
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
        <details key="constraints" value="slo_assessment_same_metric slo_assessment_slo_in_reqs_for_execution_context slo_assessment_same_exec_context"/>
      </eAnnotations>
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
        <details key="slo_assessment_same_metric" value="Tuple {&#xA;&#x9;message : String = 'The metric in slo: ' + slo.name + ' of SLOAssessment: ' + self.name +&#xA;&#x9;&#x9;&#x9;&#x9;' is not the same as the one referenced by the respective measurement: ' + measurement.name,&#xA;&#x9;status : Boolean = if&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;(slo.customServiceLevel.oclIsTypeOf(camel::metric::MetricCondition))&#xA;&#x9;&#x9;&#x9;&#x9;then measurement.metricInstance.metric =&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;slo.customServiceLevel.oclAsType(camel::metric::MetricCondition).metricContext.metric&#xA;&#x9;&#x9;&#x9;&#x9;else false&#xA;&#x9;&#x9;&#x9;&#x9;endif&#xA;}.status"/>
        <details key="slo_assessment_slo_in_reqs_for_execution_context" value="Tuple {&#xA;&#x9;message : String = 'SLO: ' + self.slo.name +&#xA;&#x9;&#x9;&#x9;&#x9;' is not included in the requirement group of the respective execution context: ' + self.executionContext.name +&#xA;&#x9;&#x9;&#x9;&#x9;' of SLO Assessment: ' + self.name,&#xA;&#x9;status : Boolean = self.executionContext.requirementGroup.requirements&#xA;&#x9;&#x9;&#x9;&#x9;->includes(self.slo)&#xA;}.status"/>
        <details key="slo_assessment_same_exec_context" value="Tuple {&#xA;&#x9;message : String = 'ExecutionContext: ' + executionContext.name + ' in SLOAssessment: ' +&#xA;&#x9;&#x9;&#x9;&#x9;self.name + ' is not the same as the one of the respective measurement: ' +&#xA;&#x9;&#x9;&#x9;&#x9;self.measurement.name,&#xA;&#x9;status : Boolean = executionContext = measurement.executionContext&#xA;}.status"/>
      </eAnnotations>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" lowerBound="1"
          eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="slo" lowerBound="1" eType="#//requirement/ServiceLevelObjective"/>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="assessment" lowerBound="1"
          eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="executionContext" lowerBound="1"
          eType="#//execution/ExecutionContext"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="measurement" lowerBound="1"
          eType="#//execution/Measurement"/>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="assessmentTime" lowerBound="1"
          eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDate"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="RuleTrigger">
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
        <details key="constraints" value="rule_trigger_event_instance_correct_events rule_trigger_correct_action rule_trigger_scal_reqs_of_correct_dep_model"/>
      </eAnnotations>
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
        <details key="rule_trigger_event_instance_correct_events" value="Tuple {&#xA;&#x9;message : String = 'The eventInstances ' + ' of RuleTrigger: ' + self.name +&#xA;&#x9;&#x9;&#x9;&#x9;' do not correspond to the event(s) of the respective scalability rule: ' + self.scalabilityRule.name,&#xA;&#x9;status : Boolean = if&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;(self.scalabilityRule.event.oclIsKindOf(camel::scalability::SimpleEvent))&#xA;&#x9;&#x9;&#x9;&#x9;then (self.eventInstances&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;->size() = 1 and self.eventInstances&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;->exists(p | p.event.oclAsType(camel::scalability::SimpleEvent) =&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;self.scalabilityRule.event.oclAsType(camel::scalability::SimpleEvent)))&#xA;&#x9;&#x9;&#x9;&#x9;else self.eventInstances&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;->forAll(p | self.scalabilityRule.event.oclAsType(camel::scalability::EventPattern).includesEvent(p.event))&#xA;&#x9;&#x9;&#x9;&#x9;endif&#xA;}.status"/>
        <details key="rule_trigger_correct_action" value="Tuple {&#xA;&#x9;message : String = 'Either the size of action realizations for RuleTrigger: ' + self.name +&#xA;&#x9;&#x9;&#x9;&#x9;' is not the same as the one corresponding to the actions of the respective scalability rule: ' +&#xA;&#x9;&#x9;&#x9;&#x9;self.scalabilityRule.name +&#xA;&#x9;&#x9;&#x9;&#x9;' or there is an action realization mapping to an action not contained in the action list of the trigger\'s scalability rule',&#xA;&#x9;status : Boolean = (self.actionRealisations&#xA;&#x9;&#x9;&#x9;&#x9;->size() = self.scalabilityRule.actions&#xA;&#x9;&#x9;&#x9;&#x9;->size()) and (self.actionRealisations&#xA;&#x9;&#x9;&#x9;&#x9;->forAll(p | self.scalabilityRule.actions&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;->exists(q | q = p.action)))&#xA;}.status"/>
        <details key="rule_trigger_scal_reqs_of_correct_dep_model" value="Tuple {&#xA;&#x9;message : String = 'There is a scale requirements for the scalability rule: ' +&#xA;&#x9;&#x9;&#x9;&#x9;self.scalabilityRule.name + ' of RuleTrigger: ' + self.name +&#xA;&#x9;&#x9;&#x9;&#x9;' with a component or vm not included in the deployment model of the trigger\'s respective execution context: ' +&#xA;&#x9;&#x9;&#x9;&#x9;self.executionContext.name,&#xA;&#x9;status : Boolean = scalabilityRule.scaleRequirements&#xA;&#x9;&#x9;&#x9;&#x9;->forAll(p | if (p.oclIsTypeOf(camel::requirement::HorizontalScaleRequirement) and&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;p.oclAsType(camel::requirement::HorizontalScaleRequirement).component &lt;> null)&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;then (executionContext.deploymentModel.internalComponents&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;->includes(p.oclAsType(camel::requirement::HorizontalScaleRequirement).component))&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;else if (p.oclIsTypeOf(camel::requirement::VerticalScaleRequirement) and&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;p.oclAsType(camel::requirement::VerticalScaleRequirement).vm &lt;> null)&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;then (executionContext.deploymentModel.vms&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;->includes(p.oclAsType(camel::requirement::VerticalScaleRequirement).vm))&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else true&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;endif)&#xA;}.status"/>
      </eAnnotations>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" lowerBound="1"
          eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="scalabilityRule" lowerBound="1"
          eType="#//scalability/ScalabilityRule"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="eventInstances" lowerBound="1"
          upperBound="-1" eType="#//scalability/EventInstance"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="actionRealisations" lowerBound="1"
          upperBound="-1" eType="#//execution/ActionRealisation"/>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="trigerringTime" lowerBound="1"
          eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDate"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="executionContext" lowerBound="1"
          eType="#//execution/ExecutionContext"/>
    </eClassifiers>
  </eSubpackages>
  <eSubpackages name="location" nsURI="http://www.paasage.eu/2015/06/camel/location"
      nsPrefix="location">
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
      <details key="invocationDelegates" value="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot"/>
      <details key="settingDelegates" value="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot"/>
      <details key="validationDelegates" value="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot"/>
    </eAnnotations>
    <eClassifiers xsi:type="ecore:EClass" name="LocationModel" eSuperTypes="#//Model">
      <eStructuralFeatures xsi:type="ecore:EReference" name="cloudLocations" upperBound="-1"
          eType="#//location/CloudLocation" containment="true"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="countries" upperBound="-1"
          eType="#//location/Country" containment="true"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="regions" upperBound="-1"
          eType="#//location/GeographicalRegion" containment="true"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="Location" abstract="true">
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="id" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="CloudLocation" eSuperTypes="#//location/Location">
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
        <details key="constraints" value="cloud_location_same_as_parent"/>
      </eAnnotations>
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
        <details key="cloud_location_same_as_parent" value="Tuple {&#xA;&#x9;message : String = 'CloudLocation: ' + self.id +&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;' should not be the same as its parent',&#xA;&#x9;status : Boolean = parent &lt;> null implies parent.id &lt;> self.id&#xA;}.status"/>
      </eAnnotations>
      <eOperations name="checkRecursiveness" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
          <details key="body" value="System.out.println(&quot;Checking recursiveness for CloudLocation: &quot; + cl1.getId());&#xD;&#xA;&#x9;&#x9;for (eu.paasage.camel.location.CloudLocation cl: cl1.getSubLocations()){&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;if (cl.getId().equals(cl2.getId())) return Boolean.TRUE;&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;if (checkRecursiveness(cl,cl2)) return Boolean.TRUE;&#xA;&#x9;&#x9;}&#xD;&#xA;&#x9;&#x9;return Boolean.FALSE;"/>
        </eAnnotations>
        <eParameters name="cl1" eType="#//location/CloudLocation"/>
        <eParameters name="cl2" eType="#//location/CloudLocation"/>
      </eOperations>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="isAssignable" lowerBound="1"
          eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
          defaultValueLiteral="false"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="subLocations" upperBound="-1"
          eType="#//location/CloudLocation" containment="true"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="parent" eType="#//location/CloudLocation"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="geographicalRegion" eType="#//location/GeographicalRegion"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="GeographicalRegion" eSuperTypes="#//location/Location">
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
        <details key="constraints" value="geographical_region_not_in_parents"/>
      </eAnnotations>
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
        <details key="geographical_region_not_in_parents" value="Tuple {&#xA;&#x9;message : String = 'Geographical Region:' + self.name +&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;' cannot be equivalent to any of its parents',&#xA;&#x9;status : Boolean = self.parentRegions&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;->forAll(p | p.name &lt;> self.name)&#xA;}.status"/>
      </eAnnotations>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" lowerBound="1"
          eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="parentRegions" upperBound="-1"
          eType="#//location/GeographicalRegion"/>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="alternativeNames" upperBound="-1"
          eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="Country" eSuperTypes="#//location/GeographicalRegion"/>
  </eSubpackages>
  <eSubpackages name="metric" nsURI="http://www.paasage.eu/2015/06/camel/metric" nsPrefix="metric">
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
      <details key="invocationDelegates" value="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot"/>
      <details key="settingDelegates" value="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot"/>
      <details key="validationDelegates" value="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot"/>
    </eAnnotations>
    <eClassifiers xsi:type="ecore:EClass" name="Condition" abstract="true">
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" lowerBound="1"
          eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="comparisonOperator" lowerBound="1"
          eType="#//metric/ComparisonOperatorType"/>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="threshold" lowerBound="1"
          eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="validity" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDate">
        <eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
          <details key="body" value="MetricCondition"/>
          <details key="unique" value="false"/>
          <details key="upper" value="*"/>
        </eAnnotations>
      </eStructuralFeatures>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="MetricCondition" eSuperTypes="#//metric/Condition">
      <eStructuralFeatures xsi:type="ecore:EReference" name="metricContext" lowerBound="1"
          eType="#//metric/MetricContext"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="PropertyCondition" eSuperTypes="#//metric/Condition">
      <eStructuralFeatures xsi:type="ecore:EReference" name="propertyContext" lowerBound="1"
          eType="#//metric/PropertyContext"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="unit" eType="#//unit/MonetaryUnit"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="timeUnit" eType="#//unit/TimeIntervalUnit"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EEnum" name="ComparisonOperatorType">
      <eLiterals name="GREATER_THAN"/>
      <eLiterals name="GREATER_EQUAL_THAN" value="1"/>
      <eLiterals name="LESS_THAN" value="2"/>
      <eLiterals name="LESS_EQUAL_THAN" value="3"/>
      <eLiterals name="EQUAL" value="4"/>
      <eLiterals name="NOT_EQUAL" value="5"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="MetricInstance" abstract="true">
      <eOperations name="checkRecursiveness" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
          <details key="body" value="System.out.println(&quot;Checking recursiveness for MetricInstance: &quot; + m1.getName());&#xA;&#x9;&#x9;eu.paasage.camel.metric.CompositeMetricInstance cmi = (eu.paasage.camel.metric.CompositeMetricInstance)m1;&#xA;&#x9;&#x9;for (eu.paasage.camel.metric.MetricInstance m: cmi.getComposingMetricInstances()){&#xA;&#x9;&#x9;&#x9;if (m.getName().equals(m2.getName())) return Boolean.TRUE;&#xA;&#x9;&#x9;&#x9;if (m instanceof eu.paasage.camel.metric.CompositeMetricInstance &amp;&amp; checkRecursiveness(m,m2)) return Boolean.TRUE;&#xA;&#x9;&#x9;}&#xA;&#x9;&#x9;return Boolean.FALSE;"/>
        </eAnnotations>
        <eParameters name="m1" eType="#//metric/MetricInstance"/>
        <eParameters name="m2" eType="#//metric/MetricInstance"/>
      </eOperations>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" lowerBound="1"
          eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
          iD="true">
        <eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
          <details key="body" value="MetricFormulaParameter"/>
          <details key="unique" value="false"/>
          <details key="upper" value="*"/>
        </eAnnotations>
      </eStructuralFeatures>
      <eStructuralFeatures xsi:type="ecore:EReference" name="metric" lowerBound="1"
          eType="#//metric/Metric"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="schedule" eType="#//metric/Schedule"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="window" eType="#//metric/Window"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="objectBinding" lowerBound="1"
          eType="#//metric/MetricObjectBinding"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="metricContext" eType="#//metric/MetricContext"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="CompositeMetricInstance" eSuperTypes="#//metric/MetricInstance">
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
        <details key="constraints" value="composite_metric_instance_to_components component_instances_metric_map_formula_templates component_metrics_refer_to_same_level_or_lower"/>
      </eAnnotations>
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
        <details key="composite_metric_instance_to_components" value="Tuple {&#xA;&#x9;message : String = 'CompositeMetricInstance: ' + self.name +&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;' maps to a composite metric but there exists a composing metric with a different execution context associated to it',&#xA;&#x9;status : Boolean = metric.oclIsTypeOf(CompositeMetric)&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;and composingMetricInstances&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;->forAll(p | p.objectBinding.executionContext = objectBinding.executionContext)&#xA;}.status"/>
        <details key="component_instances_metric_map_formula_templates" value="Tuple {&#xA;&#x9;message : String = 'CompositeMetricInstance: ' + self.name +&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;' should have component metric instances which map to the metrics referenced in the formula of the composite instance\'s metric',&#xA;&#x9;status : Boolean = metric.oclIsTypeOf(CompositeMetric)&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;and self.metric.oclAsType(CompositeMetric).formula.parameters&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;->forAll(p | p.oclIsKindOf(Metric) implies self.composingMetricInstances&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;->exists(q | q.metric = p)) and self.metric.oclAsType(CompositeMetric).formula.parameters&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;->select(p | p.oclIsKindOf(Metric))&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;->size() = self.composingMetricInstances&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;->size()&#xA;}.status"/>
        <details key="component_metrics_refer_to_same_level_or_lower" value="Tuple {&#xA;&#x9;message : String = 'CompositeMetricInstance: ' + self.name +&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;' as a binding with a type that maps to a lower cloud level with respect to the one of its composing metrics (e.g., MetricVMBinding while composing metric has MetricComponentBinding)',&#xA;&#x9;status : Boolean = if&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;(not (objectBinding.oclIsTypeOf(MetricApplicationBinding)))&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;then if (objectBinding.oclIsTypeOf(MetricComponentBinding))&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;then composingMetricInstances&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;->forAll(p | p.objectBinding.executionContext = self.objectBinding.executionContext and not&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;(p.objectBinding.oclIsTypeOf(MetricApplicationBinding)) and if&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;(self.objectBinding.oclAsType(MetricComponentBinding).componentInstance.oclIsKindOf(camel::deployment::InternalComponentInstance))&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;then if (p.objectBinding.oclIsTypeOf(MetricVMBinding))&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;then self.objectBinding.executionContext.deploymentModel.hostingInstances&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;->exists(q | q.providedHostInstance.oclContainer() = p.objectBinding.oclAsType(MetricVMBinding).vmInstance and&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;q.requiredHostInstance.oclContainer() = self.objectBinding.oclAsType(MetricComponentBinding).componentInstance)&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else true&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else false&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif)&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else composingMetricInstances&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;->forAll(p | p.objectBinding.oclIsTypeOf(MetricVMBinding))&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;else true&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;endif&#xA;}.status"/>
      </eAnnotations>
      <eStructuralFeatures xsi:type="ecore:EReference" name="composingMetricInstances"
          lowerBound="1" upperBound="-1" eType="#//metric/MetricInstance"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="RawMetricInstance" eSuperTypes="#//metric/MetricInstance">
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
        <details key="constraints" value="raw_metric_instance_correct_metric_type"/>
      </eAnnotations>
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
        <details key="raw_metric_instance_correct_metric_type" value="Tuple {&#xA;&#x9;message : String = 'RawMetricInstance: ' + self.name +&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;' mut map to a raw metric',&#xA;&#x9;status : Boolean = metric.oclIsTypeOf(RawMetric)&#xA;}.status"/>
      </eAnnotations>
      <eStructuralFeatures xsi:type="ecore:EReference" name="sensor" lowerBound="1"
          eType="#//metric/Sensor"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="MetricFormulaParameter">
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
        <details key="constraints" value="value_attribute_set_for_non_metric_formula_parameters"/>
      </eAnnotations>
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
        <details key="value_attribute_set_for_non_metric_formula_parameters" value="Tuple {&#xA;&#x9;message : String = 'MetricFormulaParameter: ' + self.name +&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;' has a value of null while not mapping to a metric or metric formula',&#xA;&#x9;status : Boolean = not (self.oclIsKindOf(Metric) or&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;(self.oclIsKindOf(MetricFormula))) implies self.value &lt;> null&#xA;}.status"/>
      </eAnnotations>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" lowerBound="1"
          eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="value" eType="#//type/SingleValue"
          containment="true"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="MetricFormula" eSuperTypes="#//metric/MetricFormulaParameter">
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
        <details key="constraints" value="metric_formula_has_metric metric_formula_correct_arity_for_function_wrt_parameters metric_formula_correct_arity_for_function"/>
      </eAnnotations>
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
        <details key="metric_formula_has_metric" value="Tuple {&#xA;&#x9;message : String = 'MetricFormula: ' + self.toString() + ' does not involve any metric as input parameter',&#xA;&#x9;status : Boolean = &#xA;&#x9;&#x9;&#x9;&#x9;hasMetric()&#xA;}.status"/>
        <details key="metric_formula_correct_arity_for_function_wrt_parameters" value="Tuple {&#xA;&#x9;message : String = 'MetricFormula: ' + self.toString() +&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;' has an incorrect arity: ' + functionArity.toString() + ' according to the size of the parameters list: ' +&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;parameters&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;->size().toString(),&#xA;&#x9;status : Boolean = ((self.functionArity = MetricFunctionArityType::UNARY) implies (self.parameters&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;->size() = 1)) and ((self.functionArity = MetricFunctionArityType::BINARY) implies self.parameters&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;->size() = 2) and ((self.functionArity = MetricFunctionArityType::N_ARY) implies self.parameters&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;->size() >= 2)&#xA;}.status"/>
        <details key="metric_formula_correct_arity_for_function" value="Tuple {&#xA;&#x9;message : String = 'MetricFormula: ' + self.toString() + ' has function: ' +&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;function.toString() + ' that does not correctly correspond to its arity: ' +&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;functionArity.toString(),&#xA;&#x9;status : Boolean = ((self.function = MetricFunctionType::MODULO or self.function =&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;MetricFunctionType::PERCENTILE) implies self.functionArity = MetricFunctionArityType::BINARY) and (((self.function&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;= MetricFunctionType::MEAN or self.function = MetricFunctionType::STD or self.function = MetricFunctionType::MIN&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;or self.function = MetricFunctionType::MAX or self.function = MetricFunctionType::MODE or self.function =&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;MetricFunctionType::MEDIAN or self.function = MetricFunctionType::DERIVATIVE or self.function =&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;MetricFunctionType::COUNT) implies self.functionArity = MetricFunctionArityType::UNARY)) and (((self.function =&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;MetricFunctionType::TIMES or self.function = MetricFunctionType::DIV) implies (self.functionArity =&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;MetricFunctionArityType::BINARY or self.functionArity = MetricFunctionArityType::N_ARY)))&#xA;}.status"/>
      </eAnnotations>
      <eOperations name="containsMetric" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
        <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
          <details key="body" value="self.parameters&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;->includes(m) or self.parameters&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;->exists(p | p.oclIsTypeOf(MetricFormula) and p.oclAsType(MetricFormula).containsMetric(m))"/>
        </eAnnotations>
        <eParameters name="m" lowerBound="1" eType="#//metric/Metric"/>
      </eOperations>
      <eOperations name="hasMetric" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
        <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
          <details key="body" value="self.parameters&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;->exists(p | p.oclIsKindOf(Metric)) or &#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;self.parameters->exists(p | p.oclIsTypeOf(MetricFormula) and p.oclAsType(MetricFormula).hasMetric())"/>
        </eAnnotations>
      </eOperations>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="function" lowerBound="1"
          eType="#//metric/MetricFunctionType"/>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="functionArity" lowerBound="1"
          eType="#//metric/MetricFunctionArityType"/>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="functionPattern" eType="#//metric/FunctionPatternType"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="parameters" lowerBound="1"
          upperBound="-1" eType="#//metric/MetricFormulaParameter"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="Metric" abstract="true" eSuperTypes="#//metric/MetricFormulaParameter">
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
        <details key="constraints" value="metric_measures_measurable_property"/>
      </eAnnotations>
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
        <details key="metric_measures_measurable_property" value="Tuple {&#xA;&#x9;message : String = 'Metric: ' + name + ' measures property: ' + self.property.name +&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;' which is ABSTRACT (i.e., not MEASURABLE)',&#xA;&#x9;status : Boolean = self.property.type = PropertyType::MEASURABLE&#xA;}.status"/>
      </eAnnotations>
      <eOperations name="checkRecursiveness" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
          <details key="body" value="System.out.println(&quot;Checking recursiveness for Metric: &quot; + mt1.getName());&#xA;&#x9;&#x9;eu.paasage.camel.metric.CompositeMetric m1 = (eu.paasage.camel.metric.CompositeMetric)mt1;&#xA;&#x9;&#x9;for (eu.paasage.camel.metric.MetricFormulaParameter param: m1.getFormula().getParameters()){&#xA;&#x9;&#x9;&#x9;if (param instanceof eu.paasage.camel.metric.Metric){&#xA;&#x9;&#x9;&#x9;&#x9;eu.paasage.camel.metric.Metric mt = (eu.paasage.camel.metric.Metric)param;&#xA;&#x9;&#x9;&#x9;&#x9;if (mt.getName().equals(mt2.getName())) return Boolean.TRUE;&#xA;&#x9;&#x9;&#x9;&#x9;if (mt instanceof eu.paasage.camel.metric.CompositeMetric &amp;&amp; checkRecursiveness(mt,mt2)) return Boolean.TRUE;&#xA;&#x9;&#x9;&#x9;}&#xA;&#x9;&#x9;}&#xA;&#x9;&#x9;return Boolean.FALSE;"/>
        </eAnnotations>
        <eParameters name="mt1" eType="#//metric/Metric"/>
        <eParameters name="mt2" eType="#//metric/Metric"/>
      </eOperations>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="description" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="valueType" eType="#//type/ValueType"/>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="valueDirection" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EShort"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="unit" lowerBound="1"
          eType="#//unit/Unit"/>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="layer" eType="#//LayerType"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="property" lowerBound="1"
          eType="#//metric/Property"/>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="isVariable" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="CompositeMetric" eSuperTypes="#//metric/Metric">
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
        <details key="constraints" value="metric_layer_enforcement metric_percentage_unit_enforcement metric_composite_unit_enforcement"/>
      </eAnnotations>
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
        <details key="metric_layer_enforcement" value="Tuple {&#xA;&#x9;message : String = 'Composite Metric: ' + name +&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;' has a layer which is below those of its composing metrics in the respective formula',&#xA;&#x9;status : Boolean = self.formula.parameters&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;->forAll(p | (p.oclIsKindOf(Metric) implies self.greaterEqualThanLayer(self.layer, p.oclAsType(Metric).layer)))&#xA;}.status"/>
        <details key="metric_percentage_unit_enforcement" value="Tuple {&#xA;&#x9;message : String = 'Composite Metric: ' + name +&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;' has an incorrect unit (percentage) by considering the units of its composing metrics and the function(s) involved in the respective metric formula',&#xA;&#x9;status : Boolean = if&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;(self.unit.unit = camel::unit::UnitType::PERCENTAGE)&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;then (self.formula.parameters&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;->forAll(p | p.oclIsKindOf(Metric) implies p.oclAsType(Metric).unit.unit = camel::unit::UnitType::PERCENTAGE) or&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;(self.formula.function = MetricFunctionType::DIV and self.formula.parameters&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;->size() = 2 and self.formula.parameters&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;->forAll(p1, p2 | (p1.oclIsKindOf(Metric) and p2.oclIsKindOf(Metric)) implies p1.oclAsType(Metric).unit.unit =&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;p2.oclAsType(Metric).unit.unit)))&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;else true&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;endif&#xA;}.status"/>
        <details key="metric_composite_unit_enforcement" value="Tuple {&#xA;&#x9;message : String = 'Composite Metric: ' + self.name +&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;' has a composite unit that does not correspond to the units of its composing metrics by also considering that its derivation formula maps to the DIV function',&#xA;&#x9;status : Boolean = if&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;(self.formula.function = MetricFunctionType::DIV)&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;then ((self.unit.unit = camel::unit::UnitType::BYTES_PER_SECOND) implies (self.formula.parameters&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;->size() = 2 and self.formula.parameters&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;->at(1).oclAsType(Metric).unit.unit = camel::unit::UnitType::BYTES and self.formula.parameters&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;->at(2).oclAsType(Metric).unit.unit = camel::unit::UnitType::SECONDS) and (self.unit.unit =&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;camel::unit::UnitType::REQUESTS_PER_SECOND) implies (self.formula.parameters&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;->size() = 2 and self.formula.parameters&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;->at(1).oclAsType(Metric).unit.unit = camel::unit::UnitType::REQUESTS and self.formula.parameters&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;->at(2).oclAsType(Metric).unit.unit = camel::unit::UnitType::SECONDS) and (self.unit.unit =&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;camel::unit::UnitType::TRANSACTIONS_PER_SECOND) implies (self.formula.parameters&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;->size() = 2 and self.formula.parameters&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;->at(1).oclAsType(Metric).unit.unit = camel::unit::UnitType::TRANSACTIONS and self.formula.parameters&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;->at(2).oclAsType(Metric).unit.unit = camel::unit::UnitType::SECONDS))&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;else true&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;endif&#xA;}.status"/>
      </eAnnotations>
      <eOperations name="greaterEqualThanLayer" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
        <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
          <details key="body" value="if (l1 = camel::LayerType::SaaS)&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;then true&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else (if (l1 = camel::LayerType::PaaS)&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;then (if (l2 = camel::LayerType::PaaS or l2 = camel::LayerType::IaaS)&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;then true&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else false&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif)&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else (if (l2 = camel::LayerType::IaaS)&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;then true&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else false&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif)&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif)&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif"/>
        </eAnnotations>
        <eParameters name="l1" lowerBound="1" eType="#//LayerType"/>
        <eParameters name="l2" lowerBound="1" eType="#//LayerType"/>
      </eOperations>
      <eStructuralFeatures xsi:type="ecore:EReference" name="formula" lowerBound="1"
          eType="#//metric/MetricFormula" containment="true"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="RawMetric" eSuperTypes="#//metric/Metric"/>
    <eClassifiers xsi:type="ecore:EEnum" name="MetricFunctionArityType">
      <eLiterals name="UNARY"/>
      <eLiterals name="BINARY" value="1"/>
      <eLiterals name="N_ARY" value="2"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EEnum" name="MetricFunctionType">
      <eLiterals name="PLUS"/>
      <eLiterals name="MINUS" value="1"/>
      <eLiterals name="TIMES" value="2"/>
      <eLiterals name="DIV" value="3"/>
      <eLiterals name="MODULO" value="4"/>
      <eLiterals name="MEAN" value="5"/>
      <eLiterals name="STD" value="6"/>
      <eLiterals name="COUNT" value="7"/>
      <eLiterals name="MIN" value="8"/>
      <eLiterals name="MAX" value="9"/>
      <eLiterals name="PERCENTILE" value="10"/>
      <eLiterals name="DERIVATIVE" value="11"/>
      <eLiterals name="MODE" value="12"/>
      <eLiterals name="MEDIAN" value="13"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="MetricObjectBinding" abstract="true">
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" lowerBound="1"
          eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="executionContext" lowerBound="1"
          eType="#//execution/ExecutionContext"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="MetricApplicationBinding" eSuperTypes="#//metric/MetricObjectBinding"/>
    <eClassifiers xsi:type="ecore:EClass" name="MetricComponentBinding" eSuperTypes="#//metric/MetricObjectBinding">
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
        <details key="constraints" value="vm_and_sw_comp_connected_in_component_binding"/>
      </eAnnotations>
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
        <details key="vm_and_sw_comp_connected_in_component_binding" value="Tuple {&#xA;&#x9;message : String = 'MetricComponentBinding: ' + self.name +&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;' has a componentInstance: ' + self.componentInstance.name +&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;'which is either not included in the the respective deployment model of the binding\'s execution context: ' +&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;self.executionContext.name +&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;' or is not connected in this deployment model with the vmInstance or it is an external component such that in this case a null value for the vmInstance should have been provided',&#xA;&#x9;status : Boolean = if&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;(componentInstance.oclIsTypeOf(camel::deployment::InternalComponentInstance))&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;then (executionContext.deploymentModel.internalComponentInstances&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;->includes(componentInstance)) and if (vmInstance &lt;> null)&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;then (executionContext.deploymentModel.vmInstances&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;->includes(vmInstance)) and (executionContext.deploymentModel.hostingInstances&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;->exists(c | c.requiredHostInstance.oclContainer() = componentInstance and c.providedHostInstance.oclContainer() = vmInstance) or&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;(executionContext.deploymentModel.hostingInstances&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;->exists(c | c.requiredHostInstance.oclContainer() = componentInstance and&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;executionContext.deploymentModel.hostingInstances&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;->exists(d | d.requiredHostInstance.oclContainer() = c.providedHostInstance.oclContainer() and d.providedHostInstance.oclContainer() =&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;vmInstance))))&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else true&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;else false&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;endif&#xA;}.status"/>
      </eAnnotations>
      <eStructuralFeatures xsi:type="ecore:EReference" name="vmInstance" eType="#//deployment/VMInstance"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="componentInstance" lowerBound="1"
          eType="#//deployment/ComponentInstance"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="MetricVMBinding" eSuperTypes="#//metric/MetricObjectBinding">
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
        <details key="constraints" value="vm_binding_vm_in_dep_model_of_app"/>
      </eAnnotations>
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
        <details key="vm_binding_vm_in_dep_model_of_app" value="Tuple {&#xA;&#x9;message : String = 'MetricVMBinding: ' + self.name + ' has VMInstance: ' + vmInstance.name&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;+ ' which is not included in the deployment model of the respective execution context: ' +&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;self.executionContext.name,&#xA;&#x9;status : Boolean = (executionContext.deploymentModel.vmInstances&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;->includes(vmInstance))&#xA;}.status"/>
      </eAnnotations>
      <eStructuralFeatures xsi:type="ecore:EReference" name="vmInstance" lowerBound="1"
          eType="#//deployment/VMInstance"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="Property">
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" lowerBound="1"
          eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="description" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="type" lowerBound="1"
          eType="#//metric/PropertyType"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="subProperties" upperBound="-1"
          eType="#//metric/Property"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="sensors" upperBound="-1"
          eType="#//metric/Sensor"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EEnum" name="PropertyType">
      <eLiterals name="ABSTRACT"/>
      <eLiterals name="MEASURABLE" value="1"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="Schedule">
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
        <details key="constraints" value="schedule_correct_values"/>
      </eAnnotations>
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
        <details key="schedule_correct_values" value="Tuple {&#xA;&#x9;message : String = 'Schedule: ' + self.name +&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;' has wrong value combination for its attributes and properties. In particular, either the type of the schedule is SINGLE_EVENT and a value of any of the rest of the attributes or the unit property has been given or the schedule type is different but a non-positive value of the interval attribute or no value for the unit property has been provided',&#xA;&#x9;status : Boolean = (self.type&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;> ScheduleType::SINGLE_EVENT implies (self.interval > 0 and self.unit &lt;> null)) and ((self.type =&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;ScheduleType::SINGLE_EVENT implies (interval = 0 and start = null and end = null and unit = null)))&#xA;}.status"/>
      </eAnnotations>
      <eOperations name="checkStartEndDates" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
          <details key="body" value="System.out.println(&quot;CHECKING Schedule_Start_Before_End: &quot; + this + &quot; &quot; + this.getStart() + &quot; &quot; + this.getEnd()); java.util.Date date1 = this.getStart(); java.util.Date date2 = this.getEnd(); if ((this.getType() != ScheduleType.SINGLE_EVENT) &amp;&amp; (date1 == null || date2 == null)) return Boolean.FALSE; if (date1 == null || date2 == null || (date1 != null &amp;&amp; date2 != null &amp;&amp; date1.before(date2))) return Boolean.TRUE; return Boolean.FALSE;"/>
        </eAnnotations>
        <eParameters name="this" lowerBound="1" eType="#//metric/Schedule"/>
      </eOperations>
      <eOperations name="checkIntervalRepetitions" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
          <details key="body" value="System.out.println(&quot;Schedule_correct_rep: &quot; + s + &quot; &quot; + s.getStart() + &quot; &quot; + s.getEnd() + &quot; &quot; + s.getInterval() + &quot; &quot; + s.getRepetitions());&#xD;&#xA;&#x9;&#x9;Date d1 = s.getStart();&#xD;&#xA;&#x9;&#x9;Date d2 = s.getEnd();&#xD;&#xA;&#x9;&#x9;int reps = s.getRepetitions();&#xD;&#xA;&#x9;&#x9;long interval = s.getInterval();&#xD;&#xA;&#x9;&#x9;eu.paasage.camel.unit.TimeIntervalUnit unit = s.getUnit();&#xD;&#xA;&#x9;&#x9;double diff = d2.getTime()-d1.getTime();&#xD;&#xA;&#x9;&#x9;if (d1 != null &amp;&amp; d2 != null &amp;&amp; interval != 0){&#xD;&#xA;&#x9;&#x9;&#x9;if (unit.equals(eu.paasage.camel.unit.UnitType.SECONDS)){&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;diff = diff / 1000.0;&#xD;&#xA;&#x9;&#x9;&#x9;}&#xD;&#xA;&#x9;&#x9;&#x9;else if (unit.equals(eu.paasage.camel.unit.UnitType.MINUTES)){&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;diff = diff / (60 * 1000.0);&#xD;&#xA;&#x9;&#x9;&#x9;}&#xD;&#xA;&#x9;&#x9;&#x9;else if (unit.equals(eu.paasage.camel.unit.UnitType.HOURS)){&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;diff = diff / (60 * 60 * 1000.0);&#xD;&#xA;&#x9;&#x9;&#x9;}&#xD;&#xA;&#x9;&#x9;&#x9;else if (unit.equals(eu.paasage.camel.unit.UnitType.DAYS)){&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;diff = diff / (24 * 60 * 60 * 1000.0);&#xD;&#xA;&#x9;&#x9;&#x9;}&#xD;&#xA;&#x9;&#x9;&#x9;else if (unit.equals(eu.paasage.camel.unit.UnitType.WEEKS)){&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;diff = diff / (7 * 24 * 60 * 60 * 1000.0);&#xD;&#xA;&#x9;&#x9;&#x9;}&#xD;&#xA;&#x9;&#x9;&#x9;else if (unit.equals(eu.paasage.camel.unit.UnitType.MONTHS)){&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;diff = diff / (30 * 24 * 60 * 60 * 1000.0);&#xD;&#xA;&#x9;&#x9;&#x9;}&#xD;&#xA;&#x9;&#x9;&#x9;if (diff >= interval){&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;if (reps == 0 || (reps != 0 &amp;&amp; reps * interval &lt;= diff)) return Boolean.TRUE;&#xD;&#xA;&#x9;&#x9;&#x9;}&#xD;&#xA;&#x9;&#x9;}&#xD;&#xA;&#x9;&#x9;return Boolean.FALSE;"/>
        </eAnnotations>
        <eParameters name="s" lowerBound="1" eType="#//metric/Schedule"/>
      </eOperations>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" lowerBound="1"
          eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="start" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDate"/>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="end" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDate"/>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="type" lowerBound="1"
          eType="#//metric/ScheduleType">
        <eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
          <details key="body" value="HorizontalScalingPolicy"/>
          <details key="unique" value="false"/>
          <details key="upper" value="*"/>
        </eAnnotations>
      </eStructuralFeatures>
      <eStructuralFeatures xsi:type="ecore:EReference" name="unit" lowerBound="1"
          eType="#//unit/TimeIntervalUnit"/>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="repetitions" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="interval" lowerBound="1"
          eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//ELong"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EEnum" name="ScheduleType">
      <eLiterals name="FIXED_RATE"/>
      <eLiterals name="FIXED_DELAY" value="1"/>
      <eLiterals name="SINGLE_EVENT" value="2"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="Sensor">
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" lowerBound="1"
          eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="configuration" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString">
        <eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
          <details key="body" value="ResourceGroup"/>
          <details key="unique" value="false"/>
          <details key="upper" value="*"/>
        </eAnnotations>
      </eStructuralFeatures>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="isPush" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
        <eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
          <details key="body" value="ScalabilityRule"/>
          <details key="unique" value="false"/>
          <details key="upper" value="*"/>
        </eAnnotations>
      </eStructuralFeatures>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="Window">
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
        <details key="constraints" value="window_positive_params window_right_params_exist"/>
      </eAnnotations>
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
        <details key="window_positive_params" value="Tuple {&#xA;&#x9;message : String = 'Window:' + self.name +&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;' has a negative value for the measurementSize and timeSize attributes',&#xA;&#x9;status : Boolean = (measurementSize >= 0) and (timeSize >=&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;0)&#xA;}.status"/>
        <details key="window_right_params_exist" value="Tuple {&#xA;&#x9;message : String = 'Window: ' + self.name +&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;' has wrong value combinations for its attributes and properties. If sizeType is MEASUREMENTS_ONLY, then the measurementSize should be positive and all other values zero or null. If sizeType is TIME_ONLY, then both the unit should not be null and the timeSize should be positive, while the measurementSize should be zero. For the other values of sizeType, the values of all remaining attributes and units should be provided',&#xA;&#x9;status : Boolean = (self.sizeType&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;= WindowSizeType::MEASUREMENTS_ONLY implies (unit = null and timeSize = 0 and measurementSize > 0)) and&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;(self.sizeType = WindowSizeType::TIME_ONLY implies (unit &lt;> null and timeSize > 0 and measurementSize = 0)) and&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;((self.sizeType = WindowSizeType::FIRST_MATCH or self.sizeType = WindowSizeType::BOTH_MATCH) implies (timeSize > 0&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;and unit &lt;> null and measurementSize > 0))&#xA;}.status"/>
      </eAnnotations>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" lowerBound="1"
          eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="unit" eType="#//unit/TimeIntervalUnit"/>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="windowType" lowerBound="1"
          eType="#//metric/WindowType"/>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="sizeType" lowerBound="1"
          eType="#//metric/WindowSizeType"/>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="measurementSize" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//ELong"/>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="timeSize" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//ELong"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EEnum" name="WindowSizeType">
      <eLiterals name="MEASUREMENTS_ONLY"/>
      <eLiterals name="TIME_ONLY" value="1"/>
      <eLiterals name="FIRST_MATCH" value="2"/>
      <eLiterals name="BOTH_MATCH" value="3"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EEnum" name="WindowType">
      <eLiterals name="FIXED"/>
      <eLiterals name="SLIDING" value="1"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="ConditionContext" abstract="true">
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
        <details key="constraints" value="context_right_params at_least_one_alternative_in_condition_context"/>
      </eAnnotations>
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
        <details key="context_right_params" value="Tuple {&#xA;&#x9;message : String = 'Context: ' + self.name +&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;' has wrong value combinations for the quantifier and quantity attributes. When quantifier equals to SOME, then we have the two following cases: (a) relative values: minQuantity should be greater than 0.0 and maxQuantity less or equal to 1.0 and minQuantity less or equal to maxQuantity; (b) absolute values: minQuantity should be greater or equal to 1 and maxQuantity either -1 (inf) or greater or equal to minQuantity and both quantities should be integer',&#xA;&#x9;status : Boolean = ((self.quantifier&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;= QuantifierType::SOME and self.isRelative = true) implies (minQuantity > 0.0 and maxQuantity &lt;= 1.0 and&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;maxQuantity >= minQuantity)) and ((self.quantifier = QuantifierType::SOME and self.isRelative = false) implies&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;(minQuantity >= 1.0 and ((maxQuantity >= 1.0 and maxQuantity >= minQuantity) or maxQuantity = - 1.0)) and&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;(minQuantity / minQuantity.round()) = 1 and (maxQuantity / maxQuantity.round()) = 1)&#xA;}.status"/>
        <details key="at_least_one_alternative_in_condition_context" value="Tuple {&#xA;&#x9;message : String = 'In ConditionContext: ' + self.name +&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;' either a component or an application should be referenced',&#xA;&#x9;status : Boolean = self.component &lt;> null or self.application &lt;> null&#xA;}.status"/>
      </eAnnotations>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" lowerBound="1"
          eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="component" eType="#//deployment/Component"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="application" eType="#//Application"/>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="quantifier" lowerBound="1"
          eType="#//metric/QuantifierType" defaultValueLiteral="ANY"/>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="minQuantity" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="maxQuantity" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="isRelative" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EEnum" name="QuantifierType">
      <eLiterals name="ANY"/>
      <eLiterals name="ALL" value="1"/>
      <eLiterals name="SOME" value="2"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="MetricModel" eSuperTypes="#//Model">
      <eStructuralFeatures xsi:type="ecore:EReference" name="contexts" upperBound="-1"
          eType="#//metric/ConditionContext" containment="true"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="metrics" ordered="false"
          upperBound="-1" eType="#//metric/Metric" containment="true"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="metricInstances" ordered="false"
          upperBound="-1" eType="#//metric/MetricInstance" containment="true"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="conditions" ordered="false"
          upperBound="-1" eType="#//metric/Condition" containment="true"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="properties" ordered="false"
          upperBound="-1" eType="#//metric/Property" containment="true"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="bindings" ordered="false"
          upperBound="-1" eType="#//metric/MetricObjectBinding" containment="true"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="windows" ordered="false"
          upperBound="-1" eType="#//metric/Window" containment="true"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="schedules" ordered="false"
          upperBound="-1" eType="#//metric/Schedule" containment="true"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="parameters" ordered="false"
          upperBound="-1" eType="#//metric/MetricFormulaParameter" containment="true"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="sensors" ordered="false"
          upperBound="-1" eType="#//metric/Sensor" containment="true"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="units" ordered="false"
          upperBound="-1" eType="#//unit/Unit" containment="true"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="MetricContext" abstract="true" eSuperTypes="#//metric/ConditionContext">
      <eStructuralFeatures xsi:type="ecore:EReference" name="metric" lowerBound="1"
          eType="#//metric/Metric"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="window" eType="#//metric/Window"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="schedule" eType="#//metric/Schedule"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="CompositeMetricContext" eSuperTypes="#//metric/MetricContext">
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
        <details key="constraints" value="metrics_in_composing_contexts_in_metric_formula composite_metric_context_correct_metric_type"/>
      </eAnnotations>
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
        <details key="metrics_in_composing_contexts_in_metric_formula" value="Tuple {&#xA;&#x9;message : String = 'In MetricContext: ' + self.name +&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;' one or more composingMetricContexts correspond to metrics which are either equal to this context metric: ' +&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;self.metric.name + ' or do not belong to the context metric'&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;'s formula',&#xA;&#x9;status : Boolean = self.metric.oclIsTypeOf(CompositeMetric) and self.composingMetricContexts&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;->forAll(p | p.metric &lt;> self.metric and self.metric.oclAsType(CompositeMetric).formula.containsMetric(p.metric))&#xA;}.status"/>
        <details key="composite_metric_context_correct_metric_type" value="Tuple {&#xA;&#x9;message : String = 'In CompositeMetricContext: ' + self.name + ' the metric: '&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;+ self.metric.name + ' should be composite but it isn\'t',&#xA;&#x9;status : Boolean = self.metric.oclIsTypeOf(CompositeMetric)&#xA;}.status"/>
      </eAnnotations>
      <eStructuralFeatures xsi:type="ecore:EReference" name="composingMetricContexts"
          upperBound="-1" eType="#//metric/MetricContext"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="RawMetricContext" eSuperTypes="#//metric/MetricContext">
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
        <details key="constraints" value="raw_metric_context_correct_metric_type"/>
      </eAnnotations>
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
        <details key="raw_metric_context_correct_metric_type" value="Tuple {&#xA;&#x9;message : String = 'In RawMetricContext: ' + self.name + ' the metric: ' +&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;self.metric.name + ' should be raw but it isn\'t',&#xA;&#x9;status : Boolean = self.metric.oclIsTypeOf(RawMetric)&#xA;}.status"/>
      </eAnnotations>
      <eStructuralFeatures xsi:type="ecore:EReference" name="sensor" lowerBound="1"
          eType="#//metric/Sensor"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="PropertyContext" eSuperTypes="#//metric/ConditionContext">
      <eStructuralFeatures xsi:type="ecore:EReference" name="property" lowerBound="1"
          eType="#//metric/Property"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EEnum" name="FunctionPatternType">
      <eLiterals name="MAP"/>
      <eLiterals name="REDUCE" value="1"/>
    </eClassifiers>
  </eSubpackages>
  <eSubpackages name="organisation" nsURI="http://www.paasage.eu/2015/06/camel/organisation"
      nsPrefix="organisation">
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
      <details key="invocationDelegates" value="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot"/>
      <details key="settingDelegates" value="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot"/>
      <details key="validationDelegates" value="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot"/>
    </eAnnotations>
    <eClassifiers xsi:type="ecore:EClass" name="OrganisationModel" eSuperTypes="#//Model">
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
        <details key="constraints" value="org_model_provider_or_organisation_supplied"/>
      </eAnnotations>
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
        <details key="org_model_provider_or_organisation_supplied" value="Tuple {&#xA;&#x9;message : String = 'The OrganisationModel: ' + self.name +&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;' should map to one and only organisation or cloud provider',&#xA;&#x9;status : Boolean = provider &lt;> null or organisation &lt;> null&#xA;}.status"/>
      </eAnnotations>
      <eStructuralFeatures xsi:type="ecore:EReference" name="organisation" eType="#//organisation/Organisation"
          containment="true"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="provider" eType="#//organisation/CloudProvider"
          containment="true"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="externalIdentifiers"
          ordered="false" upperBound="-1" eType="#//organisation/ExternalIdentifier"
          containment="true"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="users" ordered="false"
          upperBound="-1" eType="#//organisation/User" containment="true"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="userGroups" ordered="false"
          upperBound="-1" eType="#//organisation/UserGroup" containment="true"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="dataCentres" ordered="false"
          upperBound="-1" eType="#//organisation/DataCenter" containment="true"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="roles" ordered="false"
          upperBound="-1" eType="#//organisation/Role" containment="true"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="roleAssigments" ordered="false"
          upperBound="-1" eType="#//organisation/RoleAssignment" containment="true"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="permissions" ordered="false"
          upperBound="-1" eType="#//organisation/Permission" containment="true"/>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="securityLevel" lowerBound="1"
          eType="#//organisation/SecurityLevel"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="resourceFilters" upperBound="-1"
          eType="#//organisation/ResourceFilter" containment="true"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="Credentials" abstract="true"/>
    <eClassifiers xsi:type="ecore:EClass" name="CloudCredentials" eSuperTypes="#//organisation/Credentials">
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" lowerBound="1"
          eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="cloudProvider" lowerBound="1"
          eType="#//organisation/CloudProvider"/>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="securityGroup" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="publicSSHKey" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="privateSSHKey" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="username" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="password" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="DataCenter">
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
        <details key="constraints" value="unique_datacenter_per_provider no_datacenter_same_location_same_provider"/>
      </eAnnotations>
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
        <details key="unique_datacenter_per_provider" value="Tuple {&#xA;&#x9;message : String = 'There exist data centers of cloud provider that have the same name or the same code name',&#xA;&#x9;status : Boolean = DataCenter.allInstances()&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;->forAll(p1, p2 | p1 &lt;> p2 and p1.oclContainer().oclAsType(OrganisationModel).provider = p2.oclContainer().oclAsType(OrganisationModel).provider implies p1.name &lt;> p2.name and p1.codeName &lt;>&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;p2.codeName)&#xA;}.status"/>
        <details key="no_datacenter_same_location_same_provider" value="Tuple {&#xA;&#x9;message : String = 'There exist data centers of cloud provider which are on the same fine-grained location',&#xA;&#x9;status : Boolean = DataCenter.allInstances()&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;->forAll(p1, p2 | p1 &lt;> p2 and p1.name &lt;> p2.name and p1.oclContainer().oclAsType(OrganisationModel).provider = p2.oclContainer().oclAsType(OrganisationModel).provider implies p1.location &lt;>&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;p2.location)&#xA;}.status"/>
      </eAnnotations>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" lowerBound="1"
          eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="codeName" lowerBound="1"
          eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="location" lowerBound="1"
          eType="#//location/Location"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="Entity"/>
    <eClassifiers xsi:type="ecore:EClass" name="Organisation" eSuperTypes="#//organisation/Entity">
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" lowerBound="1"
          eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="www" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="postalAddress" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="email" lowerBound="1"
          eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="CloudProvider" eSuperTypes="#//organisation/Organisation">
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="public" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="SaaS" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="PaaS" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="IaaS" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="providerModel" eType="#//provider/ProviderModel"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="securityCapability" ordered="false"
          upperBound="-1" eType="#//security/SecurityCapability"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="User" eSuperTypes="#//organisation/Entity">
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" lowerBound="1"
          eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="email" lowerBound="1"
          eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="firstName" lowerBound="1"
          eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="lastName" lowerBound="1"
          eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="www" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="externalIdentifiers"
          upperBound="-1" eType="#//organisation/ExternalIdentifier" containment="true"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="requirementModels" upperBound="-1"
          eType="#//requirement/RequirementModel"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="cloudCredentials" upperBound="-1"
          eType="#//organisation/CloudCredentials" containment="true"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="deploymentModels" upperBound="-1"
          eType="#//deployment/DeploymentModel"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="paasageCredentials" lowerBound="1"
          eType="#//organisation/PaaSageCredentials" containment="true"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="ExternalIdentifier">
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="identifier" lowerBound="1"
          eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="description" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="Permission">
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
        <details key="constraints" value="permission_valid_actions"/>
      </eAnnotations>
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
        <details key="permission_valid_actions" value="Tuple {&#xA;&#x9;message : String = 'Wrong actions were identified for resource:' + self.resourceFilter.name +&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;' in the context of Permission: ' + self.name,&#xA;&#x9;status : Boolean = self.action = camel::ActionType::READ or self.action =&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;camel::ActionType::WRITE&#xA;}.status"/>
      </eAnnotations>
      <eOperations name="checkStartEndDates" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
          <details key="body" value="System.out.println(&quot;CHECKING Permission_Start_Before_End: &quot; + this + &quot; &quot; + this.getStartTime() + &quot; &quot; + this.getEndTime()); java.util.Date date1 = this.getStartTime(); java.util.Date date2 = this.getEndTime(); if (date1 == null || date2 == null || (date1 != null &amp;&amp; date2 != null &amp;&amp; date1.before(date2))) return Boolean.TRUE; return Boolean.FALSE;"/>
        </eAnnotations>
        <eParameters name="this" lowerBound="1" eType="#//organisation/Permission"/>
      </eOperations>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" lowerBound="1"
          eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="role" lowerBound="1"
          eType="#//organisation/Role"/>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="startTime" lowerBound="1"
          eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDate"/>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="endTime" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDate"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="resourceFilter" lowerBound="1"
          eType="#//organisation/ResourceFilter"/>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="action" lowerBound="1"
          eType="#//ActionType"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EEnum" name="SecurityLevel">
      <eLiterals name="LOW"/>
      <eLiterals name="MEDIUM" value="1"/>
      <eLiterals name="HIGH" value="2"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EEnum" name="ResourcePattern">
      <eLiterals name="EXACT"/>
      <eLiterals name="TREE" value="1"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="ResourceFilter" abstract="true">
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" lowerBound="1"
          eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="resourcePattern" lowerBound="1"
          eType="#//organisation/ResourcePattern"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="InformationResourceFilter" eSuperTypes="#//organisation/ResourceFilter">
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
        <details key="constraints" value="information_resource_filter_validity"/>
      </eAnnotations>
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
        <details key="information_resource_filter_validity" value="Tuple {&#xA;&#x9;message : String = 'InformationResourceFilter: ' + self.name +&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;' is not valid as both its own attributes were set',&#xA;&#x9;status : Boolean = everyInformationResource = true implies&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;informationResourcePath = null&#xA;}.status"/>
      </eAnnotations>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="informationResourcePath"
          eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="everyInformationResource"
          lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="ServiceResourceFilter" eSuperTypes="#//organisation/ResourceFilter">
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
        <details key="constraints" value="service_resource_filter_validity"/>
      </eAnnotations>
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
        <details key="service_resource_filter_validity" value="Tuple {&#xA;&#x9;message : String = 'ServiceResourceFilter: ' + self.name +&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;' is not valid as both its own attributes were set',&#xA;&#x9;status : Boolean = everyService = true implies serviceURL = null&#xA;}.status"/>
      </eAnnotations>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="serviceURL" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="everyService" lowerBound="1"
          eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="Role">
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" lowerBound="1"
          eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="RoleAssignment">
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
        <details key="constraints" value="role_assignment_at_least_user_or_group same_role_concurrent_assignments"/>
      </eAnnotations>
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
        <details key="role_assignment_at_least_user_or_group" value="Tuple {&#xA;&#x9;message : String = 'There is no user or user group associated to RoleAssigment:' +&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;self.name,&#xA;&#x9;status : Boolean = self.user &lt;> null or self.userGroup &lt;> null&#xA;}.status"/>
        <details key="same_role_concurrent_assignments" value="Tuple {&#xA;&#x9;message : String = 'There are two or more role assignments which are odentical, i.e., refer to the same organisation, user/user group and role',&#xA;&#x9;status : Boolean = RoleAssignment.allInstances()&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;->forAll(p1, p2 | p1 &lt;> p2 and ((p1.user &lt;> null and p2.user &lt;> null and p1.user = p2.user) or (p1.userGroup &lt;>&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;null and p2.userGroup &lt;> null and p1.userGroup = p2.userGroup)) implies p1.role &lt;> p2.role)&#xA;}.status"/>
      </eAnnotations>
      <eOperations name="checkAssignedOnDates" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
          <details key="body" value="System.out.println(&quot;CHECKING Assignment_Assigned_Before_Start: &quot; + this + &quot; &quot; + this.getStartTime() + &quot; &quot; + this.getEndTime() + &quot; &quot; + this.getAssignmentTime()); java.util.Date date1 = this.getStartTime(); java.util.Date date2 = this.getEndTime(); java.util.Date date = this.getAssignmentTime(); if (date == null) return Boolean.TRUE; else if (date1 != null){ if (date.equals(date1) || date.before(date1)) return Boolean.TRUE; else return Boolean.FALSE;} else if (date2 != null &amp;&amp; date.before(date2)) return Boolean.TRUE; return Boolean.FALSE;"/>
        </eAnnotations>
        <eParameters name="this" lowerBound="1" eType="#//organisation/RoleAssignment"/>
      </eOperations>
      <eOperations name="checkStartEndDates" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
          <details key="body" value="System.out.println(&quot;CHECKING Assignment_Start_Before_End: &quot; + this + &quot; &quot; + this.getStartTime() + &quot; &quot; + this.getEndTime() + &quot; &quot; + this.getAssignmentTime()); java.util.Date date1 = this.getStartTime(); java.util.Date date2 = this.getEndTime(); if (date1 == null || date2 == null || (date1 != null &amp;&amp; date2 != null &amp;&amp; date1.before(date2))) return Boolean.TRUE; return Boolean.FALSE;"/>
        </eAnnotations>
        <eParameters name="this" lowerBound="1" eType="#//organisation/RoleAssignment"/>
      </eOperations>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" lowerBound="1"
          eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="user" eType="#//organisation/User"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="role" lowerBound="1"
          eType="#//organisation/Role"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="userGroup" eType="#//organisation/UserGroup"/>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="startTime" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDate"/>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="endTime" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDate"/>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="assignmentTime" lowerBound="1"
          eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDate"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="UserGroup">
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" lowerBound="1"
          eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="users" lowerBound="1"
          upperBound="-1" eType="#//organisation/User"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="PaaSageCredentials" eSuperTypes="#//organisation/Credentials">
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="password" lowerBound="1"
          eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
    </eClassifiers>
  </eSubpackages>
  <eSubpackages name="provider" nsURI="http://www.paasage.eu/2015/06/camel/provider"
      nsPrefix="provider">
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
      <details key="invocationDelegates" value="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot"/>
      <details key="settingDelegates" value="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot"/>
      <details key="validationDelegates" value="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot"/>
    </eAnnotations>
    <eClassifiers xsi:type="ecore:EClass" name="ProviderModel" eSuperTypes="#//Model">
      <eStructuralFeatures xsi:type="ecore:EReference" name="constraints" upperBound="-1"
          eType="#//provider/Constraint" containment="true"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="rootFeature" lowerBound="1"
          eType="#//provider/Feature" containment="true"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="Attribute">
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
        <details key="constraints" value="attribute_must_have_at_least_value_or_value_type attribute_value_in_value_type"/>
      </eAnnotations>
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
        <details key="attribute_must_have_at_least_value_or_value_type" value="Tuple {&#xA;&#x9;message : String = 'Attribute: ' + self.name +&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;' does not have a value or value type',&#xA;&#x9;status : Boolean = value &lt;> null or valueType &lt;> null&#xA;}.status"/>
        <details key="attribute_value_in_value_type" value="Tuple {&#xA;&#x9;message : String = 'Value  is not contained in ValueType in Attribute: ' + self.name,&#xA;&#x9;status : Boolean = (value&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;> null and valueType &lt;> null) implies self.checkValue(value, false)&#xA;}.status"/>
      </eAnnotations>
      <eOperations name="checkValue" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
        <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
          <details key="body" value="if (self.valueType &lt;> null)&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;then if (self.valueType.oclIsTypeOf(camel::type::Range))&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;then if (v.oclIsTypeOf(camel::type::BoolValue) or v.oclIsTypeOf(camel::type::StringsValue))&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;then false&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else if (v.oclIsTypeOf(camel::type::IntegerValue))&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;then&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;self.valueType.oclAsType(camel::type::Range).includesValue(v.oclAsType(camel::type::IntegerValue).value.oclAsType(ecore::EDouble))&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else if (v.oclIsTypeOf(camel::type::FloatsValue))&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;then&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;self.valueType.oclAsType(camel::type::Range).includesValue(v.oclAsType(camel::type::FloatsValue).value.oclAsType(ecore::EDouble))&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;self.valueType.oclAsType(camel::type::Range).includesValue(v.oclAsType(camel::type::DoublePrecisionValue).value)&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else if (self.valueType.oclIsTypeOf(camel::type::RangeUnion))&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;then if (v.oclIsTypeOf(camel::type::BoolValue) or v.oclIsTypeOf(camel::type::StringsValue))&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;then false&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else if (v.oclIsTypeOf(camel::type::IntegerValue))&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;then&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;self.valueType.oclAsType(camel::type::RangeUnion).includesValue(v.oclAsType(camel::type::IntegerValue).value.oclAsType(ecore::EDouble))&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else if (v.oclIsTypeOf(camel::type::FloatsValue))&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;then&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;self.valueType.oclAsType(camel::type::RangeUnion).includesValue(v.oclAsType(camel::type::FloatsValue).value.oclAsType(ecore::EDouble))&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;self.valueType.oclAsType(camel::type::RangeUnion).includesValue(v.oclAsType(camel::type::DoublePrecisionValue).value)&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else if (self.valueType.oclIsTypeOf(camel::type::List))&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;then (self.valueType.oclAsType(camel::type::List).checkValueType(v) and&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;self.valueType.oclAsType(camel::type::List).includesValue(v))&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else if (self.valueType.oclIsTypeOf(camel::type::Enumeration) and v.oclIsTypeOf(camel::type::StringsValue))&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;then&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;self.valueType.oclAsType(camel::type::Enumeration).includesName(v.oclAsType(camel::type::StringsValue).value)&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else if (self.valueType.oclIsTypeOf(camel::type::Enumeration) and v.oclIsTypeOf(camel::type::EnumerateValue))&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;then&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;(self.valueType.oclAsType(camel::type::Enumeration).includesName(v.oclAsType(camel::type::EnumerateValue).name)&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;and&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;self.valueType.oclAsType(camel::type::Enumeration).includesValue(v.oclAsType(camel::type::EnumerateValue).value))&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else if (self.valueType.oclIsTypeOf(camel::type::StringValueType))&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;then v.oclIsTypeOf(camel::type::StringsValue)&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else if (self.valueType.oclIsTypeOf(camel::type::BooleanValueType))&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;then v.oclIsTypeOf(camel::type::BoolValue)&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else false&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else if (diff and self.value &lt;> null)&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;then self.value.valueEquals(v)&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else false&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif"/>
        </eAnnotations>
        <eParameters name="v" lowerBound="1" eType="#//type/SingleValue"/>
        <eParameters name="diff" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
      </eOperations>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" lowerBound="1"
          eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="value" eType="#//type/SingleValue"
          containment="true"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="valueType" eType="#//type/ValueType"/>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="unitType" eType="#//unit/UnitType">
        <eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
          <details key="body" value="OptimizationRequirement"/>
          <details key="unique" value="false"/>
          <details key="upper" value="*"/>
        </eAnnotations>
      </eStructuralFeatures>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="AttributeConstraint">
      <eAnnotations source="Ecore">
        <details key="attributeConstraintValidation" value="atLeastOneDefinied"/>
      </eAnnotations>
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
        <details key="constraints" value="attribute_constraint_correct_values different_attrs_in_attribute_constraint"/>
      </eAnnotations>
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
        <details key="attribute_constraint_correct_values" value="Tuple {&#xA;&#x9;message : String = 'In AttributeConstraint: ' + self.toString() +&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;' either the fromValue: ' + fromValue.toString() + ' or the toValue: ' + toValue.toString() +&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;' are not contained in the value types of the respective attributes: ' + from.name + ' ' + to.name +&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;', respectively',&#xA;&#x9;status : Boolean = from.checkValue(fromValue, true) and to.checkValue(toValue, true)&#xA;}.status"/>
        <details key="different_attrs_in_attribute_constraint" value="Tuple {&#xA;&#x9;message : String = 'In AttributeConstraint: ' + self.toString() +&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;' the same attribute: ' + from.name + ' is used in the from and to associations',&#xA;&#x9;status : Boolean = from &lt;> to&#xA;}.status"/>
      </eAnnotations>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="from" lowerBound="1"
          eType="#//provider/Attribute"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="to" lowerBound="1" eType="#//provider/Attribute"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="fromValue" lowerBound="1"
          eType="#//type/SingleValue" containment="true"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="toValue" lowerBound="1"
          eType="#//type/SingleValue" containment="true"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="Cardinality" abstract="true">
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
        <details key="constraints" value="cardinality_min_less_equal_than_max"/>
      </eAnnotations>
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
        <details key="cardinality_min_less_equal_than_max" value="Tuple {&#xA;&#x9;message : String = 'In Cardinality' + self.toString() +&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;' either negative values are given for cardinalityMin or cardinalityMax or cardinalityMin is greater than cardinalityMax',&#xA;&#x9;status : Boolean = cardinalityMin&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;>= 0 and (cardinalityMax >= 0 implies cardinalityMin &lt;= cardinalityMax)&#xA;}.status"/>
      </eAnnotations>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="cardinalityMin" lowerBound="1"
          eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="cardinalityMax" lowerBound="1"
          eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="FeatCardinality" eSuperTypes="#//provider/Cardinality">
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
        <details key="constraints" value="correct_feat_cardinality"/>
      </eAnnotations>
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
        <details key="correct_feat_cardinality" value="Tuple {&#xA;&#x9;message : String = 'In FeatCardinality: ' + self.toString() +&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;' either the value given is negative or the value is less than cardinalityMin or value is greater than cardinalityMax',&#xA;&#x9;status : Boolean = (value&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;> 0 implies (cardinalityMin &lt;= value) and (cardinalityMax &lt;> - 1 implies value &lt;= cardinalityMax))&#xA;}.status"/>
      </eAnnotations>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="value" lowerBound="1"
          eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="GroupCardinality" eSuperTypes="#//provider/Cardinality"/>
    <eClassifiers xsi:type="ecore:EClass" name="Clone">
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" lowerBound="1"
          eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString">
        <eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
          <details key="body" value="ServiceLevelObjective"/>
          <details key="unique" value="false"/>
          <details key="upper" value="*"/>
        </eAnnotations>
        <eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
          <details key="body" value="ServiceLevelObjective"/>
          <details key="unique" value="false"/>
          <details key="upper" value="*"/>
        </eAnnotations>
        <eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
          <details key="body" value="MetricCondition"/>
          <details key="unique" value="false"/>
          <details key="upper" value="*"/>
        </eAnnotations>
      </eStructuralFeatures>
      <eStructuralFeatures xsi:type="ecore:EReference" name="subClones" upperBound="-1"
          eType="#//provider/Clone"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="Constraint" abstract="true">
      <eAnnotations source="Ecore">
        <details key="fromAttributeConstraintsvalidation" value="fromAttributesBelongsToFromFeature"/>
        <details key="toAttributeConstraintsvalidation" value="toAttributesBelongsToToFeature"/>
      </eAnnotations>
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
        <details key="constraints" value="constraint_from_attributes_belong_to_from_feature_and_symmetric"/>
      </eAnnotations>
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
        <details key="constraint_from_attributes_belong_to_from_feature_and_symmetric"
            value="Tuple {&#xA;&#x9;message : String = 'Constraint: ' + name +&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;' has attribute constraints which map to from or to attributes that do not belong to the respective from: ' +&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;from.name + ' or to: ' + to.name + ' feature of this constraint',&#xA;&#x9;status : Boolean = attributeConstraints&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;->forAll(p | (from.attributes&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;->includes(p.from) and to.attributes&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;->includes(p.to)))&#xA;}.status"/>
      </eAnnotations>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" lowerBound="1"
          eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString">
        <eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
          <details key="body" value="PropertyCondition"/>
          <details key="unique" value="false"/>
          <details key="upper" value="*"/>
        </eAnnotations>
      </eStructuralFeatures>
      <eStructuralFeatures xsi:type="ecore:EReference" name="from" lowerBound="1"
          eType="#//provider/Feature"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="to" lowerBound="1" eType="#//provider/Feature"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="attributeConstraints"
          upperBound="-1" eType="#//provider/AttributeConstraint" containment="true"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="Excludes" eSuperTypes="#//provider/Constraint"/>
    <eClassifiers xsi:type="ecore:EClass" name="Implies" eSuperTypes="#//provider/Constraint"/>
    <eClassifiers xsi:type="ecore:EClass" name="Requires" eSuperTypes="#//provider/Constraint">
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
        <details key="constraints" value="requires_cardFrom_to_conformance"/>
      </eAnnotations>
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
        <details key="requires_cardFrom_to_conformance" value="Tuple {&#xA;&#x9;message : String = 'In Requires Constraint: ' + self.name +&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;' there are from or to cardinalities that do not conform to the designated cardinality restrictions of the respective from: '&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;+ from.name + ' or to: ' + to.name + ' features of this constraint',&#xA;&#x9;status : Boolean = (cardFrom &lt;> null implies&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;(cardFrom.cardinalityMin >= from.featureCardinality.cardinalityMin and ((from.featureCardinality.cardinalityMax =&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;- 1) or (cardFrom.cardinalityMax &lt;> - 1 and cardFrom.cardinalityMax &lt;= from.featureCardinality.cardinalityMax))))&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;and (cardTo &lt;> null implies (cardTo.cardinalityMin >= to.featureCardinality.cardinalityMin and&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;((to.featureCardinality.cardinalityMax = - 1) or (cardTo.cardinalityMax &lt;> - 1 and cardTo.cardinalityMax &lt;=&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;to.featureCardinality.cardinalityMax))))&#xA;}.status"/>
      </eAnnotations>
      <eStructuralFeatures xsi:type="ecore:EReference" name="scopeFrom" eType="#//provider/Scope"
          containment="true"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="scopeTo" eType="#//provider/Scope"
          containment="true"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="cardFrom" eType="#//provider/FeatCardinality"
          containment="true"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="cardTo" eType="#//provider/FeatCardinality"
          containment="true"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="Functional" eSuperTypes="#//provider/Requires">
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
        <details key="constraints" value="correct_values_for_functional"/>
      </eAnnotations>
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
        <details key="correct_values_for_functional" value="Tuple {&#xA;&#x9;message : String = 'In Functional Constraint: ' + self.name +&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;', either the value of order is negative or that of the value attributes is not positive',&#xA;&#x9;status : Boolean = order >= 0 and value >&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;0&#xA;}.status"/>
      </eAnnotations>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="type" eType="#//provider/Operator">
        <eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
          <details key="body" value="ProviderRequirement"/>
          <details key="unique" value="false"/>
          <details key="upper" value="*"/>
        </eAnnotations>
        <eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
          <details key="body" value="ProviderRequirement"/>
          <details key="unique" value="false"/>
          <details key="upper" value="*"/>
        </eAnnotations>
        <eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
          <details key="body" value="BinaryEventPattern"/>
          <details key="unique" value="false"/>
          <details key="upper" value="*"/>
        </eAnnotations>
      </eStructuralFeatures>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="order" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt">
        <eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
          <details key="body" value="BinaryEventPattern"/>
          <details key="unique" value="false"/>
          <details key="upper" value="*"/>
        </eAnnotations>
      </eStructuralFeatures>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="value" lowerBound="1"
          eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="Feature">
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" lowerBound="1"
          eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="attributes" upperBound="-1"
          eType="#//provider/Attribute" containment="true"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="subFeatures" upperBound="-1"
          eType="#//provider/Feature" containment="true"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="featureCardinality" lowerBound="1"
          eType="#//provider/FeatCardinality" containment="true"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="clones" upperBound="-1"
          eType="#//provider/Clone" containment="true"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="Alternative" eSuperTypes="#//provider/Feature">
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
        <details key="constraints" value="alternative_variants_diff_from_sub_features"/>
      </eAnnotations>
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
        <details key="alternative_variants_diff_from_sub_features" value="Tuple {&#xA;&#x9;message : String = 'There is a pair of subFeature and variant with the same name for Feature: '&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;+ self.name,&#xA;&#x9;status : Boolean = subFeatures&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;->forAll(p | not (variants&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;->exists(q | q.name = p.name)))&#xA;}.status"/>
      </eAnnotations>
      <eStructuralFeatures xsi:type="ecore:EReference" name="groupCardinality" eType="#//provider/GroupCardinality"
          containment="true"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="variants" lowerBound="1"
          upperBound="-1" eType="#//provider/Feature" containment="true"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="Exclusive" eSuperTypes="#//provider/Alternative"/>
    <eClassifiers xsi:type="ecore:EEnum" name="Operator">
      <eLiterals name="select"/>
      <eLiterals name="add" value="1"/>
      <eLiterals name="remove" value="2"/>
      <eLiterals name="multiply" value="3"/>
      <eLiterals name="divide" value="4"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="Scope" abstract="true"/>
    <eClassifiers xsi:type="ecore:EClass" name="Instance" eSuperTypes="#//provider/Scope">
      <eStructuralFeatures xsi:type="ecore:EReference" name="feature" lowerBound="1"
          eType="#//provider/Feature"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="Product" eSuperTypes="#//provider/Scope"/>
  </eSubpackages>
  <eSubpackages name="requirement" nsURI="http://www.paasage.eu/2015/06/camel/requirement"
      nsPrefix="requirement">
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
      <details key="invocationDelegates" value="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot"/>
      <details key="settingDelegates" value="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot"/>
      <details key="validationDelegates" value="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot"/>
    </eAnnotations>
    <eClassifiers xsi:type="ecore:EClass" name="RequirementModel" eSuperTypes="#//Model">
      <eStructuralFeatures xsi:type="ecore:EReference" name="requirements" upperBound="-1"
          eType="#//requirement/Requirement" containment="true"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="Requirement" abstract="true">
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" lowerBound="1"
          eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString">
        <eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
          <details key="body" value="SecurityCapability"/>
          <details key="unique" value="false"/>
          <details key="upper" value="*"/>
        </eAnnotations>
      </eStructuralFeatures>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="RequirementGroup" eSuperTypes="#//requirement/Requirement">
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
        <details key="constraints" value="applications_in_sub_groups_in_group requirement_group_no_conflict_reqs requirements_in_group_refer_to_group_applications"/>
      </eAnnotations>
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
        <details key="applications_in_sub_groups_in_group" value="Tuple {&#xA;&#x9;message : String = 'RequirementGroup: ' + self.name +&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;' has one or more sub-groups that map to applications which are not included in the group\'s list of applications',&#xA;&#x9;status : Boolean = self.requirements&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;->forAll(p | p.oclIsTypeOf(RequirementGroup) implies p.oclAsType(RequirementGroup).application&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;->forAll(a | self.application&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;->includes(a)))&#xA;}.status"/>
        <details key="requirement_group_no_conflict_reqs" value="Tuple {&#xA;&#x9;message : String = 'RequirementGroup: ' + self.name +&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;' has two or more scale requirements of the same type that are conflicting, i.e., refer to the same VM (in case of vertical requirements) or component (in case of horizontal requirements)',&#xA;&#x9;status : Boolean = if&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;(self.requirementOperator = RequirementOperatorType::AND)&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;then self.requirements&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;->forAll(p1, p2 | (p1 &lt;> p2 and p1.oclIsKindOf(camel::requirement::ScaleRequirement) and&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;p2.oclIsKindOf(camel::requirement::ScaleRequirement) and p1.oclType() = p2.oclType()) implies if&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;(p1.oclIsTypeOf(camel::requirement::VerticalScaleRequirement))&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;then p1.oclAsType(camel::requirement::VerticalScaleRequirement).vm &lt;>&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;p2.oclAsType(camel::requirement::VerticalScaleRequirement).vm&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else p1.oclAsType(camel::requirement::HorizontalScaleRequirement).component &lt;>&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;p2.oclAsType(camel::requirement::HorizontalScaleRequirement).component&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif)&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;else true&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;endif&#xA;}.status"/>
        <details key="requirements_in_group_refer_to_group_applications" value="Tuple {&#xA;&#x9;message : String = 'RequirementGroup: ' + self.name +&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;' has one or more requirements that map to an application which is not included in the group\'s list of applications',&#xA;&#x9;status : Boolean = if&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;(application&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;->notEmpty())&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;then requirements&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;->forAll(p | if (p.oclIsTypeOf(camel::requirement::ServiceLevelObjective))&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;then if&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;(p.oclAsType(camel::requirement::ServiceLevelObjective).customServiceLevel.oclIsTypeOf(camel::metric::MetricCondition))&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;then application&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;->includes(p.oclAsType(camel::requirement::ServiceLevelObjective).customServiceLevel.oclAsType(camel::metric::MetricCondition).metricContext.application)&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else if&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;(p.oclAsType(camel::requirement::ServiceLevelObjective).customServiceLevel.oclIsTypeOf(camel::metric::MetricCondition))&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;then if&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;(p.oclAsType(camel::requirement::ServiceLevelObjective).customServiceLevel.oclAsType(camel::metric::MetricCondition).metricContext.application&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;> null)&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;then application&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;->includes(p.oclAsType(camel::requirement::ServiceLevelObjective).customServiceLevel.oclAsType(camel::metric::MetricCondition).metricContext.application)&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else if&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;(p.oclAsType(camel::requirement::ServiceLevelObjective).customServiceLevel.oclAsType(camel::metric::MetricCondition).metricContext.component&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;> null)&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;then if&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;(p.oclAsType(camel::requirement::ServiceLevelObjective).customServiceLevel.oclAsType(camel::metric::MetricCondition).metricContext.component.oclIsTypeOf(camel::deployment::InternalComponent))&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;then application&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;->exists(q | q.deploymentModels&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;->exists(r | (r.internalComponents&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;->includes(p.oclAsType(camel::requirement::ServiceLevelObjective).customServiceLevel.oclAsType(camel::metric::MetricCondition).metricContext.component.oclAsType(camel::deployment::InternalComponent)))))&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else application&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;->exists(q | q.deploymentModels&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;->exists(r | (r.vms&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;->includes(p.oclAsType(camel::requirement::ServiceLevelObjective).customServiceLevel.oclAsType(camel::metric::MetricCondition).metricContext.component.oclAsType(camel::deployment::VM)))))&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else false&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else if&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;(p.oclAsType(camel::requirement::ServiceLevelObjective).customServiceLevel.oclIsTypeOf(camel::metric::PropertyCondition))&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;then if&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;(p.oclAsType(camel::requirement::ServiceLevelObjective).customServiceLevel.oclAsType(camel::metric::PropertyCondition).propertyContext.application&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;> null)&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;then application&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;->includes(p.oclAsType(camel::requirement::ServiceLevelObjective).customServiceLevel.oclAsType(camel::metric::PropertyCondition).propertyContext.application)&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else if&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;(p.oclAsType(camel::requirement::ServiceLevelObjective).customServiceLevel.oclAsType(camel::metric::PropertyCondition).propertyContext.component&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;> null)&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;then if&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;(p.oclAsType(camel::requirement::ServiceLevelObjective).customServiceLevel.oclAsType(camel::metric::PropertyCondition).propertyContext.component.oclIsTypeOf(camel::deployment::InternalComponent))&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;then application&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;->exists(q | q.deploymentModels&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;->exists(r | (r.internalComponents&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;->includes(p.oclAsType(camel::requirement::ServiceLevelObjective).customServiceLevel.oclAsType(camel::metric::PropertyCondition).propertyContext.component.oclAsType(camel::deployment::InternalComponent)))))&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else application&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;->exists(q | q.deploymentModels&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;->exists(r | (r.vms&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;->includes(p.oclAsType(camel::requirement::ServiceLevelObjective).customServiceLevel.oclAsType(camel::metric::PropertyCondition).propertyContext.component.oclAsType(camel::deployment::VM)))))&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else false&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else false&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else if (p.oclIsTypeOf(camel::requirement::OptimisationRequirement))&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;then if (p.oclAsType(camel::requirement::OptimisationRequirement).metric &lt;> null or&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;p.oclAsType(camel::requirement::OptimisationRequirement).property &lt;> null)&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;then if (p.oclAsType(camel::requirement::OptimisationRequirement).application &lt;> null)&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;then application&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;->includes(p.oclAsType(camel::requirement::OptimisationRequirement).application)&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else if (p.oclAsType(camel::requirement::OptimisationRequirement).component &lt;> null)&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;then if&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;(p.oclAsType(camel::requirement::OptimisationRequirement).component.oclIsTypeOf(camel::deployment::InternalComponent))&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;then application&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;->exists(q | q.deploymentModels&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;->exists(r | (r.internalComponents&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;->includes(p.oclAsType(camel::requirement::OptimisationRequirement).component.oclAsType(camel::deployment::InternalComponent)))))&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else application&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;->exists(q | q.deploymentModels&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;->exists(r | (r.vms&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;->includes(p.oclAsType(camel::requirement::OptimisationRequirement).component.oclAsType(camel::deployment::VM)))))&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else false&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else false&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else if (p.oclIsTypeOf(camel::requirement::SecurityRequirement))&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;then if (p.oclAsType(camel::requirement::SecurityRequirement).application &lt;> null)&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;then application&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;->includes(p.oclAsType(camel::requirement::SecurityRequirement).application)&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else false&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else true&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif)&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;else true&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;endif&#xA;}.status"/>
      </eAnnotations>
      <eOperations name="checkRecursiveness" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
          <details key="body" value="System.out.println(&quot;Checking recursiveness for RequirementGroup: &quot; + rg1);&#xD;&#xA;&#x9;&#x9;for (Requirement r2: rg1.getRequirements()){&#xD;&#xA;&#x9;&#x9;&#x9;EList&lt;RequirementGroup> context2 = null;&#xD;&#xA;&#x9;&#x9;&#x9;if (context == null) context2 = new org.eclipse.emf.common.util.BasicEList&lt;RequirementGroup>();&#xD;&#xA;&#x9;&#x9;&#x9;else context2 = new org.eclipse.emf.common.util.BasicEList&lt;RequirementGroup>(context);&#xD;&#xA;&#x9;&#x9;&#x9;if (!resources){&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;if (r2 instanceof RequirementGroup){&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;RequirementGroup rg2 = (RequirementGroup)r2;&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;if (context == null || !context.contains(rg2)){&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;context2.add(rg2);&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;if (rg2.getName().equals(r.getName())) return Boolean.TRUE;&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;if (checkRecursiveness(rg2,r,resources,context2)) return Boolean.TRUE;&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;}&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;}&#xD;&#xA;&#x9;&#x9;&#x9;}&#xD;&#xA;&#x9;&#x9;&#x9;else{&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;if (r.getName().equals(r2.getName())) return true;&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;if (r2 instanceof RequirementGroup){&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;RequirementGroup rg2 = (RequirementGroup)r2;&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;if (context == null || !context.contains(rg2)){&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;context2.add(rg2);&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;if (checkRecursiveness(rg2,r,resources,context2)) return Boolean.TRUE;&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;}&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;}&#xD;&#xA;&#x9;&#x9;&#x9;}&#xD;&#xA;&#x9;&#x9;}&#xD;&#xA;&#x9;&#x9;return Boolean.FALSE;"/>
        </eAnnotations>
        <eParameters name="rg1" eType="#//requirement/RequirementGroup"/>
        <eParameters name="r" eType="#//requirement/HardRequirement"/>
        <eParameters name="resources" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
        <eParameters name="context" upperBound="-1" eType="#//requirement/RequirementGroup"/>
      </eOperations>
      <eStructuralFeatures xsi:type="ecore:EReference" name="requirements" lowerBound="1"
          upperBound="-1" eType="#//requirement/Requirement"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="application" upperBound="-1"
          eType="#//Application"/>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="requirementOperator"
          lowerBound="1" eType="#//requirement/RequirementOperatorType">
        <eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
          <details key="body" value="Requires"/>
        </eAnnotations>
      </eStructuralFeatures>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EEnum" name="RequirementOperatorType">
      <eLiterals name="AND"/>
      <eLiterals name="OR" value="1"/>
      <eLiterals name="XOR" value="2"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="HardRequirement" abstract="true" eSuperTypes="#//requirement/Requirement"/>
    <eClassifiers xsi:type="ecore:EClass" name="SoftRequirement" abstract="true" eSuperTypes="#//requirement/Requirement">
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
        <details key="constraints" value="non_negative_priorities_for_soft_requirement"/>
      </eAnnotations>
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
        <details key="non_negative_priorities_for_soft_requirement" value="Tuple {&#xA;&#x9;message : String = 'Requirement: ' + self.name + ' has a negative priority: ' +&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;self.priority.toString(),&#xA;&#x9;status : Boolean = self.priority >= 0.0&#xA;}.status"/>
      </eAnnotations>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="priority" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
        <eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
          <details key="body" value="BinaryEventPattern"/>
          <details key="unique" value="false"/>
          <details key="upper" value="*"/>
        </eAnnotations>
        <eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
          <details key="body" value="BinaryEventPattern"/>
          <details key="unique" value="false"/>
          <details key="upper" value="*"/>
        </eAnnotations>
      </eStructuralFeatures>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="ServiceLevelObjective" eSuperTypes="#//requirement/HardRequirement">
      <eStructuralFeatures xsi:type="ecore:EReference" name="customServiceLevel" lowerBound="1"
          eType="#//metric/Condition"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="OptimisationRequirement" eSuperTypes="#//requirement/SoftRequirement">
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
        <details key="constraints" value="optimization_requirement_metric_or_prop"/>
      </eAnnotations>
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
        <details key="optimization_requirement_metric_or_prop" value="Tuple {&#xA;&#x9;message : String = 'In OptimizationRequirement: ' + self.name +&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;' no metric or property has been given',&#xA;&#x9;status : Boolean = (metric &lt;> null and property = null and (application &lt;> null or&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;component &lt;> null)) or (property &lt;> null and metric = null and (application &lt;> null or component &lt;> null))&#xA;}.status"/>
      </eAnnotations>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="optimisationFunction"
          lowerBound="1" eType="#//requirement/OptimisationFunctionType"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="metric" eType="#//metric/Metric"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="property" eType="#//metric/Property"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="application" eType="#//Application"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="component" eType="#//deployment/Component"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="metricContext" eType="#//metric/MetricContext"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="HardwareRequirement" abstract="true"
        eSuperTypes="#//requirement/HardRequirement"/>
    <eClassifiers xsi:type="ecore:EClass" name="QualitativeHardwareRequirement" eSuperTypes="#//requirement/HardwareRequirement">
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="minBenchmark" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
        <eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
          <details key="body" value="NonFunctionalEvent"/>
          <details key="unique" value="false"/>
          <details key="upper" value="*"/>
        </eAnnotations>
        <eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
          <details key="body" value="NonFunctionalEvent"/>
          <details key="unique" value="false"/>
          <details key="upper" value="*"/>
        </eAnnotations>
      </eStructuralFeatures>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="maxBenchmark" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="QuantitativeHardwareRequirement" eSuperTypes="#//requirement/HardwareRequirement">
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
        <details key="constraints" value="one_alternative_provided_in_quantitative_req quantitative_req_correct_input"/>
      </eAnnotations>
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
        <details key="one_alternative_provided_in_quantitative_req" value="Tuple {&#xA;&#x9;message : String = 'QuantitativeHardwareRequirement with name: ' + self.name +&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;' should be have at least one min or max value for a VM characteristic',&#xA;&#x9;status : Boolean = ((minRAM > 0 or maxRAM > 0)) or&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;((minStorage > 0 or maxStorage > 0)) or (minCores > 0 or maxCores > 0)&#xA;}.status"/>
        <details key="quantitative_req_correct_input" value="Tuple {&#xA;&#x9;message : String = 'Correct (non-negative) values for the characteristics of VM in QuantitativeHardwareRequirement with name: '&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;+ self.name + ' should be provided',&#xA;&#x9;status : Boolean = minRAM >= 0 and maxRAM >= 0 and minCores >= 0 and maxCores >= 0 and&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;minStorage >= 0 and maxStorage >= 0&#xA;}.status"/>
      </eAnnotations>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="minCPU" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="maxCPU" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="minCores" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="maxCores" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt">
        <eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
          <details key="body" value="EventInstance"/>
          <details key="unique" value="false"/>
          <details key="upper" value="*"/>
        </eAnnotations>
        <eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
          <details key="body" value="EventInstance"/>
          <details key="unique" value="false"/>
          <details key="upper" value="*"/>
        </eAnnotations>
      </eStructuralFeatures>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="minRAM" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt">
        <eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
          <details key="body" value="EventInstance"/>
          <details key="unique" value="false"/>
          <details key="upper" value="*"/>
        </eAnnotations>
        <eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
          <details key="body" value="EventInstance"/>
          <details key="unique" value="false"/>
          <details key="upper" value="*"/>
        </eAnnotations>
      </eStructuralFeatures>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="maxRAM" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="minStorage" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="maxStorage" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="ProviderRequirement" eSuperTypes="#//requirement/HardRequirement">
      <eStructuralFeatures xsi:type="ecore:EReference" name="providers" lowerBound="1"
          upperBound="-1" eType="#//organisation/CloudProvider"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="OSOrImageRequirement" abstract="true"
        eSuperTypes="#//requirement/HardRequirement"/>
    <eClassifiers xsi:type="ecore:EClass" name="OSRequirement" eSuperTypes="#//requirement/OSOrImageRequirement">
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="os" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="is64os" lowerBound="1"
          eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
          defaultValueLiteral="true">
        <eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
          <details key="body" value="HorizontalScalingAction"/>
          <details key="unique" value="false"/>
          <details key="upper" value="*"/>
        </eAnnotations>
        <eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
          <details key="body" value="HorizontalScalingAction"/>
          <details key="unique" value="false"/>
          <details key="upper" value="*"/>
        </eAnnotations>
      </eStructuralFeatures>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="ImageRequirement" eSuperTypes="#//requirement/OSOrImageRequirement">
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="imageId" lowerBound="1"
          eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="SecurityRequirement" eSuperTypes="#//requirement/HardRequirement">
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
        <details key="constraints" value="security_req_component_in_app"/>
      </eAnnotations>
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
        <details key="security_req_component_in_app" value="Tuple {&#xA;&#x9;message : String = 'SecurityRequirement' + self.name +&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;' maps to a component  which is not included in any deploymentModel of the respective application referenced',&#xA;&#x9;status : Boolean = (application&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;> null and component &lt;> null) implies application.deploymentModels&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;->exists(d | (d.internalComponents&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;->includes(component)))&#xA;}.status"/>
      </eAnnotations>
      <eStructuralFeatures xsi:type="ecore:EReference" name="securityControls" lowerBound="1"
          upperBound="-1" eType="#//security/SecurityControl"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="application" eType="#//Application"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="component" eType="#//deployment/InternalComponent"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="LocationRequirement" eSuperTypes="#//requirement/HardRequirement">
      <eStructuralFeatures xsi:type="ecore:EReference" name="locations" lowerBound="1"
          upperBound="-1" eType="#//location/Location"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="ScaleRequirement" abstract="true"
        eSuperTypes="#//requirement/HardRequirement"/>
    <eClassifiers xsi:type="ecore:EClass" name="HorizontalScaleRequirement" eSuperTypes="#//requirement/ScaleRequirement">
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
        <details key="constraints" value="horiz_scale_requirement_min_max_enforcement"/>
      </eAnnotations>
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
        <details key="horiz_scale_requirement_min_max_enforcement" value="Tuple {&#xA;&#x9;message : String = 'HorizontalScaleRequirement: ' + self.name +&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;' has wrong values for the minInstances and/or maxInstance properties. The minInstances value should be positive, the maxInstances value positive or equal to -1, and when maxInstances value is positive, then minInstances value should not be greater than it',&#xA;&#x9;status : Boolean = self.minInstances&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;> 0 and (self.maxInstances > 0 or self.maxInstances = - 1) and (self.maxInstances &lt;> - 1 implies self.minInstances&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;= self.maxInstances)&#xA;}.status"/>
      </eAnnotations>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="minInstances" lowerBound="1"
          eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="maxInstances" lowerBound="1"
          eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt">
        <eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
          <details key="body" value="ScalabilityRule"/>
          <details key="unique" value="false"/>
          <details key="upper" value="*"/>
        </eAnnotations>
      </eStructuralFeatures>
      <eStructuralFeatures xsi:type="ecore:EReference" name="component" lowerBound="1"
          eType="#//deployment/InternalComponent"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="VerticalScaleRequirement" eSuperTypes="#//requirement/ScaleRequirement">
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
        <details key="constraints" value="vert_scale_requirement_correct_param_vals vert_scale_requirement_activ_one_alt"/>
      </eAnnotations>
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
        <details key="vert_scale_requirement_correct_param_vals" value="Tuple {&#xA;&#x9;message : String = 'In VerticalScaleRequirement: ' + self.name +&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;' there are wrong combinations of values mapping to the respective VM characteristics. For each characteristic, the min value should be non-negative, the max value greater or equal to -1 and if the max value is greater than -1, then it should be greater or equal to the min value',&#xA;&#x9;status : Boolean = minCores&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;>= 0 and maxCores >= - 1 and (maxCores &lt;> - 1 implies minCores &lt;= maxCores) and minRAM >= 0 and maxRAM >= - 1 and&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;(maxRAM &lt;> - 1 implies minRAM &lt;= maxRAM) and minCPU >= 0 and maxCPU >= - 1 and (maxCPU &lt;> - 1 implies minCPU &lt;=&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;maxCPU) and minStorage >= 0 and maxStorage >= - 1 and (maxStorage &lt;> - 1 implies minStorage &lt;= maxStorage)&#xA;}.status"/>
        <details key="vert_scale_requirement_activ_one_alt" value="Tuple {&#xA;&#x9;message : String = 'In VerticalScaleRequirement: ' + self.name +&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;' the maximum value for no VM characteristic has been specified',&#xA;&#x9;status : Boolean = maxCores > 0 or maxCores = - 1 or maxCPU > 0 or&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;maxCPU = - 1 or maxRAM > 0 or maxRAM = - 1 or maxStorage > 0 or maxStorage = - 1&#xA;}.status"/>
      </eAnnotations>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="minCPU" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
        <eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
          <details key="body" value="ScalabilityRule"/>
          <details key="unique" value="false"/>
          <details key="upper" value="*"/>
        </eAnnotations>
      </eStructuralFeatures>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="maxCPU" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="minCores" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="maxCores" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt">
        <eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
          <details key="body" value="ScalabilityRule"/>
          <details key="unique" value="false"/>
          <details key="upper" value="*"/>
        </eAnnotations>
      </eStructuralFeatures>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="minRAM" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt">
        <eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
          <details key="body" value="Property"/>
          <details key="unique" value="false"/>
          <details key="upper" value="*"/>
        </eAnnotations>
        <eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
          <details key="body" value="ScalabilityRule"/>
          <details key="unique" value="false"/>
          <details key="upper" value="*"/>
        </eAnnotations>
      </eStructuralFeatures>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="maxRAM" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt">
        <eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
          <details key="body" value="ScalabilityRule"/>
          <details key="unique" value="false"/>
          <details key="upper" value="*"/>
        </eAnnotations>
      </eStructuralFeatures>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="minStorage" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="maxStorage" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="vm" lowerBound="1" eType="#//deployment/VM"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EEnum" name="OptimisationFunctionType">
      <eLiterals name="MINIMISE"/>
      <eLiterals name="MAXIMISE" value="1"/>
    </eClassifiers>
  </eSubpackages>
  <eSubpackages name="scalability" nsURI="http://www.paasage.eu/2015/06/camel/scalability"
      nsPrefix="scalability">
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
      <details key="invocationDelegates" value="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot"/>
      <details key="settingDelegates" value="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot"/>
      <details key="validationDelegates" value="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot"/>
    </eAnnotations>
    <eClassifiers xsi:type="ecore:EClass" name="ScalabilityModel" eSuperTypes="#//Model">
      <eStructuralFeatures xsi:type="ecore:EReference" name="rules" ordered="false"
          upperBound="-1" eType="#//scalability/ScalabilityRule" containment="true"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="events" ordered="false"
          upperBound="-1" eType="#//scalability/Event" containment="true"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="eventInstances" ordered="false"
          upperBound="-1" eType="#//scalability/EventInstance" containment="true"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="actions" ordered="false"
          upperBound="-1" eType="#//scalability/ScalingAction" containment="true"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="patterns" ordered="false"
          upperBound="-1" eType="#//scalability/EventPattern" containment="true"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="timers" ordered="false"
          upperBound="-1" eType="#//scalability/Timer" containment="true"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="scaleRequirements" upperBound="-1"
          eType="#//requirement/ScaleRequirement" containment="true"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EEnum" name="BinaryPatternOperatorType">
      <eLiterals name="AND"/>
      <eLiterals name="OR" value="1"/>
      <eLiterals name="XOR" value="3"/>
      <eLiterals name="PRECEDES" value="4"/>
      <eLiterals name="REPEAT_UNTIL" value="5"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="Event">
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" lowerBound="1"
          eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString">
        <eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
          <details key="body" value="EventPattern"/>
          <details key="unique" value="false"/>
          <details key="upper" value="*"/>
        </eAnnotations>
      </eStructuralFeatures>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="EventPattern" abstract="true" eSuperTypes="#//scalability/Event">
      <eOperations name="includesEvent" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
        <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
          <details key="body" value="if (self.oclIsTypeOf(UnaryEventPattern))&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;then self.oclAsType(UnaryEventPattern).event = e&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else (includesLeftEvent(e) or includesRightEvent(e))&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif"/>
        </eAnnotations>
        <eParameters name="e" lowerBound="1" eType="#//scalability/SimpleEvent"/>
      </eOperations>
      <eOperations name="includesLeftEvent" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
        <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
          <details key="body" value="if (self.oclAsType(BinaryEventPattern).leftEvent.oclIsKindOf(EventPattern))&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;then self.oclAsType(BinaryEventPattern).leftEvent.oclAsType(EventPattern).includesEvent(e)&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else (if (self.oclAsType(BinaryEventPattern).leftEvent.oclIsKindOf(SimpleEvent))&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;then self.oclAsType(BinaryEventPattern).leftEvent.oclAsType(SimpleEvent) = e&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else false&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif)&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif"/>
        </eAnnotations>
        <eParameters name="e" lowerBound="1" eType="#//scalability/SimpleEvent"/>
      </eOperations>
      <eOperations name="includesRightEvent" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
        <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
          <details key="body" value="if (self.oclAsType(BinaryEventPattern).rightEvent.oclIsKindOf(EventPattern))&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;then self.oclAsType(BinaryEventPattern).rightEvent.oclAsType(EventPattern).includesEvent(e)&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else (if (self.oclAsType(BinaryEventPattern).rightEvent.oclIsKindOf(SimpleEvent))&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;then self.oclAsType(BinaryEventPattern).rightEvent.oclAsType(SimpleEvent) = e&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else false&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif)&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif"/>
        </eAnnotations>
        <eParameters name="e" lowerBound="1" eType="#//scalability/SimpleEvent"/>
      </eOperations>
      <eStructuralFeatures xsi:type="ecore:EReference" name="timer" eType="#//scalability/Timer"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="BinaryEventPattern" eSuperTypes="#//scalability/EventPattern">
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
        <details key="constraints" value="binary_event_pattern_at_least_left_right binary_event_pattern_timer_one_event binary_event_pattern_occur_bounds"/>
      </eAnnotations>
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
        <details key="binary_event_pattern_at_least_left_right" value="Tuple {&#xA;&#x9;message : String = 'In BinaryEventPattern: ' + self.name +&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;' no left or right event has been specified',&#xA;&#x9;status : Boolean = self.leftEvent &lt;> null or self.rightEvent &lt;> null&#xA;}.status"/>
        <details key="binary_event_pattern_timer_one_event" value="Tuple {&#xA;&#x9;message : String = 'In BinaryEventPattern: ' + self.name +&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;' both a timer as well as left and right events have been specified',&#xA;&#x9;status : Boolean = self.oclAsType(EventPattern).timer &lt;> null&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;implies (self.leftEvent = null or self.rightEvent = null)&#xA;}.status"/>
        <details key="binary_event_pattern_occur_bounds" value="Tuple {&#xA;&#x9;message : String = 'In BinaryEventPattern: ' + self.name +&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;' incorrect values were given for the lowerOccurrenceBound and upperOccurrenceBound attributes in conjunction with the use of the respective pattern operator: '&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;+ operator.toString(),&#xA;&#x9;status : Boolean = (self.operator &lt;> BinaryPatternOperatorType::REPEAT_UNTIL implies&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;(self.lowerOccurrenceBound = 0 and self.upperOccurrenceBound = 0)) and (self.operator =&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;BinaryPatternOperatorType::REPEAT_UNTIL and self.lowerOccurrenceBound >= 0 and self.upperOccurrenceBound > 0&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;implies self.lowerOccurrenceBound &lt;= upperOccurrenceBound)&#xA;}.status"/>
      </eAnnotations>
      <eStructuralFeatures xsi:type="ecore:EReference" name="leftEvent" eType="#//scalability/Event"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="rightEvent" eType="#//scalability/Event"/>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="lowerOccurrenceBound"
          eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="upperOccurrenceBound"
          eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="operator" lowerBound="1"
          eType="#//scalability/BinaryPatternOperatorType"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="UnaryEventPattern" eSuperTypes="#//scalability/EventPattern">
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
        <details key="constraints" value="unary_event_pattern_correct_values_per_operator"/>
      </eAnnotations>
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
        <details key="unary_event_pattern_correct_values_per_operator" value="Tuple {&#xA;&#x9;message : String = 'In UnaryEventPattern: ' + self.name +&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;' either a REPEAT operator there is an incorrect combination of values of the operator and occurrenceNum attributes and of the timer association. When operator is REPEAT, occurrenceNum should be positive; otherwise, equal to zero. When operator is WHERE, then a timer must be specified; otherwise, no timer should be specified',&#xA;&#x9;status : Boolean = (self.operator&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;= UnaryPatternOperatorType::REPEAT implies occurrenceNum > 0) and (self.operator &lt;>&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;UnaryPatternOperatorType::REPEAT implies occurrenceNum = 0) and (self.operator = UnaryPatternOperatorType::WHEN&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;implies self.oclAsType(EventPattern).timer &lt;> null) and (self.operator &lt;> UnaryPatternOperatorType::WHEN implies&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;self.oclAsType(EventPattern).timer = null)&#xA;}.status"/>
      </eAnnotations>
      <eStructuralFeatures xsi:type="ecore:EReference" name="event" lowerBound="1"
          eType="#//scalability/Event"/>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="occurrenceNum" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="operator" lowerBound="1"
          eType="#//scalability/UnaryPatternOperatorType"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="SimpleEvent" eSuperTypes="#//scalability/Event"/>
    <eClassifiers xsi:type="ecore:EClass" name="FunctionalEvent" eSuperTypes="#//scalability/SimpleEvent">
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="functionalType" lowerBound="1"
          eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString">
        <eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
          <details key="body" value="NonFunctionalEvent"/>
          <details key="unique" value="false"/>
          <details key="upper" value="*"/>
        </eAnnotations>
      </eStructuralFeatures>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="NonFunctionalEvent" eSuperTypes="#//scalability/SimpleEvent">
      <eStructuralFeatures xsi:type="ecore:EReference" name="metricCondition" lowerBound="1"
          eType="#//metric/MetricCondition"/>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="isViolation" lowerBound="1"
          eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="EventInstance">
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
        <details key="constraints" value="event_instance_same_layer_of_metric_as_in_event event_instance_metric_in_event"/>
      </eAnnotations>
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
        <details key="event_instance_same_layer_of_metric_as_in_event" value="Tuple {&#xA;&#x9;message : String = 'EventInstance: ' + self.name +&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;' does not map to the same layer as the one designated by the metric referenced by the instance\'s respective event:'&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;+ self.event.name,&#xA;&#x9;status : Boolean = if (self.event.oclIsTypeOf(NonFunctionalEvent))&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;then self.equalLayer(self.layer,&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;self.event.oclAsType(NonFunctionalEvent).metricCondition.metricContext.metric.layer)&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;else true&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;endif&#xA;}.status"/>
        <details key="event_instance_metric_in_event" value="Tuple {&#xA;&#x9;message : String = 'EventInstance: ' + self.name +&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;' has a metric instance with a metric which is not identical to the one associated to the event instance\'s event: '&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;+ self.event.name,&#xA;&#x9;status : Boolean = if (self.event.oclIsTypeOf(NonFunctionalEvent))&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;then metricInstance.metric = event.oclAsType(NonFunctionalEvent).metricCondition.metricContext.metric&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;else true&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;endif&#xA;}.status"/>
      </eAnnotations>
      <eOperations name="equalLayer" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
        <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
          <details key="body" value="if (l1 = LayerType::SaaS)&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;then (if (l2 = LayerType::SaaS)&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;then true&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else false&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif)&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else (if (l1 = LayerType::PaaS)&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;then (if (l2 = LayerType::PaaS)&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;then true&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else false&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif)&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else (if (l2 = LayerType::IaaS)&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;then true&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else false&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif)&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif)&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif"/>
        </eAnnotations>
        <eParameters name="l1" lowerBound="1" eType="#//LayerType"/>
        <eParameters name="l2" lowerBound="1" eType="#//LayerType"/>
      </eOperations>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" lowerBound="1"
          eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="status" lowerBound="1"
          eType="#//scalability/StatusType"/>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="layer" eType="#//LayerType"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="event" lowerBound="1"
          eType="#//scalability/SimpleEvent"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="metricInstance" eType="#//metric/MetricInstance"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="ScalabilityRule">
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
        <details key="constraints" value="scal_rule_horiz_req_count scal_rule_vert_req_correct_vals scal_rule_no_conficting_reqs"/>
      </eAnnotations>
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
        <details key="scal_rule_horiz_req_count" value="Tuple {&#xA;&#x9;message : String = 'In ScalabilityRule: ' + self.name +&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;' there is a HorizontalScalingAction which conflicts with a rule\'s respective HorizontalScaleRequirement',&#xA;&#x9;status : Boolean = self.actions&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;->forAll(p | (p.oclIsTypeOf(HorizontalScalingAction) and p.oclAsType(HorizontalScalingAction).count > 0 and&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;(p.type = camel::ActionType::SCALE_IN or p.type = camel::ActionType::SCALE_OUT and self.scaleRequirements&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;->exists(q | q.oclIsTypeOf(camel::requirement::HorizontalScaleRequirement))) implies self.scaleRequirements&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;->forAll(t | if (t.oclIsTypeOf(camel::requirement::HorizontalScaleRequirement))&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;then (t.oclAsType(camel::requirement::HorizontalScaleRequirement).maxInstances = - 1 or&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;p.oclAsType(HorizontalScalingAction).count &lt;=&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;(t.oclAsType(camel::requirement::HorizontalScaleRequirement).maxInstances -&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;t.oclAsType(camel::requirement::HorizontalScaleRequirement).minInstances))&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else true&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif)))&#xA;}.status"/>
        <details key="scal_rule_vert_req_correct_vals" value="Tuple {&#xA;&#x9;message : String = 'In ScalabilityRule: ' + self.name +&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;' there is a VerticalScalingAction which conflicts with a rule\'s respective VerticalScaleRequirement',&#xA;&#x9;status : Boolean = self.actions&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;->forAll(p | (p.oclIsTypeOf(VerticalScalingAction) and (p.type = camel::ActionType::SCALE_UP or p.type =&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;camel::ActionType::SCALE_DOWN and self.scaleRequirements&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;->exists(t | t.oclIsTypeOf(camel::requirement::VerticalScaleRequirement))) implies self.scaleRequirements&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;->forAll(q | q.oclIsTypeOf(camel::requirement::VerticalScaleRequirement) implies&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;((p.oclAsType(VerticalScalingAction).coreUpdate > 0) implies&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;(q.oclAsType(camel::requirement::VerticalScaleRequirement).maxCores = - 1 or&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;p.oclAsType(VerticalScalingAction).coreUpdate &lt;=&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;(q.oclAsType(camel::requirement::VerticalScaleRequirement).maxCores -&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;q.oclAsType(camel::requirement::VerticalScaleRequirement).minCores))) and&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;((p.oclAsType(VerticalScalingAction).storageUpdate > 0) implies&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;(q.oclAsType(camel::requirement::VerticalScaleRequirement).maxStorage = - 1 or&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;p.oclAsType(VerticalScalingAction).storageUpdate &lt;=&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;(q.oclAsType(camel::requirement::VerticalScaleRequirement).maxStorage -&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;q.oclAsType(camel::requirement::VerticalScaleRequirement).minStorage))) and&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;((p.oclAsType(VerticalScalingAction).CPUUpdate > 0) implies&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;(q.oclAsType(camel::requirement::VerticalScaleRequirement).maxCPU = - 1 or&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;p.oclAsType(VerticalScalingAction).CPUUpdate &lt;=&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;(q.oclAsType(camel::requirement::VerticalScaleRequirement).maxCPU -&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;q.oclAsType(camel::requirement::VerticalScaleRequirement).minCPU))) and&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;((p.oclAsType(VerticalScalingAction).memoryUpdate > 0) implies&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;(q.oclAsType(camel::requirement::VerticalScaleRequirement).maxRAM = - 1 or&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;p.oclAsType(VerticalScalingAction).memoryUpdate &lt;=&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;(q.oclAsType(camel::requirement::VerticalScaleRequirement).maxRAM -&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;q.oclAsType(camel::requirement::VerticalScaleRequirement).minRAM))))))&#xA;}.status"/>
        <details key="scal_rule_no_conficting_reqs" value="Tuple {&#xA;&#x9;message : String = 'In ScalabilityRule: ' + self.name +&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;' there is a pair of vertical or horizontal scale requirements that are conflicting, where conflicting means that they concern the same vm or component, respectively',&#xA;&#x9;status : Boolean = self.scaleRequirements&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;->forAll(p1, p2 | if (p1 &lt;> p2 and p1.oclType() = p2.oclType())&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;then if (p1.oclIsTypeOf(camel::requirement::VerticalScaleRequirement))&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;then p1.oclAsType(camel::requirement::VerticalScaleRequirement).vm &lt;>&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;p2.oclAsType(camel::requirement::VerticalScaleRequirement).vm&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else p1.oclAsType(camel::requirement::HorizontalScaleRequirement).component &lt;>&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;p2.oclAsType(camel::requirement::HorizontalScaleRequirement).component&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else true&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif)&#xA;}.status"/>
      </eAnnotations>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" lowerBound="1"
          eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="event" lowerBound="1"
          eType="#//scalability/Event"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="actions" lowerBound="1"
          upperBound="-1" eType="#//Action"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="entity" upperBound="-1"
          eType="#//organisation/Entity"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="scaleRequirements" upperBound="-1"
          eType="#//requirement/ScaleRequirement"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="ScalingAction" abstract="true" eSuperTypes="#//Action">
      <eStructuralFeatures xsi:type="ecore:EReference" name="vm" lowerBound="1" eType="#//deployment/VM"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="HorizontalScalingAction" eSuperTypes="#//scalability/ScalingAction">
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
        <details key="constraints" value="horizontal_scale_action_correct_count horizontal_scale_action_correct_type"/>
      </eAnnotations>
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
        <details key="horizontal_scale_action_correct_count" value="Tuple {&#xA;&#x9;message : String = 'HorizontalScalingAction: ' + self.name +&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;' has a wrong (negative) value for the count attribute',&#xA;&#x9;status : Boolean = count >= 0&#xA;}.status"/>
        <details key="horizontal_scale_action_correct_type" value="Tuple {&#xA;&#x9;message : String = 'HorizontalScalingAction: ' + self.name + ' has a wrong type (' +&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;self.type.toString() + '). It should be either SCALE_IN or SCALE_OUT',&#xA;&#x9;status : Boolean = (self.type = camel::ActionType::SCALE_IN)&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;or (self.type = camel::ActionType::SCALE_OUT)&#xA;}.status"/>
      </eAnnotations>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="count" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="internalComponent" lowerBound="1"
          eType="#//deployment/InternalComponent"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="VerticalScalingAction" eSuperTypes="#//scalability/ScalingAction">
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
        <details key="constraints" value="vertical_scale_action_correct_input vertical_scale_action_correct_type"/>
      </eAnnotations>
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
        <details key="vertical_scale_action_correct_input" value="Tuple {&#xA;&#x9;message : String = 'VerticalScalingAction: ' + self.name +&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;' has the value of all VM characteristic update attributes equal to zero. At least one should be positive.',&#xA;&#x9;status : Boolean = memoryUpdate&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;> 0 or CPUUpdate &lt;> 0.0 or coreUpdate &lt;> 0 or storageUpdate &lt;> 0&#xA;}.status"/>
        <details key="vertical_scale_action_correct_type" value="Tuple {&#xA;&#x9;message : String = 'VerticalScalingAction: ' + self.name + ' has a wrong type (' +&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;self.type.toString() + '). It should be either SCALE_UP or SCALE_DOWN',&#xA;&#x9;status : Boolean = (self.type = camel::ActionType::SCALE_UP)&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;or (self.type = camel::ActionType::SCALE_DOWN)&#xA;}.status"/>
      </eAnnotations>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="memoryUpdate" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="CPUUpdate" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="coreUpdate" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="storageUpdate" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt">
        <eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
          <details key="body" value="Schedule"/>
          <details key="unique" value="false"/>
          <details key="upper" value="*"/>
        </eAnnotations>
      </eStructuralFeatures>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="ioUpdate" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="networkUpdate" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="Timer">
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
        <details key="constraints" value="timer_correct_values"/>
      </eAnnotations>
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
        <details key="timer_correct_values" value="Tuple {&#xA;&#x9;message : String = 'Timer: ' + self.toString() +&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;' as wrong value combinations for its attributes. This means that either the timeValue is non-positive or the time type is WITHIN_MAX and a non-positive maxOccurrenceNum has been provided or that the time type is not WITHIN_MAX and a positive maxOccurrenceNum has been given',&#xA;&#x9;status : Boolean = timeValue&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;> 0 and (self.type = TimerType::WITHIN_MAX implies self.maxOccurrenceNum > 0) and (self.type &lt;>&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;TimerType::WITHIN_MAX implies self.maxOccurrenceNum = 0)&#xA;}.status"/>
      </eAnnotations>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="type" lowerBound="1"
          eType="#//scalability/TimerType"/>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="timeValue" lowerBound="1"
          eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="maxOccurrenceNum" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="unit" lowerBound="1"
          eType="#//unit/TimeIntervalUnit"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EEnum" name="TimerType">
      <eLiterals name="WITHIN"/>
      <eLiterals name="WITHIN_MAX" value="1"/>
      <eLiterals name="INTERVAL" value="2"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EEnum" name="UnaryPatternOperatorType">
      <eLiterals name="EVERY"/>
      <eLiterals name="NOT" value="1"/>
      <eLiterals name="REPEAT" value="2"/>
      <eLiterals name="WHEN" value="3"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EEnum" name="StatusType">
      <eLiterals name="CRITICAL"/>
      <eLiterals name="WARNING" value="1"/>
      <eLiterals name="SUCCESS" value="2"/>
      <eLiterals name="FATAL" value="3"/>
    </eClassifiers>
  </eSubpackages>
  <eSubpackages name="security" nsURI="http://www.paasage.eu/2015/06/camel/security"
      nsPrefix="security">
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
      <details key="invocationDelegates" value="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot"/>
      <details key="settingDelegates" value="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot"/>
      <details key="validationDelegates" value="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot"/>
    </eAnnotations>
    <eClassifiers xsi:type="ecore:EClass" name="SecurityModel" eSuperTypes="#//Model">
      <eStructuralFeatures xsi:type="ecore:EReference" name="securityControls" ordered="false"
          upperBound="-1" eType="#//security/SecurityControl" containment="true"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="securityRequirements"
          ordered="false" upperBound="-1" eType="#//requirement/SecurityRequirement"
          containment="true"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="securityProperties" ordered="false"
          upperBound="-1" eType="#//security/SecurityProperty" containment="true"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="rawSecurityMetrics" ordered="false"
          upperBound="-1" eType="#//security/RawSecurityMetric" containment="true"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="compositeSecurityMetrics"
          ordered="false" upperBound="-1" eType="#//security/CompositeSecurityMetric"
          containment="true"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="rawSecurityMetricInstances"
          ordered="false" upperBound="-1" eType="#//security/RawSecurityMetricInstance"
          containment="true">
        <eAnnotations source="teneo.jpa">
          <details key="value" value="@JoinColumn(name=&quot;rawsecuritymetricInstances&quot;)"/>
        </eAnnotations>
      </eStructuralFeatures>
      <eStructuralFeatures xsi:type="ecore:EReference" name="compositeSecurityMetricInstances"
          ordered="false" upperBound="-1" eType="#//security/CompositeSecurityMetricInstance"
          containment="true">
        <eAnnotations source="teneo.jpa">
          <details key="value" value="@JoinColumn(name=&quot;compositesecuritymetricInstances&quot;)"/>
        </eAnnotations>
      </eStructuralFeatures>
      <eStructuralFeatures xsi:type="ecore:EReference" name="securityDomains" ordered="false"
          upperBound="-1" eType="#//security/SecurityDomain" containment="true"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="securityCapabilities"
          ordered="false" upperBound="-1" eType="#//security/SecurityCapability" containment="true"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="securitySLOs" upperBound="-1"
          eType="#//security/SecuritySLO" containment="true"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="SecurityDomain">
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="id" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" lowerBound="1"
          eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString">
        <eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
          <details key="body" value="Limit"/>
        </eAnnotations>
        <eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
          <details key="body" value="Limit"/>
        </eAnnotations>
      </eStructuralFeatures>
      <eStructuralFeatures xsi:type="ecore:EReference" name="subDomain" ordered="false"
          upperBound="-1" eType="#//security/SecurityDomain"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="SecurityControl">
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" lowerBound="1"
          eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="domain" lowerBound="1"
          eType="#//security/SecurityDomain"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="subDomain" lowerBound="1"
          eType="#//security/SecurityDomain"/>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="specification" lowerBound="1"
          eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString">
        <eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
          <details key="body" value="AgreementType"/>
        </eAnnotations>
        <eAnnotations source="teneo.jpa">
          <details key="value" value="@Column(length=4000)"/>
        </eAnnotations>
      </eStructuralFeatures>
      <eStructuralFeatures xsi:type="ecore:EReference" name="securityProperties" upperBound="-1"
          eType="#//security/SecurityProperty"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="rawSecurityMetrics" upperBound="-1"
          eType="#//security/RawSecurityMetric"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="compositeSecurityMetrics"
          upperBound="-1" eType="#//security/CompositeSecurityMetric"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="RawSecurityMetricInstance" eSuperTypes="#//metric/RawMetricInstance"/>
    <eClassifiers xsi:type="ecore:EClass" name="RawSecurityMetric" eSuperTypes="#//metric/RawMetric"/>
    <eClassifiers xsi:type="ecore:EClass" name="SecurityProperty" eSuperTypes="#//metric/Property">
      <eStructuralFeatures xsi:type="ecore:EReference" name="domain" lowerBound="1"
          eType="#//security/SecurityDomain"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="Certifiable" eSuperTypes="#//security/SecurityProperty">
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
        <details key="constraints" value="certifiable_realized_by"/>
      </eAnnotations>
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
        <details key="certifiable_realized_by" value="Tuple {&#xA;&#x9;message : String = 'Certifiable Property: ' + self.name +&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;' has a non-empty list of sub-properties',&#xA;&#x9;status : Boolean = self.subProperties&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;->isEmpty()&#xA;}.status"/>
      </eAnnotations>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="SecuritySLO" eSuperTypes="#//requirement/ServiceLevelObjective">
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
        <details key="constraints" value="only_sec_constructs_in_condition"/>
      </eAnnotations>
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
        <details key="only_sec_constructs_in_condition" value="Tuple {&#xA;&#x9;message : String = 'SecuritySLO: ' + self.name +&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;' maps to non-security metrics or properties',&#xA;&#x9;status : Boolean = if&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;(customServiceLevel.oclIsTypeOf(camel::metric::MetricCondition))&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;then&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;customServiceLevel.oclAsType(camel::metric::MetricCondition).metricContext.metric.oclIsTypeOf(camel::security::RawSecurityMetric)&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;or&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;customServiceLevel.oclAsType(camel::metric::MetricCondition).metricContext.metric.oclIsTypeOf(camel::security::CompositeSecurityMetric)&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;else if (customServiceLevel.oclIsTypeOf(camel::metric::PropertyCondition))&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;then&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;customServiceLevel.oclAsType(camel::metric::PropertyCondition).propertyContext.property.oclIsTypeOf(camel::security::SecurityProperty)&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else false&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;endif&#xA;}.status"/>
      </eAnnotations>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="SecurityCapability">
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" lowerBound="1"
          eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString">
        <eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
          <details key="body" value="ServiceLevelObjectiveType"/>
        </eAnnotations>
      </eStructuralFeatures>
      <eStructuralFeatures xsi:type="ecore:EReference" name="securityControls" ordered="false"
          lowerBound="1" upperBound="-1" eType="#//security/SecurityControl"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="dataCenter" eType="#//organisation/DataCenter"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="CompositeSecurityMetric" eSuperTypes="#//metric/CompositeMetric"/>
    <eClassifiers xsi:type="ecore:EClass" name="CompositeSecurityMetricInstance" eSuperTypes="#//metric/CompositeMetricInstance"/>
  </eSubpackages>
  <eSubpackages name="type" nsURI="http://www.paasage.eu/2015/06/camel/type" nsPrefix="type">
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
      <details key="invocationDelegates" value="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot"/>
      <details key="settingDelegates" value="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot"/>
      <details key="validationDelegates" value="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot"/>
    </eAnnotations>
    <eClassifiers xsi:type="ecore:EClass" name="TypeModel" eSuperTypes="#//Model">
      <eStructuralFeatures xsi:type="ecore:EReference" name="dataTypes" upperBound="-1"
          eType="#//type/ValueType" containment="true"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="values" upperBound="-1"
          eType="#//type/SingleValue" containment="true"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="Limit">
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="included" lowerBound="1"
          eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="value" lowerBound="1"
          eType="#//type/NumericValue" containment="true"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EEnum" name="TypeEnum">
      <eLiterals name="IntType"/>
      <eLiterals name="StringType" value="1"/>
      <eLiterals name="BooleanType" value="2"/>
      <eLiterals name="FloatType" value="3"/>
      <eLiterals name="DoubleType" value="4"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="SingleValue" abstract="true">
      <eOperations name="valueEquals" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
        <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
          <details key="body" value="if (self.oclIsTypeOf(IntegerValue) and v.oclIsTypeOf(IntegerValue))&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;then self.oclAsType(IntegerValue).value = v.oclAsType(IntegerValue).value&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else if (self.oclIsTypeOf(FloatsValue) and v.oclIsTypeOf(FloatsValue))&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;then self.oclAsType(FloatsValue).value = v.oclAsType(FloatsValue).value&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else if (self.oclIsTypeOf(DoublePrecisionValue) and v.oclIsTypeOf(DoublePrecisionValue))&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;then self.oclAsType(DoublePrecisionValue).value = v.oclAsType(DoublePrecisionValue).value&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else if (self.oclIsTypeOf(StringsValue) and v.oclIsTypeOf(StringsValue))&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;then self.oclAsType(StringsValue).value = v.oclAsType(StringsValue).value&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else if (self.oclIsTypeOf(BoolValue) and v.oclIsTypeOf(BoolValue))&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;then self.oclAsType(BoolValue).value = v.oclAsType(BoolValue).value&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else false&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif"/>
        </eAnnotations>
        <eParameters name="v" lowerBound="1" eType="#//type/SingleValue"/>
      </eOperations>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="BoolValue" eSuperTypes="#//type/SingleValue">
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="value" lowerBound="1"
          eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="EnumerateValue" eSuperTypes="#//type/SingleValue">
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" lowerBound="1"
          eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="value" lowerBound="1"
          eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="NumericValue" abstract="true" eSuperTypes="#//type/SingleValue"/>
    <eClassifiers xsi:type="ecore:EClass" name="IntegerValue" eSuperTypes="#//type/NumericValue">
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="value" lowerBound="1"
          eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="FloatsValue" eSuperTypes="#//type/NumericValue">
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="value" lowerBound="1"
          eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EFloat"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="DoublePrecisionValue" eSuperTypes="#//type/NumericValue">
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="value" lowerBound="1"
          eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="NegativeInf" eSuperTypes="#//type/NumericValue"/>
    <eClassifiers xsi:type="ecore:EClass" name="PositiveInf" eSuperTypes="#//type/NumericValue"/>
    <eClassifiers xsi:type="ecore:EClass" name="ValueToIncrease" eSuperTypes="#//type/NumericValue">
      <eStructuralFeatures xsi:type="ecore:EReference" name="value" lowerBound="1"
          eType="#//type/NumericValue" containment="true"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="StringsValue" eSuperTypes="#//type/SingleValue">
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="value" lowerBound="1"
          eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="ValueType" abstract="true">
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="BooleanValueType" eSuperTypes="#//type/ValueType">
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="primitiveType" lowerBound="1"
          eType="#//type/TypeEnum"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="Enumeration" eSuperTypes="#//type/ValueType">
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
        <details key="constraints" value="enumeration_all_values_diff"/>
      </eAnnotations>
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
        <details key="enumeration_all_values_diff" value="Tuple {&#xA;&#x9;message : String = 'Enumeration: ' + self.toString() +&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;' has two or more members which have either the same name or the same value',&#xA;&#x9;status : Boolean = values&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;->forAll(p1, p2 | p1 &lt;> p2 implies (p1.name &lt;> p2.name and p1.value &lt;> p2.value))&#xA;}.status"/>
      </eAnnotations>
      <eOperations name="includesName" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
        <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
          <details key="body" value="self.values&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;->exists(p | p.name = name)"/>
        </eAnnotations>
        <eParameters name="name" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
      </eOperations>
      <eOperations name="includesValue" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
        <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
          <details key="body" value="self.values&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;->exists(p | p.value = value)"/>
        </eAnnotations>
        <eParameters name="value" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
      </eOperations>
      <eStructuralFeatures xsi:type="ecore:EReference" name="values" lowerBound="1"
          upperBound="-1" eType="#//type/EnumerateValue" containment="true"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="List" eSuperTypes="#//type/ValueType">
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
        <details key="constraints" value="list_must_have_type all_list_values_correct_type"/>
      </eAnnotations>
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
        <details key="list_must_have_type" value="Tuple {&#xA;&#x9;message : String = 'List:' + self.toString() +&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;' should either have a primitive or a normal type of values',&#xA;&#x9;status : Boolean = (primitiveType &lt;> null and type = null) or (type &lt;>&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;null and primitiveType = null)&#xA;}.status"/>
        <details key="all_list_values_correct_type" value="Tuple {&#xA;&#x9;message : String = 'List: ' + self.toString() +&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;' has one or more values that do not conform to its value type',&#xA;&#x9;status : Boolean = values&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;->forAll(p | self.checkValueType(p))&#xA;}.status"/>
      </eAnnotations>
      <eOperations name="includesValue" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
        <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
          <details key="body" value="if (type &lt;> null)&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;then if (type.oclIsTypeOf(Range))&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;then if (type.oclAsType(Range).primitiveType = TypeEnum::IntType)&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;then values&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;->exists(p | p.oclAsType(IntegerValue).value = v.oclAsType(IntegerValue).value)&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else if (type.oclAsType(Range).primitiveType = TypeEnum::FloatType)&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;then values&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;->exists(p | p.oclAsType(FloatsValue).value = v.oclAsType(FloatsValue).value)&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else values&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;->exists(p | p.oclAsType(DoublePrecisionValue).value = v.oclAsType(DoublePrecisionValue).value)&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else if (type.oclIsTypeOf(RangeUnion))&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;then if (type.oclAsType(RangeUnion).primitiveType = TypeEnum::IntType)&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;then values&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;->exists(p | p.oclAsType(IntegerValue).value = v.oclAsType(IntegerValue).value)&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else if (type.oclAsType(RangeUnion).primitiveType = TypeEnum::FloatType)&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;then values&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;->exists(p | p.oclAsType(FloatsValue).value = v.oclAsType(FloatsValue).value)&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else values&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;->exists(p | p.oclAsType(DoublePrecisionValue).value = v.oclAsType(DoublePrecisionValue).value)&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else if (type.oclIsTypeOf(StringValueType))&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;then values&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;->exists(p | p.oclAsType(StringsValue).value = v.oclAsType(StringsValue).value)&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else if (type.oclIsTypeOf(BooleanValueType))&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;then values&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;->exists(p | p.oclAsType(BoolValue).value = v.oclAsType(BoolValue).value)&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else false&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else if (primitiveType = TypeEnum::IntType)&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;then values&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;->exists(p | p.oclAsType(IntegerValue).value = v.oclAsType(IntegerValue).value)&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else if (primitiveType = TypeEnum::FloatType)&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;then values&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;->exists(p | p.oclAsType(FloatsValue).value = v.oclAsType(FloatsValue).value)&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else if (primitiveType = TypeEnum::DoubleType)&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;then values&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;->exists(p | p.oclAsType(DoublePrecisionValue).value = v.oclAsType(DoublePrecisionValue).value)&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else if (primitiveType = TypeEnum::StringType)&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;then values&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;->exists(p | p.oclAsType(StringsValue).value = v.oclAsType(StringsValue).value)&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else if (primitiveType = TypeEnum::BooleanType)&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;then values&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;->exists(p | p.oclAsType(BoolValue).value = v.oclAsType(BoolValue).value)&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else false&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif"/>
        </eAnnotations>
        <eParameters name="v" lowerBound="1" eType="#//type/SingleValue"/>
      </eOperations>
      <eOperations name="checkValueType" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
        <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
          <details key="body" value="if (type &lt;> null)&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;then if (type.oclIsTypeOf(Range))&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;then if (type.oclAsType(Range).primitiveType = TypeEnum::IntType)&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;then p.oclIsTypeOf(IntegerValue) and&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;type.oclAsType(Range).includesValue(p.oclAsType(IntegerValue).value.oclAsType(ecore::EDouble))&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else if (type.oclAsType(Range).primitiveType = TypeEnum::FloatType)&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;then p.oclIsTypeOf(FloatsValue) and&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;type.oclAsType(Range).includesValue(p.oclAsType(FloatsValue).value.oclAsType(ecore::EDouble))&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else p.oclIsTypeOf(DoublePrecisionValue) and&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;type.oclAsType(Range).includesValue(p.oclAsType(DoublePrecisionValue).value.oclAsType(ecore::EDouble))&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else if (type.oclIsTypeOf(RangeUnion))&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;then if (type.oclAsType(RangeUnion).primitiveType = TypeEnum::IntType)&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;then p.oclIsTypeOf(IntegerValue) and&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;type.oclAsType(RangeUnion).includesValue(p.oclAsType(IntegerValue).value.oclAsType(ecore::EDouble))&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else if (type.oclAsType(RangeUnion).primitiveType = TypeEnum::FloatType)&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;then p.oclIsTypeOf(FloatsValue) and&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;type.oclAsType(RangeUnion).includesValue(p.oclAsType(FloatsValue).value.oclAsType(ecore::EDouble))&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else p.oclIsTypeOf(DoublePrecisionValue) and&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;type.oclAsType(RangeUnion).includesValue(p.oclAsType(DoublePrecisionValue).value.oclAsType(ecore::EDouble))&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else if (type.oclIsTypeOf(StringValueType))&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;then p.oclIsTypeOf(StringsValue)&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else if (type.oclIsTypeOf(BooleanValueType))&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;then p.oclIsTypeOf(BoolValue)&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else false&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else if (primitiveType = TypeEnum::IntType)&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;then p.oclIsTypeOf(IntegerValue)&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else if (primitiveType = TypeEnum::StringType)&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;then p.oclIsTypeOf(StringsValue)&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else if (primitiveType = TypeEnum::BooleanType)&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;then p.oclIsTypeOf(BoolValue)&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else if (primitiveType = TypeEnum::FloatType)&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;then p.oclIsTypeOf(FloatsValue)&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else if (primitiveType = TypeEnum::DoubleType)&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;then p.oclIsTypeOf(DoublePrecisionValue)&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else true&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif"/>
        </eAnnotations>
        <eParameters name="p" lowerBound="1" eType="#//type/SingleValue"/>
      </eOperations>
      <eStructuralFeatures xsi:type="ecore:EReference" name="values" lowerBound="1"
          upperBound="-1" eType="#//type/SingleValue" containment="true"/>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="primitiveType" eType="#//type/TypeEnum"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="type" eType="#//type/ValueType"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="Range" eSuperTypes="#//type/ValueType">
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
        <details key="constraints" value="correct_range_type enforce_correct_range_type range_low_less_than_upper range_infs_at_appropriate_pos"/>
      </eAnnotations>
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
        <details key="correct_range_type" value="Tuple {&#xA;&#x9;message : String = 'Range: ' + self.toString() + ' has a non-numeric primitiveType: ' +&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;primitiveType.toString(),&#xA;&#x9;status : Boolean = (primitiveType = TypeEnum::IntType) or (primitiveType = TypeEnum::FloatType) or&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;(primitiveType = TypeEnum::DoubleType)&#xA;}.status"/>
        <details key="enforce_correct_range_type" value="Tuple {&#xA;&#x9;message : String = 'Range: ' + self.toString() +&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;' has either its low or upper limit not conforming to its primitive type',&#xA;&#x9;status : Boolean = self.checkType(self.lowerLimit,&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;primitiveType, true) and self.checkType(self.upperLimit, primitiveType, false)&#xA;}.status"/>
        <details key="range_low_less_than_upper" value="Tuple {&#xA;&#x9;message : String = 'Range: ' + self.toString() +&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;' has its lower limit greater than the upper',&#xA;&#x9;status : Boolean = if (not (lowerLimit.value.oclIsTypeOf(NegativeInf)) and not&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;(upperLimit.value.oclIsTypeOf(PositiveInf)))&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;then if (primitiveType = TypeEnum::IntType)&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;then if (not (upperLimit.included) and not (lowerLimit.included))&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;then (upperLimit.value.oclAsType(IntegerValue).value -&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;lowerLimit.value.oclAsType(IntegerValue).value.oclAsType(ecore::EInt)) >= 2&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else if (upperLimit.included)&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;then lowerLimit.value.oclAsType(IntegerValue).value.oclAsType(ecore::EInt) &lt;=&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;upperLimit.value.oclAsType(IntegerValue).value&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else lowerLimit.value.oclAsType(IntegerValue).value.oclAsType(ecore::EInt) &lt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;upperLimit.value.oclAsType(IntegerValue).value&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else (if (primitiveType = TypeEnum::FloatType)&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;then if (upperLimit.included)&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;then lowerLimit.value.oclAsType(FloatsValue).value.oclAsType(ecore::EFloat) &lt;=&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;upperLimit.value.oclAsType(FloatsValue).value&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else lowerLimit.value.oclAsType(FloatsValue).value.oclAsType(ecore::EFloat) &lt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;upperLimit.value.oclAsType(FloatsValue).value&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else if (upperLimit.included)&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;then lowerLimit.value.oclAsType(DoublePrecisionValue).value.oclAsType(ecore::EDouble) &lt;=&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;upperLimit.value.oclAsType(DoublePrecisionValue).value&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else lowerLimit.value.oclAsType(DoublePrecisionValue).value.oclAsType(ecore::EDouble) &lt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;upperLimit.value.oclAsType(DoublePrecisionValue).value&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif)&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;else true&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;endif&#xA;}.status"/>
        <details key="range_infs_at_appropriate_pos" value="Tuple {&#xA;&#x9;message : String = 'Range: ' + self.toString() +&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;' has a PositiveInf value for its lower limit or a NegativeInf value for its upper limit',&#xA;&#x9;status : Boolean = not&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;(lowerLimit.value.oclIsTypeOf(PositiveInf) or upperLimit.value.oclIsTypeOf(NegativeInf))&#xA;}.status"/>
      </eAnnotations>
      <eOperations name="checkType" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
        <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
          <details key="body" value="if (type = TypeEnum::IntType)&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;then if (lower and not (lowerLimit.value.oclIsTypeOf(NegativeInf)))&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;then lowerLimit.value.oclIsTypeOf(IntegerValue)&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else if (not (lower) and not (upperLimit.value.oclIsTypeOf(PositiveInf)))&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;then upperLimit.value.oclIsTypeOf(IntegerValue)&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else true&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else if (type = TypeEnum::FloatType)&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;then if (lower and not (lowerLimit.value.oclIsTypeOf(NegativeInf)))&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;then lowerLimit.value.oclIsTypeOf(FloatsValue)&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else if (not (lower) and not (upperLimit.value.oclIsTypeOf(PositiveInf)))&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;then upperLimit.value.oclIsTypeOf(FloatsValue)&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else true&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else if (lower and not (lowerLimit.value.oclIsTypeOf(NegativeInf)))&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;then lowerLimit.value.oclIsTypeOf(DoublePrecisionValue)&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else if (not (lower) and not (upperLimit.value.oclIsTypeOf(PositiveInf)))&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;then upperLimit.value.oclIsTypeOf(DoublePrecisionValue)&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else true&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif"/>
        </eAnnotations>
        <eParameters name="l" lowerBound="1" eType="#//type/Limit"/>
        <eParameters name="type" lowerBound="1" eType="#//type/TypeEnum"/>
        <eParameters name="lower" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
      </eOperations>
      <eOperations name="includesValue" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
        <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
          <details key="body" value="if (primitiveType = TypeEnum::IntType)&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;then if (not (lowerLimit.value.oclIsTypeOf(NegativeInf)))&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;then ((lowerLimit.included and lowerLimit.value.oclAsType(IntegerValue).value &lt;= n) or (not&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;(lowerLimit.included) and lowerLimit.value.oclAsType(IntegerValue).value &lt; n)) and if (not&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;(upperLimit.value.oclIsTypeOf(PositiveInf)))&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;then (upperLimit.included and upperLimit.value.oclAsType(IntegerValue).value >= n) or (not&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;(upperLimit.included) and upperLimit.value.oclAsType(IntegerValue).value > n)&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else true&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else if (not (upperLimit.value.oclIsTypeOf(PositiveInf)))&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;then (upperLimit.included and upperLimit.value.oclAsType(IntegerValue).value >= n) or (not&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;(upperLimit.included) and upperLimit.value.oclAsType(IntegerValue).value > n)&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else true&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else if (primitiveType = TypeEnum::FloatType)&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;then if (not (lowerLimit.value.oclIsTypeOf(NegativeInf)))&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;then ((lowerLimit.included and lowerLimit.value.oclAsType(FloatsValue).value &lt;= n) or (not&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;(lowerLimit.included) and lowerLimit.value.oclAsType(FloatsValue).value &lt; n)) and if (not&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;(upperLimit.value.oclIsTypeOf(PositiveInf)))&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;then (upperLimit.included and upperLimit.value.oclAsType(FloatsValue).value >= n) or (not&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;(upperLimit.included) and upperLimit.value.oclAsType(FloatsValue).value > n)&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else true&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else if (not (upperLimit.value.oclIsTypeOf(PositiveInf)))&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;then (upperLimit.included and upperLimit.value.oclAsType(FloatsValue).value >= n) or (not&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;(upperLimit.included) and upperLimit.value.oclAsType(FloatsValue).value > n)&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else true&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else if (not (lowerLimit.value.oclIsTypeOf(NegativeInf)))&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;then ((lowerLimit.included and lowerLimit.value.oclAsType(DoublePrecisionValue).value &lt;= n) or (not&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;(lowerLimit.included) and lowerLimit.value.oclAsType(DoublePrecisionValue).value &lt; n)) and if (not&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;(upperLimit.value.oclIsTypeOf(PositiveInf)))&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;then (upperLimit.included and upperLimit.value.oclAsType(DoublePrecisionValue).value >= n) or (not&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;(upperLimit.included) and upperLimit.value.oclAsType(DoublePrecisionValue).value > n)&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else true&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else if (not (upperLimit.value.oclIsTypeOf(PositiveInf)))&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;then (upperLimit.included and upperLimit.value.oclAsType(DoublePrecisionValue).value >= n) or (not&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;(upperLimit.included) and upperLimit.value.oclAsType(DoublePrecisionValue).value > n)&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else true&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif"/>
        </eAnnotations>
        <eParameters name="n" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
      </eOperations>
      <eStructuralFeatures xsi:type="ecore:EReference" name="lowerLimit" lowerBound="1"
          eType="#//type/Limit" containment="true"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="upperLimit" lowerBound="1"
          eType="#//type/Limit" containment="true"/>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="primitiveType" lowerBound="1"
          eType="#//type/TypeEnum"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="RangeUnion" eSuperTypes="#//type/ValueType">
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
        <details key="constraints" value="same_primitive_types_in_union_ranges correct_range_union_sequence"/>
      </eAnnotations>
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
        <details key="same_primitive_types_in_union_ranges" value="Tuple {&#xA;&#x9;message : String = 'RangeUnion: ' + self.name +&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;' has one or more ranges with a different primitive type',&#xA;&#x9;status : Boolean = self.ranges&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;->forAll(p | p.primitiveType = self.primitiveType)&#xA;}.status"/>
        <details key="correct_range_union_sequence" value="Tuple {&#xA;&#x9;message : String = 'RangeUnion: ' + self.name +&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;' has a wrong sequence of ranges. This means that two or more ranges are conflicting',&#xA;&#x9;status : Boolean = not&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;(invalidRangeSequence(self))&#xA;}.status"/>
      </eAnnotations>
      <eOperations name="includesValue" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
        <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
          <details key="body" value="ranges&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;->exists(p | p.includesValue(n))"/>
        </eAnnotations>
        <eParameters name="n" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
      </eOperations>
      <eOperations name="invalidRangeSequence" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
          <details key="body" value="EList&lt;Range> ranges = ru.getRanges();&#xD;&#xA;&#x9;&#x9;Range prev = ranges.get(0);&#xD;&#xA;&#x9;&#x9;for (int i = 1; i &lt; ranges.size(); i++){&#xD;&#xA;&#x9;&#x9;&#x9;Range next = ranges.get(i);&#xD;&#xA;&#x9;&#x9;&#x9;eu.paasage.camel.type.Limit lowerLimit = prev.getUpperLimit();&#xD;&#xA;&#x9;&#x9;&#x9;eu.paasage.camel.type.Limit upperLimit = next.getLowerLimit();&#xD;&#xA;&#x9;&#x9;&#x9;boolean lowerInclusive = lowerLimit.isIncluded();&#xD;&#xA;&#x9;&#x9;&#x9;boolean upperInclusive = upperLimit.isIncluded();&#xD;&#xA;&#x9;&#x9;&#x9;if (!(lowerLimit instanceof eu.paasage.camel.type.NegativeInf) &amp;&amp; !(upperLimit instanceof eu.paasage.camel.type.PositiveInf)){&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;double low = 0.0, upper = 0.0;&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;//Checking if already at end (positive infinity or next range starts with negative infinity&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;eu.paasage.camel.type.NumericValue prevVal = lowerLimit.getValue();&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;if (prevVal instanceof eu.paasage.camel.type.PositiveInf) return Boolean.TRUE;&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;eu.paasage.camel.type.NumericValue nextVal = upperLimit.getValue();&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;if (nextVal instanceof eu.paasage.camel.type.NegativeInf) return Boolean.TRUE;&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;//Checking now that low is less or equal to upper&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;if (prevVal instanceof eu.paasage.camel.type.IntegerValue){&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;low = ((eu.paasage.camel.type.IntegerValue)prevVal).getValue();&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;if (!lowerInclusive){&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;low = low -1;&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;lowerInclusive = true;&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;}&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;}&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;else if (prevVal instanceof eu.paasage.camel.type.FloatsValue) low = ((eu.paasage.camel.type.FloatsValue)prevVal).getValue();&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;else low = ((eu.paasage.camel.type.DoublePrecisionValue)prevVal).getValue();&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;if (nextVal instanceof eu.paasage.camel.type.IntegerValue){&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;upper = ((eu.paasage.camel.type.IntegerValue)nextVal).getValue();&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;if (!upperInclusive){&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;upper = upper + 1;&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;upperInclusive = true;&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;}&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;}&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;else if (nextVal instanceof eu.paasage.camel.type.FloatsValue) upper = ((eu.paasage.camel.type.FloatsValue)nextVal).getValue();&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;else upper = ((eu.paasage.camel.type.DoublePrecisionValue)nextVal).getValue();&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;System.out.println(&quot;Low is: &quot; + low + &quot; upper is: &quot; + upper);&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;if (low > upper || (low == upper &amp;&amp; lowerInclusive == true )) return Boolean.TRUE;&#xD;&#xA;&#x9;&#x9;&#x9;}&#xD;&#xA;&#x9;&#x9;&#x9;prev = next;&#xD;&#xA;&#x9;&#x9;}&#xD;&#xA;&#x9;&#x9;return Boolean.FALSE;"/>
        </eAnnotations>
        <eParameters name="ru" lowerBound="1" eType="#//type/RangeUnion"/>
      </eOperations>
      <eStructuralFeatures xsi:type="ecore:EReference" name="ranges" lowerBound="1"
          upperBound="-1" eType="#//type/Range" containment="true"/>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="primitiveType" lowerBound="1"
          eType="#//type/TypeEnum"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="StringValueType" eSuperTypes="#//type/ValueType">
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="primitiveType" lowerBound="1"
          eType="#//type/TypeEnum"/>
    </eClassifiers>
  </eSubpackages>
  <eSubpackages name="unit" nsURI="http://www.paasage.eu/2015/06/camel/unit" nsPrefix="unit">
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
      <details key="invocationDelegates" value="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot"/>
      <details key="settingDelegates" value="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot"/>
      <details key="validationDelegates" value="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot"/>
    </eAnnotations>
    <eClassifiers xsi:type="ecore:EClass" name="Unit" abstract="true">
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
        <details key="constraints" value="correct_unit"/>
      </eAnnotations>
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
        <details key="correct_unit" value="Tuple {&#xA;&#x9;message : String = 'Unit: ' + name + ' is incorrect as its type( ' + self.unit.toString() +&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;' that does not correspond to its dimension',&#xA;&#x9;status : Boolean = checkUnit()&#xA;}.status"/>
      </eAnnotations>
      <eOperations name="checkUnit" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
        <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
          <details key="body" value="if (self.oclIsTypeOf(TimeIntervalUnit))&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;then if (unit = UnitType::MILLISECONDS or unit = UnitType::SECONDS or unit = UnitType::MINUTES or unit =&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;UnitType::HOURS or unit = UnitType::DAYS or unit = UnitType::WEEKS or unit = UnitType::MONTHS)&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;then true&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else false&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else if (self.oclIsTypeOf(StorageUnit))&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;then if (unit = UnitType::BYTES or unit = UnitType::KILOBYTES or unit = UnitType::MEGABYTES or unit =&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;UnitType::GIGABYTES)&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;then true&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else false&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else if (self.oclIsTypeOf(MonetaryUnit))&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;then if (unit = UnitType::EUROS or unit = UnitType::DOLLARS or unit = UnitType::POUNDS)&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;then true&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else false&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else if (self.oclIsTypeOf(ThroughputUnit))&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;then if (unit = UnitType::BYTES_PER_SECOND or unit = UnitType::TRANSACTIONS_PER_SECOND or unit =&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;UnitType::REQUESTS_PER_SECOND)&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;then true&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else false&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else if (self.oclIsTypeOf(RequestUnit))&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;then if (unit = UnitType::REQUESTS)&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;then true&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else false&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else if (self.oclIsTypeOf(TransactionUnit))&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;then if (unit = UnitType::TRANSACTIONS)&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;then true&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else false&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else if (self.oclIsTypeOf(Dimensionless))&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;then if (unit = UnitType::PERCENTAGE)&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;then true&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else false&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else if (self.oclIsTypeOf(CoreUnit))&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;then if (unit = UnitType::CORES)&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;then true&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else false&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else false&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif"/>
        </eAnnotations>
      </eOperations>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" lowerBound="1"
          eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="unit" lowerBound="1"
          eType="#//unit/UnitType">
        <eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
          <details key="body" value="Feature"/>
        </eAnnotations>
      </eStructuralFeatures>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="CoreUnit" eSuperTypes="#//unit/Unit"/>
    <eClassifiers xsi:type="ecore:EClass" name="Dimensionless" eSuperTypes="#//unit/Unit"/>
    <eClassifiers xsi:type="ecore:EClass" name="MonetaryUnit" eSuperTypes="#//unit/Unit"/>
    <eClassifiers xsi:type="ecore:EClass" name="RequestUnit" eSuperTypes="#//unit/Unit"/>
    <eClassifiers xsi:type="ecore:EClass" name="StorageUnit" eSuperTypes="#//unit/Unit"/>
    <eClassifiers xsi:type="ecore:EClass" name="ThroughputUnit" eSuperTypes="#//unit/Unit"/>
    <eClassifiers xsi:type="ecore:EClass" name="TimeIntervalUnit" eSuperTypes="#//unit/Unit"/>
    <eClassifiers xsi:type="ecore:EClass" name="TransactionUnit" eSuperTypes="#//unit/Unit"/>
    <eClassifiers xsi:type="ecore:EEnum" name="UnitType">
      <eLiterals name="BYTES"/>
      <eLiterals name="BYTES_PER_SECOND" value="1"/>
      <eLiterals name="KILOBYTES" value="2"/>
      <eLiterals name="MEGABYTES" value="3"/>
      <eLiterals name="GIGABYTES" value="4"/>
      <eLiterals name="MILLISECONDS" value="5"/>
      <eLiterals name="SECONDS" value="6"/>
      <eLiterals name="MINUTES" value="7"/>
      <eLiterals name="HOURS" value="8"/>
      <eLiterals name="DAYS" value="9"/>
      <eLiterals name="WEEKS" value="10"/>
      <eLiterals name="MONTHS" value="11"/>
      <eLiterals name="REQUESTS" value="12"/>
      <eLiterals name="REQUESTS_PER_SECOND" value="13"/>
      <eLiterals name="TRANSACTIONS" value="14"/>
      <eLiterals name="TRANSACTIONS_PER_SECOND" value="15"/>
      <eLiterals name="CORES" value="16"/>
      <eLiterals name="PERCENTAGE" value="17"/>
      <eLiterals name="EUROS" value="18"/>
      <eLiterals name="POUNDS" value="19"/>
      <eLiterals name="DOLLARS" value="20"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EEnum" name="UnitDimensionType">
      <eLiterals name="TIME_INTERVAL"/>
      <eLiterals name="STORAGE" value="1"/>
      <eLiterals name="COST" value="2"/>
      <eLiterals name="THROUGHPUT" value="3"/>
      <eLiterals name="REQUEST_NUM" value="4"/>
      <eLiterals name="TRANSACTION_NUM" value="5"/>
      <eLiterals name="DIMENSIONLESS" value="6"/>
      <eLiterals name="CORE_NUM" value="7"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="UnitModel" eSuperTypes="#//Model">
      <eStructuralFeatures xsi:type="ecore:EReference" name="units" upperBound="-1"
          eType="#//unit/Unit" containment="true"/>
    </eClassifiers>
  </eSubpackages>
</ecore:EPackage>

{"directed":true,"nodes":[{"nsPrefix":"camel","nsURI":"http://www.paasage.eu/2015/06/camel","name":"camel","id":0,"eClass":"EPackage"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"Model","instanceClass":null,"abstract":true,"id":1,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"CamelModel","instanceClass":null,"abstract":false,"id":2,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"Action","instanceClass":null,"abstract":false,"id":3,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"instanceClassName":null,"name":"ActionType","instanceClass":null,"id":4,"serializable":true,"eClass":"EEnum"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"Application","instanceClass":null,"abstract":false,"id":5,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"instanceClassName":null,"name":"LayerType","instanceClass":null,"id":6,"serializable":true,"eClass":"EEnum"},{"nsPrefix":"deployment","nsURI":"http://www.paasage.eu/2015/06/camel/deployment","name":"deployment","id":7,"eClass":"EPackage"},{"nsPrefix":"execution","nsURI":"http://www.paasage.eu/2015/06/camel/execution","name":"execution","id":8,"eClass":"EPackage"},{"nsPrefix":"location","nsURI":"http://www.paasage.eu/2015/06/camel/location","name":"location","id":9,"eClass":"EPackage"},{"nsPrefix":"metric","nsURI":"http://www.paasage.eu/2015/06/camel/metric","name":"metric","id":10,"eClass":"EPackage"},{"nsPrefix":"organisation","nsURI":"http://www.paasage.eu/2015/06/camel/organisation","name":"organisation","id":11,"eClass":"EPackage"},{"nsPrefix":"provider","nsURI":"http://www.paasage.eu/2015/06/camel/provider","name":"provider","id":12,"eClass":"EPackage"},{"nsPrefix":"requirement","nsURI":"http://www.paasage.eu/2015/06/camel/requirement","name":"requirement","id":13,"eClass":"EPackage"},{"nsPrefix":"scalability","nsURI":"http://www.paasage.eu/2015/06/camel/scalability","name":"scalability","id":14,"eClass":"EPackage"},{"nsPrefix":"security","nsURI":"http://www.paasage.eu/2015/06/camel/security","name":"security","id":15,"eClass":"EPackage"},{"nsPrefix":"type","nsURI":"http://www.paasage.eu/2015/06/camel/type","name":"type","id":16,"eClass":"EPackage"},{"nsPrefix":"unit","nsURI":"http://www.paasage.eu/2015/06/camel/unit","name":"unit","id":17,"eClass":"EPackage"},{"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"name","changeable":true,"lowerBound":1,"iD":false,"id":18,"derived":false},{"ordered":true,"upperBound":-1,"defaultValue":null,"volatile":false,"many":true,"required":false,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"importURI","changeable":true,"lowerBound":0,"iD":false,"id":19,"derived":false},{"id":20,"eClass":"EGenericType"},{"id":21,"eClass":"EGenericType"},{"container":false,"ordered":false,"upperBound":-1,"defaultValue":null,"volatile":false,"many":true,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"actions","changeable":true,"resolveProxies":true,"lowerBound":0,"id":22,"derived":false},{"container":false,"ordered":false,"upperBound":-1,"defaultValue":null,"volatile":false,"many":true,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"applications","changeable":true,"resolveProxies":true,"lowerBound":0,"id":23,"derived":false},{"container":false,"ordered":false,"upperBound":-1,"defaultValue":null,"volatile":false,"many":true,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"deploymentModels","changeable":true,"resolveProxies":true,"lowerBound":0,"id":24,"derived":false},{"container":false,"ordered":false,"upperBound":-1,"defaultValue":null,"volatile":false,"many":true,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"executionModels","changeable":true,"resolveProxies":true,"lowerBound":0,"id":25,"derived":false},{"container":false,"ordered":true,"upperBound":-1,"defaultValue":null,"volatile":false,"many":true,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"locationModels","changeable":true,"resolveProxies":true,"lowerBound":0,"id":26,"derived":false},{"container":false,"ordered":true,"upperBound":-1,"defaultValue":null,"volatile":false,"many":true,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"metricModels","changeable":true,"resolveProxies":true,"lowerBound":0,"id":27,"derived":false},{"container":false,"ordered":false,"upperBound":-1,"defaultValue":null,"volatile":false,"many":true,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"organisationModels","changeable":true,"resolveProxies":true,"lowerBound":0,"id":28,"derived":false},{"container":false,"ordered":false,"upperBound":-1,"defaultValue":null,"volatile":false,"many":true,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"providerModels","changeable":true,"resolveProxies":true,"lowerBound":0,"id":29,"derived":false},{"container":false,"ordered":true,"upperBound":-1,"defaultValue":null,"volatile":false,"many":true,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"requirementModels","changeable":true,"resolveProxies":true,"lowerBound":0,"id":30,"derived":false},{"container":false,"ordered":false,"upperBound":-1,"defaultValue":null,"volatile":false,"many":true,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"scalabilityModels","changeable":true,"resolveProxies":true,"lowerBound":0,"id":31,"derived":false},{"container":false,"ordered":false,"upperBound":-1,"defaultValue":null,"volatile":false,"many":true,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"securityModels","changeable":true,"resolveProxies":true,"lowerBound":0,"id":32,"derived":false},{"container":false,"ordered":false,"upperBound":-1,"defaultValue":null,"volatile":false,"many":true,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"typeModels","changeable":true,"resolveProxies":true,"lowerBound":0,"id":33,"derived":false},{"container":false,"ordered":false,"upperBound":-1,"defaultValue":null,"volatile":false,"many":true,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"unitModels","changeable":true,"resolveProxies":true,"lowerBound":0,"id":34,"derived":false},{"id":35,"eClass":"EGenericType"},{"id":36,"eClass":"EGenericType"},{"id":37,"eClass":"EGenericType"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"DeploymentModel","instanceClass":null,"abstract":false,"id":38,"interface":false,"eClass":"EClass"},{"id":39,"eClass":"EGenericType"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"ExecutionModel","instanceClass":null,"abstract":false,"id":40,"interface":false,"eClass":"EClass"},{"id":41,"eClass":"EGenericType"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"LocationModel","instanceClass":null,"abstract":false,"id":42,"interface":false,"eClass":"EClass"},{"id":43,"eClass":"EGenericType"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"MetricModel","instanceClass":null,"abstract":false,"id":44,"interface":false,"eClass":"EClass"},{"id":45,"eClass":"EGenericType"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"OrganisationModel","instanceClass":null,"abstract":false,"id":46,"interface":false,"eClass":"EClass"},{"id":47,"eClass":"EGenericType"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"ProviderModel","instanceClass":null,"abstract":false,"id":48,"interface":false,"eClass":"EClass"},{"id":49,"eClass":"EGenericType"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"RequirementModel","instanceClass":null,"abstract":false,"id":50,"interface":false,"eClass":"EClass"},{"id":51,"eClass":"EGenericType"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"ScalabilityModel","instanceClass":null,"abstract":false,"id":52,"interface":false,"eClass":"EClass"},{"id":53,"eClass":"EGenericType"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"SecurityModel","instanceClass":null,"abstract":false,"id":54,"interface":false,"eClass":"EClass"},{"id":55,"eClass":"EGenericType"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"TypeModel","instanceClass":null,"abstract":false,"id":56,"interface":false,"eClass":"EClass"},{"id":57,"eClass":"EGenericType"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"UnitModel","instanceClass":null,"abstract":false,"id":58,"interface":false,"eClass":"EClass"},{"id":59,"eClass":"EGenericType"},{"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"name","changeable":true,"lowerBound":1,"iD":false,"id":60,"derived":false},{"ordered":true,"upperBound":1,"volatile":false,"many":false,"required":true,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"type","changeable":true,"lowerBound":1,"iD":false,"id":61,"derived":false},{"id":62,"eClass":"EGenericType"},{"id":63,"eClass":"EGenericType"},{"name":"EVENT_CREATION","id":64,"value":0,"literal":"EVENT_CREATION","eClass":"EEnumLiteral"},{"name":"SCALE_IN","id":65,"value":1,"literal":"SCALE_IN","eClass":"EEnumLiteral"},{"name":"SCALE_OUT","id":66,"value":2,"literal":"SCALE_OUT","eClass":"EEnumLiteral"},{"name":"SCALE_UP","id":67,"value":3,"literal":"SCALE_UP","eClass":"EEnumLiteral"},{"name":"SCALE_DOWN","id":68,"value":4,"literal":"SCALE_DOWN","eClass":"EEnumLiteral"},{"name":"READ","id":69,"value":5,"literal":"READ","eClass":"EEnumLiteral"},{"name":"WRITE","id":70,"value":6,"literal":"WRITE","eClass":"EEnumLiteral"},{"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"name","changeable":true,"lowerBound":1,"iD":false,"id":71,"derived":false},{"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"version","changeable":true,"lowerBound":1,"iD":false,"id":72,"derived":false},{"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":false,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"description","changeable":true,"lowerBound":0,"iD":false,"id":73,"derived":false},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"owner","changeable":true,"resolveProxies":true,"lowerBound":1,"id":74,"derived":false},{"container":false,"ordered":false,"upperBound":-1,"defaultValue":null,"volatile":false,"many":true,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"deploymentModels","changeable":true,"resolveProxies":true,"lowerBound":0,"id":75,"derived":false},{"id":76,"eClass":"EGenericType"},{"id":77,"eClass":"EGenericType"},{"id":78,"eClass":"EGenericType"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"Entity","instanceClass":null,"abstract":false,"id":79,"interface":false,"eClass":"EClass"},{"id":80,"eClass":"EGenericType"},{"id":81,"eClass":"EGenericType"},{"name":"SaaS","id":82,"value":0,"literal":"SaaS","eClass":"EEnumLiteral"},{"name":"PaaS","id":83,"value":1,"literal":"PaaS","eClass":"EEnumLiteral"},{"name":"IaaS","id":84,"value":2,"literal":"IaaS","eClass":"EEnumLiteral"},{"name":"BPM","id":85,"value":3,"literal":"BPM","eClass":"EEnumLiteral"},{"name":"SCC","id":86,"value":4,"literal":"SCC","eClass":"EEnumLiteral"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"DeploymentElement","instanceClass":null,"abstract":true,"id":87,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"Component","instanceClass":null,"abstract":true,"id":88,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"InternalComponent","instanceClass":null,"abstract":false,"id":89,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"VM","instanceClass":null,"abstract":false,"id":90,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"VMRequirementSet","instanceClass":null,"abstract":false,"id":91,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"Configuration","instanceClass":null,"abstract":false,"id":92,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"Communication","instanceClass":null,"abstract":false,"id":93,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"instanceClassName":null,"name":"CommunicationType","instanceClass":null,"id":94,"serializable":true,"eClass":"EEnum"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"CommunicationPort","instanceClass":null,"abstract":true,"id":95,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"ProvidedCommunication","instanceClass":null,"abstract":false,"id":96,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"RequiredCommunication","instanceClass":null,"abstract":false,"id":97,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"Hosting","instanceClass":null,"abstract":false,"id":98,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"HostingPort","instanceClass":null,"abstract":true,"id":99,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"ProvidedHost","instanceClass":null,"abstract":false,"id":100,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"RequiredHost","instanceClass":null,"abstract":false,"id":101,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"ComponentInstance","instanceClass":null,"abstract":true,"id":102,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"InternalComponentInstance","instanceClass":null,"abstract":false,"id":103,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"VMInstance","instanceClass":null,"abstract":false,"id":104,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"CommunicationInstance","instanceClass":null,"abstract":false,"id":105,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"CommunicationPortInstance","instanceClass":null,"abstract":false,"id":106,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"ProvidedCommunicationInstance","instanceClass":null,"abstract":false,"id":107,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"RequiredCommunicationInstance","instanceClass":null,"abstract":false,"id":108,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"HostingInstance","instanceClass":null,"abstract":false,"id":109,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"HostingPortInstance","instanceClass":null,"abstract":true,"id":110,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"ProvidedHostInstance","instanceClass":null,"abstract":false,"id":111,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"RequiredHostInstance","instanceClass":null,"abstract":false,"id":112,"interface":false,"eClass":"EClass"},{"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"name","changeable":true,"lowerBound":1,"iD":false,"id":113,"derived":false},{"id":114,"eClass":"EGenericType"},{"container":false,"ordered":true,"upperBound":-1,"defaultValue":null,"volatile":false,"many":true,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"internalComponents","changeable":true,"resolveProxies":true,"lowerBound":0,"id":115,"derived":false},{"container":false,"ordered":true,"upperBound":-1,"defaultValue":null,"volatile":false,"many":true,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"internalComponentInstances","changeable":true,"resolveProxies":true,"lowerBound":0,"id":116,"derived":false},{"container":false,"ordered":true,"upperBound":-1,"defaultValue":null,"volatile":false,"many":true,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"vms","changeable":true,"resolveProxies":true,"lowerBound":0,"id":117,"derived":false},{"container":false,"ordered":true,"upperBound":-1,"defaultValue":null,"volatile":false,"many":true,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"vmInstances","changeable":true,"resolveProxies":true,"lowerBound":0,"id":118,"derived":false},{"container":false,"ordered":true,"upperBound":-1,"defaultValue":null,"volatile":false,"many":true,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"communications","changeable":true,"resolveProxies":true,"lowerBound":0,"id":119,"derived":false},{"container":false,"ordered":true,"upperBound":-1,"defaultValue":null,"volatile":false,"many":true,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"communicationInstances","changeable":true,"resolveProxies":true,"lowerBound":0,"id":120,"derived":false},{"container":false,"ordered":true,"upperBound":-1,"defaultValue":null,"volatile":false,"many":true,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"hostings","changeable":true,"resolveProxies":true,"lowerBound":0,"id":121,"derived":false},{"container":false,"ordered":true,"upperBound":-1,"defaultValue":null,"volatile":false,"many":true,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"hostingInstances","changeable":true,"resolveProxies":true,"lowerBound":0,"id":122,"derived":false},{"container":false,"ordered":true,"upperBound":-1,"defaultValue":null,"volatile":false,"many":true,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"vmRequirementSets","changeable":true,"resolveProxies":true,"lowerBound":0,"id":123,"derived":false},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"globalVMRequirementSet","changeable":true,"resolveProxies":true,"lowerBound":0,"id":124,"derived":false},{"id":125,"eClass":"EGenericType"},{"id":126,"eClass":"EGenericType"},{"id":127,"eClass":"EGenericType"},{"id":128,"eClass":"EGenericType"},{"id":129,"eClass":"EGenericType"},{"id":130,"eClass":"EGenericType"},{"id":131,"eClass":"EGenericType"},{"id":132,"eClass":"EGenericType"},{"id":133,"eClass":"EGenericType"},{"id":134,"eClass":"EGenericType"},{"id":135,"eClass":"EGenericType"},{"container":false,"ordered":true,"upperBound":-1,"defaultValue":null,"volatile":false,"many":true,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"providedCommunications","changeable":true,"resolveProxies":true,"lowerBound":0,"id":136,"derived":false},{"container":false,"ordered":true,"upperBound":-1,"defaultValue":null,"volatile":false,"many":true,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"providedHosts","changeable":true,"resolveProxies":true,"lowerBound":0,"id":137,"derived":false},{"container":false,"ordered":true,"upperBound":-1,"defaultValue":null,"volatile":false,"many":true,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"configurations","changeable":true,"resolveProxies":true,"lowerBound":0,"id":138,"derived":false},{"id":139,"eClass":"EGenericType"},{"id":140,"eClass":"EGenericType"},{"id":141,"eClass":"EGenericType"},{"id":142,"eClass":"EGenericType"},{"ordered":true,"upperBound":1,"unique":true,"name":"contains","lowerBound":0,"id":143,"many":false,"required":false,"eClass":"EOperation"},{"container":false,"ordered":true,"upperBound":-1,"defaultValue":null,"volatile":false,"many":true,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"compositeInternalComponents","changeable":true,"resolveProxies":true,"lowerBound":0,"id":144,"derived":false},{"container":false,"ordered":true,"upperBound":-1,"defaultValue":null,"volatile":false,"many":true,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"requiredCommunications","changeable":true,"resolveProxies":true,"lowerBound":0,"id":145,"derived":false},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"requiredHost","changeable":true,"resolveProxies":true,"lowerBound":0,"id":146,"derived":false},{"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":false,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"version","changeable":true,"lowerBound":0,"iD":false,"id":147,"derived":false},{"id":148,"eClass":"EGenericType"},{"id":149,"eClass":"EGenericType"},{"ordered":true,"upperBound":1,"unique":true,"name":"ic","lowerBound":1,"id":150,"many":false,"required":true,"eClass":"EParameter"},{"ordered":true,"upperBound":1,"unique":true,"name":"rc","lowerBound":1,"id":151,"many":false,"required":true,"eClass":"EParameter"},{"id":152,"eClass":"EGenericType"},{"id":153,"eClass":"EGenericType"},{"id":154,"eClass":"EGenericType"},{"id":155,"eClass":"EGenericType"},{"id":156,"eClass":"EGenericType"},{"id":157,"eClass":"EGenericType"},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"vmRequirementSet","changeable":true,"resolveProxies":true,"lowerBound":0,"id":158,"derived":false},{"id":159,"eClass":"EGenericType"},{"id":160,"eClass":"EGenericType"},{"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"name","changeable":true,"lowerBound":1,"iD":false,"id":161,"derived":false},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"locationRequirement","changeable":true,"resolveProxies":true,"lowerBound":0,"id":162,"derived":false},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"providerRequirement","changeable":true,"resolveProxies":true,"lowerBound":0,"id":163,"derived":false},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"qualitativeHardwareRequirement","changeable":true,"resolveProxies":true,"lowerBound":0,"id":164,"derived":false},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"quantitativeHardwareRequirement","changeable":true,"resolveProxies":true,"lowerBound":0,"id":165,"derived":false},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"osOrImageRequirement","changeable":true,"resolveProxies":true,"lowerBound":0,"id":166,"derived":false},{"id":167,"eClass":"EGenericType"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"LocationRequirement","instanceClass":null,"abstract":false,"id":168,"interface":false,"eClass":"EClass"},{"id":169,"eClass":"EGenericType"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"ProviderRequirement","instanceClass":null,"abstract":false,"id":170,"interface":false,"eClass":"EClass"},{"id":171,"eClass":"EGenericType"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"QualitativeHardwareRequirement","instanceClass":null,"abstract":false,"id":172,"interface":false,"eClass":"EClass"},{"id":173,"eClass":"EGenericType"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"QuantitativeHardwareRequirement","instanceClass":null,"abstract":false,"id":174,"interface":false,"eClass":"EClass"},{"id":175,"eClass":"EGenericType"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"OSOrImageRequirement","instanceClass":null,"abstract":true,"id":176,"interface":false,"eClass":"EClass"},{"id":177,"eClass":"EGenericType"},{"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":false,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"downloadCommand","changeable":true,"lowerBound":0,"iD":false,"id":178,"derived":false},{"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":false,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"uploadCommand","changeable":true,"lowerBound":0,"iD":false,"id":179,"derived":false},{"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":false,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"installCommand","changeable":true,"lowerBound":0,"iD":false,"id":180,"derived":false},{"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":false,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"configureCommand","changeable":true,"lowerBound":0,"iD":false,"id":181,"derived":false},{"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":false,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"startCommand","changeable":true,"lowerBound":0,"iD":false,"id":182,"derived":false},{"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":false,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"stopCommand","changeable":true,"lowerBound":0,"iD":false,"id":183,"derived":false},{"id":184,"eClass":"EGenericType"},{"id":185,"eClass":"EGenericType"},{"id":186,"eClass":"EGenericType"},{"id":187,"eClass":"EGenericType"},{"id":188,"eClass":"EGenericType"},{"id":189,"eClass":"EGenericType"},{"id":190,"eClass":"EGenericType"},{"ordered":true,"upperBound":1,"volatile":false,"many":false,"required":true,"eClass":"EAttribute","defaultValueLiteral":"ANY","unsettable":false,"transient":false,"unique":true,"name":"type","changeable":true,"lowerBound":1,"iD":false,"id":191,"derived":false},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"providedCommunication","changeable":true,"resolveProxies":true,"lowerBound":1,"id":192,"derived":false},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"requiredCommunication","changeable":true,"resolveProxies":true,"lowerBound":1,"id":193,"derived":false},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"providedPortConfiguration","changeable":true,"resolveProxies":true,"lowerBound":0,"id":194,"derived":false},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"requiredPortConfiguration","changeable":true,"resolveProxies":true,"lowerBound":0,"id":195,"derived":false},{"id":196,"eClass":"EGenericType"},{"id":197,"eClass":"EGenericType"},{"id":198,"eClass":"EGenericType"},{"id":199,"eClass":"EGenericType"},{"id":200,"eClass":"EGenericType"},{"id":201,"eClass":"EGenericType"},{"name":"ANY","id":202,"value":0,"literal":"ANY","eClass":"EEnumLiteral"},{"name":"LOCAL","id":203,"value":1,"literal":"LOCAL","eClass":"EEnumLiteral"},{"name":"REMOTE","id":204,"value":2,"literal":"REMOTE","eClass":"EEnumLiteral"},{"ordered":true,"upperBound":1,"defaultValue":0,"volatile":false,"many":false,"required":false,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"portNumber","changeable":true,"lowerBound":0,"iD":false,"id":205,"derived":false},{"id":206,"eClass":"EGenericType"},{"id":207,"eClass":"EGenericType"},{"id":208,"eClass":"EGenericType"},{"ordered":true,"upperBound":1,"defaultValue":false,"volatile":false,"many":false,"required":true,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"isMandatory","changeable":true,"lowerBound":1,"iD":false,"id":209,"derived":false},{"id":210,"eClass":"EGenericType"},{"id":211,"eClass":"EGenericType"},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"providedHost","changeable":true,"resolveProxies":true,"lowerBound":1,"id":212,"derived":false},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"requiredHost","changeable":true,"resolveProxies":true,"lowerBound":1,"id":213,"derived":false},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"providedHostConfiguration","changeable":true,"resolveProxies":true,"lowerBound":0,"id":214,"derived":false},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"requiredHostConfiguration","changeable":true,"resolveProxies":true,"lowerBound":0,"id":215,"derived":false},{"id":216,"eClass":"EGenericType"},{"id":217,"eClass":"EGenericType"},{"id":218,"eClass":"EGenericType"},{"id":219,"eClass":"EGenericType"},{"id":220,"eClass":"EGenericType"},{"id":221,"eClass":"EGenericType"},{"id":222,"eClass":"EGenericType"},{"id":223,"eClass":"EGenericType"},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"type","changeable":true,"resolveProxies":true,"lowerBound":1,"id":224,"derived":false},{"container":false,"ordered":true,"upperBound":-1,"defaultValue":null,"volatile":false,"many":true,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"providedCommunicationInstances","changeable":true,"resolveProxies":true,"lowerBound":0,"id":225,"derived":false},{"container":false,"ordered":true,"upperBound":-1,"defaultValue":null,"volatile":false,"many":true,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"providedHostInstances","changeable":true,"resolveProxies":true,"lowerBound":0,"id":226,"derived":false},{"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":false,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"instantiatedOn","changeable":true,"lowerBound":0,"iD":false,"id":227,"derived":false},{"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":false,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"destroyedOn","changeable":true,"lowerBound":0,"iD":false,"id":228,"derived":false},{"id":229,"eClass":"EGenericType"},{"id":230,"eClass":"EGenericType"},{"id":231,"eClass":"EGenericType"},{"id":232,"eClass":"EGenericType"},{"id":233,"eClass":"EGenericType"},{"id":234,"eClass":"EGenericType"},{"container":false,"ordered":true,"upperBound":-1,"defaultValue":null,"volatile":false,"many":true,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"requiredCommunicationInstances","changeable":true,"resolveProxies":true,"lowerBound":0,"id":235,"derived":false},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"requiredHostInstance","changeable":true,"resolveProxies":true,"lowerBound":0,"id":236,"derived":false},{"id":237,"eClass":"EGenericType"},{"id":238,"eClass":"EGenericType"},{"id":239,"eClass":"EGenericType"},{"ordered":true,"upperBound":1,"unique":true,"name":"checkDates","lowerBound":0,"id":240,"many":false,"required":false,"eClass":"EOperation"},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"vmType","changeable":true,"resolveProxies":true,"lowerBound":0,"id":241,"derived":false},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"vmTypeValue","changeable":true,"resolveProxies":true,"lowerBound":0,"id":242,"derived":false},{"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":false,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"ip","changeable":true,"lowerBound":0,"iD":false,"id":243,"derived":false},{"id":244,"eClass":"EGenericType"},{"id":245,"eClass":"EGenericType"},{"ordered":true,"upperBound":1,"unique":true,"name":"vm","lowerBound":0,"id":246,"many":false,"required":false,"eClass":"EParameter"},{"id":247,"eClass":"EGenericType"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"Attribute","instanceClass":null,"abstract":false,"id":248,"interface":false,"eClass":"EClass"},{"id":249,"eClass":"EGenericType"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"SingleValue","instanceClass":null,"abstract":true,"id":250,"interface":false,"eClass":"EClass"},{"id":251,"eClass":"EGenericType"},{"id":252,"eClass":"EGenericType"},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"type","changeable":true,"resolveProxies":true,"lowerBound":1,"id":253,"derived":false},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"providedCommunicationInstance","changeable":true,"resolveProxies":true,"lowerBound":1,"id":254,"derived":false},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"requiredCommunicationInstance","changeable":true,"resolveProxies":true,"lowerBound":1,"id":255,"derived":false},{"id":256,"eClass":"EGenericType"},{"id":257,"eClass":"EGenericType"},{"id":258,"eClass":"EGenericType"},{"id":259,"eClass":"EGenericType"},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"type","changeable":true,"resolveProxies":true,"lowerBound":1,"id":260,"derived":false},{"id":261,"eClass":"EGenericType"},{"id":262,"eClass":"EGenericType"},{"id":263,"eClass":"EGenericType"},{"id":264,"eClass":"EGenericType"},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"type","changeable":true,"resolveProxies":true,"lowerBound":1,"id":265,"derived":false},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"providedHostInstance","changeable":true,"resolveProxies":true,"lowerBound":1,"id":266,"derived":false},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"requiredHostInstance","changeable":true,"resolveProxies":true,"lowerBound":1,"id":267,"derived":false},{"id":268,"eClass":"EGenericType"},{"id":269,"eClass":"EGenericType"},{"id":270,"eClass":"EGenericType"},{"id":271,"eClass":"EGenericType"},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"type","changeable":true,"resolveProxies":true,"lowerBound":1,"id":272,"derived":false},{"id":273,"eClass":"EGenericType"},{"id":274,"eClass":"EGenericType"},{"id":275,"eClass":"EGenericType"},{"id":276,"eClass":"EGenericType"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"ActionRealisation","instanceClass":null,"abstract":false,"id":277,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"ExecutionContext","instanceClass":null,"abstract":false,"id":278,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"Measurement","instanceClass":null,"abstract":false,"id":279,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"ApplicationMeasurement","instanceClass":null,"abstract":false,"id":280,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"InternalComponentMeasurement","instanceClass":null,"abstract":false,"id":281,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"CommunicationMeasurement","instanceClass":null,"abstract":false,"id":282,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"VMMeasurement","instanceClass":null,"abstract":false,"id":283,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"SLOAssessment","instanceClass":null,"abstract":false,"id":284,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"RuleTrigger","instanceClass":null,"abstract":false,"id":285,"interface":false,"eClass":"EClass"},{"container":false,"ordered":false,"upperBound":-1,"defaultValue":null,"volatile":false,"many":true,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"actionRealisations","changeable":true,"resolveProxies":true,"lowerBound":0,"id":286,"derived":false},{"container":false,"ordered":true,"upperBound":-1,"defaultValue":null,"volatile":false,"many":true,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"eventInstances","changeable":true,"resolveProxies":true,"lowerBound":0,"id":287,"derived":false},{"container":false,"ordered":false,"upperBound":-1,"defaultValue":null,"volatile":false,"many":true,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"executionContexts","changeable":true,"resolveProxies":true,"lowerBound":0,"id":288,"derived":false},{"container":false,"ordered":false,"upperBound":-1,"defaultValue":null,"volatile":false,"many":true,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"measurements","changeable":true,"resolveProxies":true,"lowerBound":0,"id":289,"derived":false},{"container":false,"ordered":false,"upperBound":-1,"defaultValue":null,"volatile":false,"many":true,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"sloAssessessments","changeable":true,"resolveProxies":true,"lowerBound":0,"id":290,"derived":false},{"container":false,"ordered":false,"upperBound":-1,"defaultValue":null,"volatile":false,"many":true,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"ruleTriggers","changeable":true,"resolveProxies":true,"lowerBound":0,"id":291,"derived":false},{"id":292,"eClass":"EGenericType"},{"id":293,"eClass":"EGenericType"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"EventInstance","instanceClass":null,"abstract":false,"id":294,"interface":false,"eClass":"EClass"},{"id":295,"eClass":"EGenericType"},{"id":296,"eClass":"EGenericType"},{"id":297,"eClass":"EGenericType"},{"id":298,"eClass":"EGenericType"},{"id":299,"eClass":"EGenericType"},{"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"name","changeable":true,"lowerBound":1,"iD":true,"id":300,"derived":false},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"action","changeable":true,"resolveProxies":true,"lowerBound":1,"id":301,"derived":false},{"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":false,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"startTime","changeable":true,"lowerBound":0,"iD":false,"id":302,"derived":false},{"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":false,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"endTime","changeable":true,"lowerBound":0,"iD":false,"id":303,"derived":false},{"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":false,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"lowLevelActions","changeable":true,"lowerBound":0,"iD":false,"id":304,"derived":false},{"id":305,"eClass":"EGenericType"},{"id":306,"eClass":"EGenericType"},{"id":307,"eClass":"EGenericType"},{"id":308,"eClass":"EGenericType"},{"id":309,"eClass":"EGenericType"},{"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"name","changeable":true,"lowerBound":1,"iD":true,"id":310,"derived":false},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"application","changeable":true,"resolveProxies":true,"lowerBound":1,"id":311,"derived":false},{"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":false,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"startTime","changeable":true,"lowerBound":0,"iD":false,"id":312,"derived":false},{"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":false,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"endTime","changeable":true,"lowerBound":0,"iD":false,"id":313,"derived":false},{"ordered":true,"upperBound":1,"defaultValue":0.0,"volatile":false,"many":false,"required":false,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"totalCost","changeable":true,"lowerBound":0,"iD":false,"id":314,"derived":false},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"costUnit","changeable":true,"resolveProxies":true,"lowerBound":0,"id":315,"derived":false},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"deploymentModel","changeable":true,"resolveProxies":true,"lowerBound":1,"id":316,"derived":false},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"requirementGroup","changeable":true,"resolveProxies":true,"lowerBound":1,"id":317,"derived":false},{"id":318,"eClass":"EGenericType"},{"id":319,"eClass":"EGenericType"},{"id":320,"eClass":"EGenericType"},{"id":321,"eClass":"EGenericType"},{"id":322,"eClass":"EGenericType"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"MonetaryUnit","instanceClass":null,"abstract":false,"id":323,"interface":false,"eClass":"EClass"},{"id":324,"eClass":"EGenericType"},{"id":325,"eClass":"EGenericType"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"RequirementGroup","instanceClass":null,"abstract":false,"id":326,"interface":false,"eClass":"EClass"},{"id":327,"eClass":"EGenericType"},{"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"name","changeable":true,"lowerBound":1,"iD":true,"id":328,"derived":false},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"executionContext","changeable":true,"resolveProxies":true,"lowerBound":1,"id":329,"derived":false},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"metricInstance","changeable":true,"resolveProxies":true,"lowerBound":1,"id":330,"derived":false},{"ordered":true,"upperBound":1,"defaultValue":0.0,"volatile":false,"many":false,"required":true,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"value","changeable":true,"lowerBound":1,"iD":false,"id":331,"derived":false},{"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":false,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"rawData","changeable":true,"lowerBound":0,"iD":false,"id":332,"derived":false},{"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"measurementTime","changeable":true,"lowerBound":1,"iD":false,"id":333,"derived":false},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"slo","changeable":true,"resolveProxies":true,"lowerBound":0,"id":334,"derived":false},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"eventInstance","changeable":true,"resolveProxies":true,"lowerBound":0,"id":335,"derived":false},{"id":336,"eClass":"EGenericType"},{"id":337,"eClass":"EGenericType"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"MetricInstance","instanceClass":null,"abstract":true,"id":338,"interface":false,"eClass":"EClass"},{"id":339,"eClass":"EGenericType"},{"id":340,"eClass":"EGenericType"},{"id":341,"eClass":"EGenericType"},{"id":342,"eClass":"EGenericType"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"ServiceLevelObjective","instanceClass":null,"abstract":false,"id":343,"interface":false,"eClass":"EClass"},{"id":344,"eClass":"EGenericType"},{"id":345,"eClass":"EGenericType"},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"application","changeable":true,"resolveProxies":true,"lowerBound":1,"id":346,"derived":false},{"id":347,"eClass":"EGenericType"},{"id":348,"eClass":"EGenericType"},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"internalComponentInstance","changeable":true,"resolveProxies":true,"lowerBound":1,"id":349,"derived":false},{"id":350,"eClass":"EGenericType"},{"id":351,"eClass":"EGenericType"},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"sourceVMInstance","changeable":true,"resolveProxies":true,"lowerBound":1,"id":352,"derived":false},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"destinationVMInstance","changeable":true,"resolveProxies":true,"lowerBound":1,"id":353,"derived":false},{"id":354,"eClass":"EGenericType"},{"id":355,"eClass":"EGenericType"},{"id":356,"eClass":"EGenericType"},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"vmInstance","changeable":true,"resolveProxies":true,"lowerBound":1,"id":357,"derived":false},{"id":358,"eClass":"EGenericType"},{"id":359,"eClass":"EGenericType"},{"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"name","changeable":true,"lowerBound":1,"iD":false,"id":360,"derived":false},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"slo","changeable":true,"resolveProxies":true,"lowerBound":1,"id":361,"derived":false},{"ordered":true,"upperBound":1,"defaultValue":false,"volatile":false,"many":false,"required":true,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"assessment","changeable":true,"lowerBound":1,"iD":false,"id":362,"derived":false},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"executionContext","changeable":true,"resolveProxies":true,"lowerBound":1,"id":363,"derived":false},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"measurement","changeable":true,"resolveProxies":true,"lowerBound":1,"id":364,"derived":false},{"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"assessmentTime","changeable":true,"lowerBound":1,"iD":false,"id":365,"derived":false},{"id":366,"eClass":"EGenericType"},{"id":367,"eClass":"EGenericType"},{"id":368,"eClass":"EGenericType"},{"id":369,"eClass":"EGenericType"},{"id":370,"eClass":"EGenericType"},{"id":371,"eClass":"EGenericType"},{"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"name","changeable":true,"lowerBound":1,"iD":false,"id":372,"derived":false},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"scalabilityRule","changeable":true,"resolveProxies":true,"lowerBound":1,"id":373,"derived":false},{"container":false,"ordered":true,"upperBound":-1,"defaultValue":null,"volatile":false,"many":true,"required":true,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"eventInstances","changeable":true,"resolveProxies":true,"lowerBound":1,"id":374,"derived":false},{"container":false,"ordered":true,"upperBound":-1,"defaultValue":null,"volatile":false,"many":true,"required":true,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"actionRealisations","changeable":true,"resolveProxies":true,"lowerBound":1,"id":375,"derived":false},{"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"trigerringTime","changeable":true,"lowerBound":1,"iD":false,"id":376,"derived":false},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"executionContext","changeable":true,"resolveProxies":true,"lowerBound":1,"id":377,"derived":false},{"id":378,"eClass":"EGenericType"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"ScalabilityRule","instanceClass":null,"abstract":false,"id":379,"interface":false,"eClass":"EClass"},{"id":380,"eClass":"EGenericType"},{"id":381,"eClass":"EGenericType"},{"id":382,"eClass":"EGenericType"},{"id":383,"eClass":"EGenericType"},{"id":384,"eClass":"EGenericType"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"Location","instanceClass":null,"abstract":true,"id":385,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"CloudLocation","instanceClass":null,"abstract":false,"id":386,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"GeographicalRegion","instanceClass":null,"abstract":false,"id":387,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"Country","instanceClass":null,"abstract":false,"id":388,"interface":false,"eClass":"EClass"},{"container":false,"ordered":true,"upperBound":-1,"defaultValue":null,"volatile":false,"many":true,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"cloudLocations","changeable":true,"resolveProxies":true,"lowerBound":0,"id":389,"derived":false},{"container":false,"ordered":true,"upperBound":-1,"defaultValue":null,"volatile":false,"many":true,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"countries","changeable":true,"resolveProxies":true,"lowerBound":0,"id":390,"derived":false},{"container":false,"ordered":true,"upperBound":-1,"defaultValue":null,"volatile":false,"many":true,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"regions","changeable":true,"resolveProxies":true,"lowerBound":0,"id":391,"derived":false},{"id":392,"eClass":"EGenericType"},{"id":393,"eClass":"EGenericType"},{"id":394,"eClass":"EGenericType"},{"id":395,"eClass":"EGenericType"},{"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"id","changeable":true,"lowerBound":1,"iD":false,"id":396,"derived":false},{"id":397,"eClass":"EGenericType"},{"ordered":true,"upperBound":1,"unique":true,"name":"checkRecursiveness","lowerBound":0,"id":398,"many":false,"required":false,"eClass":"EOperation"},{"ordered":true,"upperBound":1,"defaultValue":false,"volatile":false,"many":false,"required":true,"eClass":"EAttribute","defaultValueLiteral":"false","unsettable":false,"transient":false,"unique":true,"name":"isAssignable","changeable":true,"lowerBound":1,"iD":false,"id":399,"derived":false},{"container":false,"ordered":true,"upperBound":-1,"defaultValue":null,"volatile":false,"many":true,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"subLocations","changeable":true,"resolveProxies":true,"lowerBound":0,"id":400,"derived":false},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"parent","changeable":true,"resolveProxies":true,"lowerBound":0,"id":401,"derived":false},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"geographicalRegion","changeable":true,"resolveProxies":true,"lowerBound":0,"id":402,"derived":false},{"id":403,"eClass":"EGenericType"},{"id":404,"eClass":"EGenericType"},{"ordered":true,"upperBound":1,"unique":true,"name":"cl1","lowerBound":0,"id":405,"many":false,"required":false,"eClass":"EParameter"},{"ordered":true,"upperBound":1,"unique":true,"name":"cl2","lowerBound":0,"id":406,"many":false,"required":false,"eClass":"EParameter"},{"id":407,"eClass":"EGenericType"},{"id":408,"eClass":"EGenericType"},{"id":409,"eClass":"EGenericType"},{"id":410,"eClass":"EGenericType"},{"id":411,"eClass":"EGenericType"},{"id":412,"eClass":"EGenericType"},{"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"name","changeable":true,"lowerBound":1,"iD":false,"id":413,"derived":false},{"container":false,"ordered":true,"upperBound":-1,"defaultValue":null,"volatile":false,"many":true,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"parentRegions","changeable":true,"resolveProxies":true,"lowerBound":0,"id":414,"derived":false},{"ordered":true,"upperBound":-1,"defaultValue":null,"volatile":false,"many":true,"required":false,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"alternativeNames","changeable":true,"lowerBound":0,"iD":false,"id":415,"derived":false},{"id":416,"eClass":"EGenericType"},{"id":417,"eClass":"EGenericType"},{"id":418,"eClass":"EGenericType"},{"id":419,"eClass":"EGenericType"},{"id":420,"eClass":"EGenericType"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"Condition","instanceClass":null,"abstract":true,"id":421,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"MetricCondition","instanceClass":null,"abstract":false,"id":422,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"PropertyCondition","instanceClass":null,"abstract":false,"id":423,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"instanceClassName":null,"name":"ComparisonOperatorType","instanceClass":null,"id":424,"serializable":true,"eClass":"EEnum"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"CompositeMetricInstance","instanceClass":null,"abstract":false,"id":425,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"RawMetricInstance","instanceClass":null,"abstract":false,"id":426,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"MetricFormulaParameter","instanceClass":null,"abstract":false,"id":427,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"MetricFormula","instanceClass":null,"abstract":false,"id":428,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"Metric","instanceClass":null,"abstract":true,"id":429,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"CompositeMetric","instanceClass":null,"abstract":false,"id":430,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"RawMetric","instanceClass":null,"abstract":false,"id":431,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"instanceClassName":null,"name":"MetricFunctionArityType","instanceClass":null,"id":432,"serializable":true,"eClass":"EEnum"},{"instanceTypeName":null,"instanceClassName":null,"name":"MetricFunctionType","instanceClass":null,"id":433,"serializable":true,"eClass":"EEnum"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"MetricObjectBinding","instanceClass":null,"abstract":true,"id":434,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"MetricApplicationBinding","instanceClass":null,"abstract":false,"id":435,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"MetricComponentBinding","instanceClass":null,"abstract":false,"id":436,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"MetricVMBinding","instanceClass":null,"abstract":false,"id":437,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"Property","instanceClass":null,"abstract":false,"id":438,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"instanceClassName":null,"name":"PropertyType","instanceClass":null,"id":439,"serializable":true,"eClass":"EEnum"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"Schedule","instanceClass":null,"abstract":false,"id":440,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"instanceClassName":null,"name":"ScheduleType","instanceClass":null,"id":441,"serializable":true,"eClass":"EEnum"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"Sensor","instanceClass":null,"abstract":false,"id":442,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"Window","instanceClass":null,"abstract":false,"id":443,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"instanceClassName":null,"name":"WindowSizeType","instanceClass":null,"id":444,"serializable":true,"eClass":"EEnum"},{"instanceTypeName":null,"instanceClassName":null,"name":"WindowType","instanceClass":null,"id":445,"serializable":true,"eClass":"EEnum"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"ConditionContext","instanceClass":null,"abstract":true,"id":446,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"instanceClassName":null,"name":"QuantifierType","instanceClass":null,"id":447,"serializable":true,"eClass":"EEnum"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"MetricContext","instanceClass":null,"abstract":true,"id":448,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"CompositeMetricContext","instanceClass":null,"abstract":false,"id":449,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"RawMetricContext","instanceClass":null,"abstract":false,"id":450,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"PropertyContext","instanceClass":null,"abstract":false,"id":451,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"instanceClassName":null,"name":"FunctionPatternType","instanceClass":null,"id":452,"serializable":true,"eClass":"EEnum"},{"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"name","changeable":true,"lowerBound":1,"iD":false,"id":453,"derived":false},{"ordered":true,"upperBound":1,"volatile":false,"many":false,"required":true,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"comparisonOperator","changeable":true,"lowerBound":1,"iD":false,"id":454,"derived":false},{"ordered":true,"upperBound":1,"defaultValue":0.0,"volatile":false,"many":false,"required":true,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"threshold","changeable":true,"lowerBound":1,"iD":false,"id":455,"derived":false},{"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":false,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"validity","changeable":true,"lowerBound":0,"iD":false,"id":456,"derived":false},{"id":457,"eClass":"EGenericType"},{"id":458,"eClass":"EGenericType"},{"id":459,"eClass":"EGenericType"},{"id":460,"eClass":"EGenericType"},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"metricContext","changeable":true,"resolveProxies":true,"lowerBound":1,"id":461,"derived":false},{"id":462,"eClass":"EGenericType"},{"id":463,"eClass":"EGenericType"},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"propertyContext","changeable":true,"resolveProxies":true,"lowerBound":1,"id":464,"derived":false},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"unit","changeable":true,"resolveProxies":true,"lowerBound":0,"id":465,"derived":false},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"timeUnit","changeable":true,"resolveProxies":true,"lowerBound":0,"id":466,"derived":false},{"id":467,"eClass":"EGenericType"},{"id":468,"eClass":"EGenericType"},{"id":469,"eClass":"EGenericType"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"TimeIntervalUnit","instanceClass":null,"abstract":false,"id":470,"interface":false,"eClass":"EClass"},{"id":471,"eClass":"EGenericType"},{"name":"GREATER_THAN","id":472,"value":0,"literal":"GREATER_THAN","eClass":"EEnumLiteral"},{"name":"GREATER_EQUAL_THAN","id":473,"value":1,"literal":"GREATER_EQUAL_THAN","eClass":"EEnumLiteral"},{"name":"LESS_THAN","id":474,"value":2,"literal":"LESS_THAN","eClass":"EEnumLiteral"},{"name":"LESS_EQUAL_THAN","id":475,"value":3,"literal":"LESS_EQUAL_THAN","eClass":"EEnumLiteral"},{"name":"EQUAL","id":476,"value":4,"literal":"EQUAL","eClass":"EEnumLiteral"},{"name":"NOT_EQUAL","id":477,"value":5,"literal":"NOT_EQUAL","eClass":"EEnumLiteral"},{"ordered":true,"upperBound":1,"unique":true,"name":"checkRecursiveness","lowerBound":0,"id":478,"many":false,"required":false,"eClass":"EOperation"},{"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"name","changeable":true,"lowerBound":1,"iD":true,"id":479,"derived":false},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"metric","changeable":true,"resolveProxies":true,"lowerBound":1,"id":480,"derived":false},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"schedule","changeable":true,"resolveProxies":true,"lowerBound":0,"id":481,"derived":false},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"window","changeable":true,"resolveProxies":true,"lowerBound":0,"id":482,"derived":false},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"objectBinding","changeable":true,"resolveProxies":true,"lowerBound":1,"id":483,"derived":false},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"metricContext","changeable":true,"resolveProxies":true,"lowerBound":0,"id":484,"derived":false},{"id":485,"eClass":"EGenericType"},{"ordered":true,"upperBound":1,"unique":true,"name":"m1","lowerBound":0,"id":486,"many":false,"required":false,"eClass":"EParameter"},{"ordered":true,"upperBound":1,"unique":true,"name":"m2","lowerBound":0,"id":487,"many":false,"required":false,"eClass":"EParameter"},{"id":488,"eClass":"EGenericType"},{"id":489,"eClass":"EGenericType"},{"id":490,"eClass":"EGenericType"},{"id":491,"eClass":"EGenericType"},{"id":492,"eClass":"EGenericType"},{"id":493,"eClass":"EGenericType"},{"id":494,"eClass":"EGenericType"},{"id":495,"eClass":"EGenericType"},{"container":false,"ordered":true,"upperBound":-1,"defaultValue":null,"volatile":false,"many":true,"required":true,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"composingMetricInstances","changeable":true,"resolveProxies":true,"lowerBound":1,"id":496,"derived":false},{"id":497,"eClass":"EGenericType"},{"id":498,"eClass":"EGenericType"},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"sensor","changeable":true,"resolveProxies":true,"lowerBound":1,"id":499,"derived":false},{"id":500,"eClass":"EGenericType"},{"id":501,"eClass":"EGenericType"},{"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"name","changeable":true,"lowerBound":1,"iD":false,"id":502,"derived":false},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"value","changeable":true,"resolveProxies":true,"lowerBound":0,"id":503,"derived":false},{"id":504,"eClass":"EGenericType"},{"id":505,"eClass":"EGenericType"},{"ordered":true,"upperBound":1,"unique":true,"name":"containsMetric","lowerBound":0,"id":506,"many":false,"required":false,"eClass":"EOperation"},{"ordered":true,"upperBound":1,"unique":true,"name":"hasMetric","lowerBound":0,"id":507,"many":false,"required":false,"eClass":"EOperation"},{"ordered":true,"upperBound":1,"volatile":false,"many":false,"required":true,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"function","changeable":true,"lowerBound":1,"iD":false,"id":508,"derived":false},{"ordered":true,"upperBound":1,"volatile":false,"many":false,"required":true,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"functionArity","changeable":true,"lowerBound":1,"iD":false,"id":509,"derived":false},{"ordered":true,"upperBound":1,"volatile":false,"many":false,"required":false,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"functionPattern","changeable":true,"lowerBound":0,"iD":false,"id":510,"derived":false},{"container":false,"ordered":true,"upperBound":-1,"defaultValue":null,"volatile":false,"many":true,"required":true,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"parameters","changeable":true,"resolveProxies":true,"lowerBound":1,"id":511,"derived":false},{"id":512,"eClass":"EGenericType"},{"id":513,"eClass":"EGenericType"},{"ordered":true,"upperBound":1,"unique":true,"name":"m","lowerBound":1,"id":514,"many":false,"required":true,"eClass":"EParameter"},{"id":515,"eClass":"EGenericType"},{"id":516,"eClass":"EGenericType"},{"id":517,"eClass":"EGenericType"},{"id":518,"eClass":"EGenericType"},{"id":519,"eClass":"EGenericType"},{"id":520,"eClass":"EGenericType"},{"ordered":true,"upperBound":1,"unique":true,"name":"checkRecursiveness","lowerBound":0,"id":521,"many":false,"required":false,"eClass":"EOperation"},{"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":false,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"description","changeable":true,"lowerBound":0,"iD":false,"id":522,"derived":false},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"valueType","changeable":true,"resolveProxies":true,"lowerBound":0,"id":523,"derived":false},{"ordered":true,"upperBound":1,"defaultValue":0,"volatile":false,"many":false,"required":false,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"valueDirection","changeable":true,"lowerBound":0,"iD":false,"id":524,"derived":false},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"unit","changeable":true,"resolveProxies":true,"lowerBound":1,"id":525,"derived":false},{"ordered":true,"upperBound":1,"volatile":false,"many":false,"required":false,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"layer","changeable":true,"lowerBound":0,"iD":false,"id":526,"derived":false},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"property","changeable":true,"resolveProxies":true,"lowerBound":1,"id":527,"derived":false},{"ordered":true,"upperBound":1,"defaultValue":false,"volatile":false,"many":false,"required":false,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"isVariable","changeable":true,"lowerBound":0,"iD":false,"id":528,"derived":false},{"id":529,"eClass":"EGenericType"},{"id":530,"eClass":"EGenericType"},{"ordered":true,"upperBound":1,"unique":true,"name":"mt1","lowerBound":0,"id":531,"many":false,"required":false,"eClass":"EParameter"},{"ordered":true,"upperBound":1,"unique":true,"name":"mt2","lowerBound":0,"id":532,"many":false,"required":false,"eClass":"EParameter"},{"id":533,"eClass":"EGenericType"},{"id":534,"eClass":"EGenericType"},{"id":535,"eClass":"EGenericType"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"ValueType","instanceClass":null,"abstract":true,"id":536,"interface":false,"eClass":"EClass"},{"id":537,"eClass":"EGenericType"},{"id":538,"eClass":"EGenericType"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"Unit","instanceClass":null,"abstract":true,"id":539,"interface":false,"eClass":"EClass"},{"id":540,"eClass":"EGenericType"},{"id":541,"eClass":"EGenericType"},{"id":542,"eClass":"EGenericType"},{"id":543,"eClass":"EGenericType"},{"ordered":true,"upperBound":1,"unique":true,"name":"greaterEqualThanLayer","lowerBound":1,"id":544,"many":false,"required":true,"eClass":"EOperation"},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"formula","changeable":true,"resolveProxies":true,"lowerBound":1,"id":545,"derived":false},{"id":546,"eClass":"EGenericType"},{"id":547,"eClass":"EGenericType"},{"ordered":true,"upperBound":1,"unique":true,"name":"l1","lowerBound":1,"id":548,"many":false,"required":true,"eClass":"EParameter"},{"ordered":true,"upperBound":1,"unique":true,"name":"l2","lowerBound":1,"id":549,"many":false,"required":true,"eClass":"EParameter"},{"id":550,"eClass":"EGenericType"},{"id":551,"eClass":"EGenericType"},{"id":552,"eClass":"EGenericType"},{"id":553,"eClass":"EGenericType"},{"name":"UNARY","id":554,"value":0,"literal":"UNARY","eClass":"EEnumLiteral"},{"name":"BINARY","id":555,"value":1,"literal":"BINARY","eClass":"EEnumLiteral"},{"name":"N_ARY","id":556,"value":2,"literal":"N_ARY","eClass":"EEnumLiteral"},{"name":"PLUS","id":557,"value":0,"literal":"PLUS","eClass":"EEnumLiteral"},{"name":"MINUS","id":558,"value":1,"literal":"MINUS","eClass":"EEnumLiteral"},{"name":"TIMES","id":559,"value":2,"literal":"TIMES","eClass":"EEnumLiteral"},{"name":"DIV","id":560,"value":3,"literal":"DIV","eClass":"EEnumLiteral"},{"name":"MODULO","id":561,"value":4,"literal":"MODULO","eClass":"EEnumLiteral"},{"name":"MEAN","id":562,"value":5,"literal":"MEAN","eClass":"EEnumLiteral"},{"name":"STD","id":563,"value":6,"literal":"STD","eClass":"EEnumLiteral"},{"name":"COUNT","id":564,"value":7,"literal":"COUNT","eClass":"EEnumLiteral"},{"name":"MIN","id":565,"value":8,"literal":"MIN","eClass":"EEnumLiteral"},{"name":"MAX","id":566,"value":9,"literal":"MAX","eClass":"EEnumLiteral"},{"name":"PERCENTILE","id":567,"value":10,"literal":"PERCENTILE","eClass":"EEnumLiteral"},{"name":"DERIVATIVE","id":568,"value":11,"literal":"DERIVATIVE","eClass":"EEnumLiteral"},{"name":"MODE","id":569,"value":12,"literal":"MODE","eClass":"EEnumLiteral"},{"name":"MEDIAN","id":570,"value":13,"literal":"MEDIAN","eClass":"EEnumLiteral"},{"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"name","changeable":true,"lowerBound":1,"iD":false,"id":571,"derived":false},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"executionContext","changeable":true,"resolveProxies":true,"lowerBound":1,"id":572,"derived":false},{"id":573,"eClass":"EGenericType"},{"id":574,"eClass":"EGenericType"},{"id":575,"eClass":"EGenericType"},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"vmInstance","changeable":true,"resolveProxies":true,"lowerBound":0,"id":576,"derived":false},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"componentInstance","changeable":true,"resolveProxies":true,"lowerBound":1,"id":577,"derived":false},{"id":578,"eClass":"EGenericType"},{"id":579,"eClass":"EGenericType"},{"id":580,"eClass":"EGenericType"},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"vmInstance","changeable":true,"resolveProxies":true,"lowerBound":1,"id":581,"derived":false},{"id":582,"eClass":"EGenericType"},{"id":583,"eClass":"EGenericType"},{"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"name","changeable":true,"lowerBound":1,"iD":false,"id":584,"derived":false},{"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":false,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"description","changeable":true,"lowerBound":0,"iD":false,"id":585,"derived":false},{"ordered":true,"upperBound":1,"volatile":false,"many":false,"required":true,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"type","changeable":true,"lowerBound":1,"iD":false,"id":586,"derived":false},{"container":false,"ordered":true,"upperBound":-1,"defaultValue":null,"volatile":false,"many":true,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"subProperties","changeable":true,"resolveProxies":true,"lowerBound":0,"id":587,"derived":false},{"container":false,"ordered":true,"upperBound":-1,"defaultValue":null,"volatile":false,"many":true,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"sensors","changeable":true,"resolveProxies":true,"lowerBound":0,"id":588,"derived":false},{"id":589,"eClass":"EGenericType"},{"id":590,"eClass":"EGenericType"},{"id":591,"eClass":"EGenericType"},{"id":592,"eClass":"EGenericType"},{"id":593,"eClass":"EGenericType"},{"name":"ABSTRACT","id":594,"value":0,"literal":"ABSTRACT","eClass":"EEnumLiteral"},{"name":"MEASURABLE","id":595,"value":1,"literal":"MEASURABLE","eClass":"EEnumLiteral"},{"ordered":true,"upperBound":1,"unique":true,"name":"checkStartEndDates","lowerBound":0,"id":596,"many":false,"required":false,"eClass":"EOperation"},{"ordered":true,"upperBound":1,"unique":true,"name":"checkIntervalRepetitions","lowerBound":0,"id":597,"many":false,"required":false,"eClass":"EOperation"},{"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"name","changeable":true,"lowerBound":1,"iD":false,"id":598,"derived":false},{"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":false,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"start","changeable":true,"lowerBound":0,"iD":false,"id":599,"derived":false},{"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":false,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"end","changeable":true,"lowerBound":0,"iD":false,"id":600,"derived":false},{"ordered":true,"upperBound":1,"volatile":false,"many":false,"required":true,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"type","changeable":true,"lowerBound":1,"iD":false,"id":601,"derived":false},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"unit","changeable":true,"resolveProxies":true,"lowerBound":1,"id":602,"derived":false},{"ordered":true,"upperBound":1,"defaultValue":0,"volatile":false,"many":false,"required":false,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"repetitions","changeable":true,"lowerBound":0,"iD":false,"id":603,"derived":false},{"ordered":true,"upperBound":1,"defaultValue":0,"volatile":false,"many":false,"required":true,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"interval","changeable":true,"lowerBound":1,"iD":false,"id":604,"derived":false},{"id":605,"eClass":"EGenericType"},{"ordered":true,"upperBound":1,"unique":true,"name":"this","lowerBound":1,"id":606,"many":false,"required":true,"eClass":"EParameter"},{"id":607,"eClass":"EGenericType"},{"id":608,"eClass":"EGenericType"},{"ordered":true,"upperBound":1,"unique":true,"name":"s","lowerBound":1,"id":609,"many":false,"required":true,"eClass":"EParameter"},{"id":610,"eClass":"EGenericType"},{"id":611,"eClass":"EGenericType"},{"id":612,"eClass":"EGenericType"},{"id":613,"eClass":"EGenericType"},{"id":614,"eClass":"EGenericType"},{"id":615,"eClass":"EGenericType"},{"id":616,"eClass":"EGenericType"},{"id":617,"eClass":"EGenericType"},{"name":"FIXED_RATE","id":618,"value":0,"literal":"FIXED_RATE","eClass":"EEnumLiteral"},{"name":"FIXED_DELAY","id":619,"value":1,"literal":"FIXED_DELAY","eClass":"EEnumLiteral"},{"name":"SINGLE_EVENT","id":620,"value":2,"literal":"SINGLE_EVENT","eClass":"EEnumLiteral"},{"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"name","changeable":true,"lowerBound":1,"iD":false,"id":621,"derived":false},{"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":false,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"configuration","changeable":true,"lowerBound":0,"iD":false,"id":622,"derived":false},{"ordered":true,"upperBound":1,"defaultValue":false,"volatile":false,"many":false,"required":false,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"isPush","changeable":true,"lowerBound":0,"iD":false,"id":623,"derived":false},{"id":624,"eClass":"EGenericType"},{"id":625,"eClass":"EGenericType"},{"id":626,"eClass":"EGenericType"},{"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"name","changeable":true,"lowerBound":1,"iD":false,"id":627,"derived":false},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"unit","changeable":true,"resolveProxies":true,"lowerBound":0,"id":628,"derived":false},{"ordered":true,"upperBound":1,"volatile":false,"many":false,"required":true,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"windowType","changeable":true,"lowerBound":1,"iD":false,"id":629,"derived":false},{"ordered":true,"upperBound":1,"volatile":false,"many":false,"required":true,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"sizeType","changeable":true,"lowerBound":1,"iD":false,"id":630,"derived":false},{"ordered":true,"upperBound":1,"defaultValue":0,"volatile":false,"many":false,"required":false,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"measurementSize","changeable":true,"lowerBound":0,"iD":false,"id":631,"derived":false},{"ordered":true,"upperBound":1,"defaultValue":0,"volatile":false,"many":false,"required":false,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"timeSize","changeable":true,"lowerBound":0,"iD":false,"id":632,"derived":false},{"id":633,"eClass":"EGenericType"},{"id":634,"eClass":"EGenericType"},{"id":635,"eClass":"EGenericType"},{"id":636,"eClass":"EGenericType"},{"id":637,"eClass":"EGenericType"},{"id":638,"eClass":"EGenericType"},{"name":"MEASUREMENTS_ONLY","id":639,"value":0,"literal":"MEASUREMENTS_ONLY","eClass":"EEnumLiteral"},{"name":"TIME_ONLY","id":640,"value":1,"literal":"TIME_ONLY","eClass":"EEnumLiteral"},{"name":"FIRST_MATCH","id":641,"value":2,"literal":"FIRST_MATCH","eClass":"EEnumLiteral"},{"name":"BOTH_MATCH","id":642,"value":3,"literal":"BOTH_MATCH","eClass":"EEnumLiteral"},{"name":"FIXED","id":643,"value":0,"literal":"FIXED","eClass":"EEnumLiteral"},{"name":"SLIDING","id":644,"value":1,"literal":"SLIDING","eClass":"EEnumLiteral"},{"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"name","changeable":true,"lowerBound":1,"iD":false,"id":645,"derived":false},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"component","changeable":true,"resolveProxies":true,"lowerBound":0,"id":646,"derived":false},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"application","changeable":true,"resolveProxies":true,"lowerBound":0,"id":647,"derived":false},{"ordered":true,"upperBound":1,"volatile":false,"many":false,"required":true,"eClass":"EAttribute","defaultValueLiteral":"ANY","unsettable":false,"transient":false,"unique":true,"name":"quantifier","changeable":true,"lowerBound":1,"iD":false,"id":648,"derived":false},{"ordered":true,"upperBound":1,"defaultValue":0.0,"volatile":false,"many":false,"required":false,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"minQuantity","changeable":true,"lowerBound":0,"iD":false,"id":649,"derived":false},{"ordered":true,"upperBound":1,"defaultValue":0.0,"volatile":false,"many":false,"required":false,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"maxQuantity","changeable":true,"lowerBound":0,"iD":false,"id":650,"derived":false},{"ordered":true,"upperBound":1,"defaultValue":false,"volatile":false,"many":false,"required":false,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"isRelative","changeable":true,"lowerBound":0,"iD":false,"id":651,"derived":false},{"id":652,"eClass":"EGenericType"},{"id":653,"eClass":"EGenericType"},{"id":654,"eClass":"EGenericType"},{"id":655,"eClass":"EGenericType"},{"id":656,"eClass":"EGenericType"},{"id":657,"eClass":"EGenericType"},{"id":658,"eClass":"EGenericType"},{"name":"ANY","id":659,"value":0,"literal":"ANY","eClass":"EEnumLiteral"},{"name":"ALL","id":660,"value":1,"literal":"ALL","eClass":"EEnumLiteral"},{"name":"SOME","id":661,"value":2,"literal":"SOME","eClass":"EEnumLiteral"},{"container":false,"ordered":true,"upperBound":-1,"defaultValue":null,"volatile":false,"many":true,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"contexts","changeable":true,"resolveProxies":true,"lowerBound":0,"id":662,"derived":false},{"container":false,"ordered":false,"upperBound":-1,"defaultValue":null,"volatile":false,"many":true,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"metrics","changeable":true,"resolveProxies":true,"lowerBound":0,"id":663,"derived":false},{"container":false,"ordered":false,"upperBound":-1,"defaultValue":null,"volatile":false,"many":true,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"metricInstances","changeable":true,"resolveProxies":true,"lowerBound":0,"id":664,"derived":false},{"container":false,"ordered":false,"upperBound":-1,"defaultValue":null,"volatile":false,"many":true,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"conditions","changeable":true,"resolveProxies":true,"lowerBound":0,"id":665,"derived":false},{"container":false,"ordered":false,"upperBound":-1,"defaultValue":null,"volatile":false,"many":true,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"properties","changeable":true,"resolveProxies":true,"lowerBound":0,"id":666,"derived":false},{"container":false,"ordered":false,"upperBound":-1,"defaultValue":null,"volatile":false,"many":true,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"bindings","changeable":true,"resolveProxies":true,"lowerBound":0,"id":667,"derived":false},{"container":false,"ordered":false,"upperBound":-1,"defaultValue":null,"volatile":false,"many":true,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"windows","changeable":true,"resolveProxies":true,"lowerBound":0,"id":668,"derived":false},{"container":false,"ordered":false,"upperBound":-1,"defaultValue":null,"volatile":false,"many":true,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"schedules","changeable":true,"resolveProxies":true,"lowerBound":0,"id":669,"derived":false},{"container":false,"ordered":false,"upperBound":-1,"defaultValue":null,"volatile":false,"many":true,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"parameters","changeable":true,"resolveProxies":true,"lowerBound":0,"id":670,"derived":false},{"container":false,"ordered":false,"upperBound":-1,"defaultValue":null,"volatile":false,"many":true,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"sensors","changeable":true,"resolveProxies":true,"lowerBound":0,"id":671,"derived":false},{"container":false,"ordered":false,"upperBound":-1,"defaultValue":null,"volatile":false,"many":true,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"units","changeable":true,"resolveProxies":true,"lowerBound":0,"id":672,"derived":false},{"id":673,"eClass":"EGenericType"},{"id":674,"eClass":"EGenericType"},{"id":675,"eClass":"EGenericType"},{"id":676,"eClass":"EGenericType"},{"id":677,"eClass":"EGenericType"},{"id":678,"eClass":"EGenericType"},{"id":679,"eClass":"EGenericType"},{"id":680,"eClass":"EGenericType"},{"id":681,"eClass":"EGenericType"},{"id":682,"eClass":"EGenericType"},{"id":683,"eClass":"EGenericType"},{"id":684,"eClass":"EGenericType"},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"metric","changeable":true,"resolveProxies":true,"lowerBound":1,"id":685,"derived":false},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"window","changeable":true,"resolveProxies":true,"lowerBound":0,"id":686,"derived":false},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"schedule","changeable":true,"resolveProxies":true,"lowerBound":0,"id":687,"derived":false},{"id":688,"eClass":"EGenericType"},{"id":689,"eClass":"EGenericType"},{"id":690,"eClass":"EGenericType"},{"id":691,"eClass":"EGenericType"},{"container":false,"ordered":true,"upperBound":-1,"defaultValue":null,"volatile":false,"many":true,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"composingMetricContexts","changeable":true,"resolveProxies":true,"lowerBound":0,"id":692,"derived":false},{"id":693,"eClass":"EGenericType"},{"id":694,"eClass":"EGenericType"},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"sensor","changeable":true,"resolveProxies":true,"lowerBound":1,"id":695,"derived":false},{"id":696,"eClass":"EGenericType"},{"id":697,"eClass":"EGenericType"},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"property","changeable":true,"resolveProxies":true,"lowerBound":1,"id":698,"derived":false},{"id":699,"eClass":"EGenericType"},{"id":700,"eClass":"EGenericType"},{"name":"MAP","id":701,"value":0,"literal":"MAP","eClass":"EEnumLiteral"},{"name":"REDUCE","id":702,"value":1,"literal":"REDUCE","eClass":"EEnumLiteral"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"Credentials","instanceClass":null,"abstract":true,"id":703,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"CloudCredentials","instanceClass":null,"abstract":false,"id":704,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"DataCenter","instanceClass":null,"abstract":false,"id":705,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"Organisation","instanceClass":null,"abstract":false,"id":706,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"CloudProvider","instanceClass":null,"abstract":false,"id":707,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"User","instanceClass":null,"abstract":false,"id":708,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"ExternalIdentifier","instanceClass":null,"abstract":false,"id":709,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"Permission","instanceClass":null,"abstract":false,"id":710,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"instanceClassName":null,"name":"SecurityLevel","instanceClass":null,"id":711,"serializable":true,"eClass":"EEnum"},{"instanceTypeName":null,"instanceClassName":null,"name":"ResourcePattern","instanceClass":null,"id":712,"serializable":true,"eClass":"EEnum"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"ResourceFilter","instanceClass":null,"abstract":true,"id":713,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"InformationResourceFilter","instanceClass":null,"abstract":false,"id":714,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"ServiceResourceFilter","instanceClass":null,"abstract":false,"id":715,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"Role","instanceClass":null,"abstract":false,"id":716,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"RoleAssignment","instanceClass":null,"abstract":false,"id":717,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"UserGroup","instanceClass":null,"abstract":false,"id":718,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"PaaSageCredentials","instanceClass":null,"abstract":false,"id":719,"interface":false,"eClass":"EClass"},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"organisation","changeable":true,"resolveProxies":true,"lowerBound":0,"id":720,"derived":false},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"provider","changeable":true,"resolveProxies":true,"lowerBound":0,"id":721,"derived":false},{"container":false,"ordered":false,"upperBound":-1,"defaultValue":null,"volatile":false,"many":true,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"externalIdentifiers","changeable":true,"resolveProxies":true,"lowerBound":0,"id":722,"derived":false},{"container":false,"ordered":false,"upperBound":-1,"defaultValue":null,"volatile":false,"many":true,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"users","changeable":true,"resolveProxies":true,"lowerBound":0,"id":723,"derived":false},{"container":false,"ordered":false,"upperBound":-1,"defaultValue":null,"volatile":false,"many":true,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"userGroups","changeable":true,"resolveProxies":true,"lowerBound":0,"id":724,"derived":false},{"container":false,"ordered":false,"upperBound":-1,"defaultValue":null,"volatile":false,"many":true,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"dataCentres","changeable":true,"resolveProxies":true,"lowerBound":0,"id":725,"derived":false},{"container":false,"ordered":false,"upperBound":-1,"defaultValue":null,"volatile":false,"many":true,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"roles","changeable":true,"resolveProxies":true,"lowerBound":0,"id":726,"derived":false},{"container":false,"ordered":false,"upperBound":-1,"defaultValue":null,"volatile":false,"many":true,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"roleAssigments","changeable":true,"resolveProxies":true,"lowerBound":0,"id":727,"derived":false},{"container":false,"ordered":false,"upperBound":-1,"defaultValue":null,"volatile":false,"many":true,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"permissions","changeable":true,"resolveProxies":true,"lowerBound":0,"id":728,"derived":false},{"ordered":true,"upperBound":1,"volatile":false,"many":false,"required":true,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"securityLevel","changeable":true,"lowerBound":1,"iD":false,"id":729,"derived":false},{"container":false,"ordered":true,"upperBound":-1,"defaultValue":null,"volatile":false,"many":true,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"resourceFilters","changeable":true,"resolveProxies":true,"lowerBound":0,"id":730,"derived":false},{"id":731,"eClass":"EGenericType"},{"id":732,"eClass":"EGenericType"},{"id":733,"eClass":"EGenericType"},{"id":734,"eClass":"EGenericType"},{"id":735,"eClass":"EGenericType"},{"id":736,"eClass":"EGenericType"},{"id":737,"eClass":"EGenericType"},{"id":738,"eClass":"EGenericType"},{"id":739,"eClass":"EGenericType"},{"id":740,"eClass":"EGenericType"},{"id":741,"eClass":"EGenericType"},{"id":742,"eClass":"EGenericType"},{"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"name","changeable":true,"lowerBound":1,"iD":false,"id":743,"derived":false},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"cloudProvider","changeable":true,"resolveProxies":true,"lowerBound":1,"id":744,"derived":false},{"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":false,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"securityGroup","changeable":true,"lowerBound":0,"iD":false,"id":745,"derived":false},{"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":false,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"publicSSHKey","changeable":true,"lowerBound":0,"iD":false,"id":746,"derived":false},{"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":false,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"privateSSHKey","changeable":true,"lowerBound":0,"iD":false,"id":747,"derived":false},{"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":false,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"username","changeable":true,"lowerBound":0,"iD":false,"id":748,"derived":false},{"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":false,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"password","changeable":true,"lowerBound":0,"iD":false,"id":749,"derived":false},{"id":750,"eClass":"EGenericType"},{"id":751,"eClass":"EGenericType"},{"id":752,"eClass":"EGenericType"},{"id":753,"eClass":"EGenericType"},{"id":754,"eClass":"EGenericType"},{"id":755,"eClass":"EGenericType"},{"id":756,"eClass":"EGenericType"},{"id":757,"eClass":"EGenericType"},{"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"name","changeable":true,"lowerBound":1,"iD":false,"id":758,"derived":false},{"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"codeName","changeable":true,"lowerBound":1,"iD":false,"id":759,"derived":false},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"location","changeable":true,"resolveProxies":true,"lowerBound":1,"id":760,"derived":false},{"id":761,"eClass":"EGenericType"},{"id":762,"eClass":"EGenericType"},{"id":763,"eClass":"EGenericType"},{"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"name","changeable":true,"lowerBound":1,"iD":false,"id":764,"derived":false},{"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":false,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"www","changeable":true,"lowerBound":0,"iD":false,"id":765,"derived":false},{"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":false,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"postalAddress","changeable":true,"lowerBound":0,"iD":false,"id":766,"derived":false},{"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"email","changeable":true,"lowerBound":1,"iD":false,"id":767,"derived":false},{"id":768,"eClass":"EGenericType"},{"id":769,"eClass":"EGenericType"},{"id":770,"eClass":"EGenericType"},{"id":771,"eClass":"EGenericType"},{"id":772,"eClass":"EGenericType"},{"ordered":true,"upperBound":1,"defaultValue":false,"volatile":false,"many":false,"required":false,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"public","changeable":true,"lowerBound":0,"iD":false,"id":773,"derived":false},{"ordered":true,"upperBound":1,"defaultValue":false,"volatile":false,"many":false,"required":false,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"SaaS","changeable":true,"lowerBound":0,"iD":false,"id":774,"derived":false},{"ordered":true,"upperBound":1,"defaultValue":false,"volatile":false,"many":false,"required":false,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"PaaS","changeable":true,"lowerBound":0,"iD":false,"id":775,"derived":false},{"ordered":true,"upperBound":1,"defaultValue":false,"volatile":false,"many":false,"required":false,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"IaaS","changeable":true,"lowerBound":0,"iD":false,"id":776,"derived":false},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"providerModel","changeable":true,"resolveProxies":true,"lowerBound":0,"id":777,"derived":false},{"container":false,"ordered":false,"upperBound":-1,"defaultValue":null,"volatile":false,"many":true,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"securityCapability","changeable":true,"resolveProxies":true,"lowerBound":0,"id":778,"derived":false},{"id":779,"eClass":"EGenericType"},{"id":780,"eClass":"EGenericType"},{"id":781,"eClass":"EGenericType"},{"id":782,"eClass":"EGenericType"},{"id":783,"eClass":"EGenericType"},{"id":784,"eClass":"EGenericType"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"SecurityCapability","instanceClass":null,"abstract":false,"id":785,"interface":false,"eClass":"EClass"},{"id":786,"eClass":"EGenericType"},{"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"name","changeable":true,"lowerBound":1,"iD":false,"id":787,"derived":false},{"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"email","changeable":true,"lowerBound":1,"iD":false,"id":788,"derived":false},{"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"firstName","changeable":true,"lowerBound":1,"iD":false,"id":789,"derived":false},{"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"lastName","changeable":true,"lowerBound":1,"iD":false,"id":790,"derived":false},{"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":false,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"www","changeable":true,"lowerBound":0,"iD":false,"id":791,"derived":false},{"container":false,"ordered":true,"upperBound":-1,"defaultValue":null,"volatile":false,"many":true,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"externalIdentifiers","changeable":true,"resolveProxies":true,"lowerBound":0,"id":792,"derived":false},{"container":false,"ordered":true,"upperBound":-1,"defaultValue":null,"volatile":false,"many":true,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"requirementModels","changeable":true,"resolveProxies":true,"lowerBound":0,"id":793,"derived":false},{"container":false,"ordered":true,"upperBound":-1,"defaultValue":null,"volatile":false,"many":true,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"cloudCredentials","changeable":true,"resolveProxies":true,"lowerBound":0,"id":794,"derived":false},{"container":false,"ordered":true,"upperBound":-1,"defaultValue":null,"volatile":false,"many":true,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"deploymentModels","changeable":true,"resolveProxies":true,"lowerBound":0,"id":795,"derived":false},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"paasageCredentials","changeable":true,"resolveProxies":true,"lowerBound":1,"id":796,"derived":false},{"id":797,"eClass":"EGenericType"},{"id":798,"eClass":"EGenericType"},{"id":799,"eClass":"EGenericType"},{"id":800,"eClass":"EGenericType"},{"id":801,"eClass":"EGenericType"},{"id":802,"eClass":"EGenericType"},{"id":803,"eClass":"EGenericType"},{"id":804,"eClass":"EGenericType"},{"id":805,"eClass":"EGenericType"},{"id":806,"eClass":"EGenericType"},{"id":807,"eClass":"EGenericType"},{"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"identifier","changeable":true,"lowerBound":1,"iD":false,"id":808,"derived":false},{"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":false,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"description","changeable":true,"lowerBound":0,"iD":false,"id":809,"derived":false},{"id":810,"eClass":"EGenericType"},{"id":811,"eClass":"EGenericType"},{"ordered":true,"upperBound":1,"unique":true,"name":"checkStartEndDates","lowerBound":0,"id":812,"many":false,"required":false,"eClass":"EOperation"},{"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"name","changeable":true,"lowerBound":1,"iD":false,"id":813,"derived":false},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"role","changeable":true,"resolveProxies":true,"lowerBound":1,"id":814,"derived":false},{"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"startTime","changeable":true,"lowerBound":1,"iD":false,"id":815,"derived":false},{"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":false,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"endTime","changeable":true,"lowerBound":0,"iD":false,"id":816,"derived":false},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"resourceFilter","changeable":true,"resolveProxies":true,"lowerBound":1,"id":817,"derived":false},{"ordered":true,"upperBound":1,"volatile":false,"many":false,"required":true,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"action","changeable":true,"lowerBound":1,"iD":false,"id":818,"derived":false},{"id":819,"eClass":"EGenericType"},{"ordered":true,"upperBound":1,"unique":true,"name":"this","lowerBound":1,"id":820,"many":false,"required":true,"eClass":"EParameter"},{"id":821,"eClass":"EGenericType"},{"id":822,"eClass":"EGenericType"},{"id":823,"eClass":"EGenericType"},{"id":824,"eClass":"EGenericType"},{"id":825,"eClass":"EGenericType"},{"id":826,"eClass":"EGenericType"},{"id":827,"eClass":"EGenericType"},{"name":"LOW","id":828,"value":0,"literal":"LOW","eClass":"EEnumLiteral"},{"name":"MEDIUM","id":829,"value":1,"literal":"MEDIUM","eClass":"EEnumLiteral"},{"name":"HIGH","id":830,"value":2,"literal":"HIGH","eClass":"EEnumLiteral"},{"name":"EXACT","id":831,"value":0,"literal":"EXACT","eClass":"EEnumLiteral"},{"name":"TREE","id":832,"value":1,"literal":"TREE","eClass":"EEnumLiteral"},{"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"name","changeable":true,"lowerBound":1,"iD":false,"id":833,"derived":false},{"ordered":true,"upperBound":1,"volatile":false,"many":false,"required":true,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"resourcePattern","changeable":true,"lowerBound":1,"iD":false,"id":834,"derived":false},{"id":835,"eClass":"EGenericType"},{"id":836,"eClass":"EGenericType"},{"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":false,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"informationResourcePath","changeable":true,"lowerBound":0,"iD":false,"id":837,"derived":false},{"ordered":true,"upperBound":1,"defaultValue":false,"volatile":false,"many":false,"required":true,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"everyInformationResource","changeable":true,"lowerBound":1,"iD":false,"id":838,"derived":false},{"id":839,"eClass":"EGenericType"},{"id":840,"eClass":"EGenericType"},{"id":841,"eClass":"EGenericType"},{"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":false,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"serviceURL","changeable":true,"lowerBound":0,"iD":false,"id":842,"derived":false},{"ordered":true,"upperBound":1,"defaultValue":false,"volatile":false,"many":false,"required":true,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"everyService","changeable":true,"lowerBound":1,"iD":false,"id":843,"derived":false},{"id":844,"eClass":"EGenericType"},{"id":845,"eClass":"EGenericType"},{"id":846,"eClass":"EGenericType"},{"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"name","changeable":true,"lowerBound":1,"iD":false,"id":847,"derived":false},{"id":848,"eClass":"EGenericType"},{"ordered":true,"upperBound":1,"unique":true,"name":"checkAssignedOnDates","lowerBound":0,"id":849,"many":false,"required":false,"eClass":"EOperation"},{"ordered":true,"upperBound":1,"unique":true,"name":"checkStartEndDates","lowerBound":0,"id":850,"many":false,"required":false,"eClass":"EOperation"},{"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"name","changeable":true,"lowerBound":1,"iD":false,"id":851,"derived":false},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"user","changeable":true,"resolveProxies":true,"lowerBound":0,"id":852,"derived":false},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"role","changeable":true,"resolveProxies":true,"lowerBound":1,"id":853,"derived":false},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"userGroup","changeable":true,"resolveProxies":true,"lowerBound":0,"id":854,"derived":false},{"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":false,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"startTime","changeable":true,"lowerBound":0,"iD":false,"id":855,"derived":false},{"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":false,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"endTime","changeable":true,"lowerBound":0,"iD":false,"id":856,"derived":false},{"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"assignmentTime","changeable":true,"lowerBound":1,"iD":false,"id":857,"derived":false},{"id":858,"eClass":"EGenericType"},{"ordered":true,"upperBound":1,"unique":true,"name":"this","lowerBound":1,"id":859,"many":false,"required":true,"eClass":"EParameter"},{"id":860,"eClass":"EGenericType"},{"id":861,"eClass":"EGenericType"},{"ordered":true,"upperBound":1,"unique":true,"name":"this","lowerBound":1,"id":862,"many":false,"required":true,"eClass":"EParameter"},{"id":863,"eClass":"EGenericType"},{"id":864,"eClass":"EGenericType"},{"id":865,"eClass":"EGenericType"},{"id":866,"eClass":"EGenericType"},{"id":867,"eClass":"EGenericType"},{"id":868,"eClass":"EGenericType"},{"id":869,"eClass":"EGenericType"},{"id":870,"eClass":"EGenericType"},{"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"name","changeable":true,"lowerBound":1,"iD":false,"id":871,"derived":false},{"container":false,"ordered":true,"upperBound":-1,"defaultValue":null,"volatile":false,"many":true,"required":true,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"users","changeable":true,"resolveProxies":true,"lowerBound":1,"id":872,"derived":false},{"id":873,"eClass":"EGenericType"},{"id":874,"eClass":"EGenericType"},{"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"password","changeable":true,"lowerBound":1,"iD":false,"id":875,"derived":false},{"id":876,"eClass":"EGenericType"},{"id":877,"eClass":"EGenericType"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"AttributeConstraint","instanceClass":null,"abstract":false,"id":878,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"Cardinality","instanceClass":null,"abstract":true,"id":879,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"FeatCardinality","instanceClass":null,"abstract":false,"id":880,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"GroupCardinality","instanceClass":null,"abstract":false,"id":881,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"Clone","instanceClass":null,"abstract":false,"id":882,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"Constraint","instanceClass":null,"abstract":true,"id":883,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"Excludes","instanceClass":null,"abstract":false,"id":884,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"Implies","instanceClass":null,"abstract":false,"id":885,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"Requires","instanceClass":null,"abstract":false,"id":886,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"Functional","instanceClass":null,"abstract":false,"id":887,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"Feature","instanceClass":null,"abstract":false,"id":888,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"Alternative","instanceClass":null,"abstract":false,"id":889,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"Exclusive","instanceClass":null,"abstract":false,"id":890,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"instanceClassName":null,"name":"Operator","instanceClass":null,"id":891,"serializable":true,"eClass":"EEnum"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"Scope","instanceClass":null,"abstract":true,"id":892,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"Instance","instanceClass":null,"abstract":false,"id":893,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"Product","instanceClass":null,"abstract":false,"id":894,"interface":false,"eClass":"EClass"},{"container":false,"ordered":true,"upperBound":-1,"defaultValue":null,"volatile":false,"many":true,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"constraints","changeable":true,"resolveProxies":true,"lowerBound":0,"id":895,"derived":false},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"rootFeature","changeable":true,"resolveProxies":true,"lowerBound":1,"id":896,"derived":false},{"id":897,"eClass":"EGenericType"},{"id":898,"eClass":"EGenericType"},{"id":899,"eClass":"EGenericType"},{"ordered":true,"upperBound":1,"unique":true,"name":"checkValue","lowerBound":0,"id":900,"many":false,"required":false,"eClass":"EOperation"},{"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"name","changeable":true,"lowerBound":1,"iD":false,"id":901,"derived":false},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"value","changeable":true,"resolveProxies":true,"lowerBound":0,"id":902,"derived":false},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"valueType","changeable":true,"resolveProxies":true,"lowerBound":0,"id":903,"derived":false},{"ordered":true,"upperBound":1,"volatile":false,"many":false,"required":false,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"unitType","changeable":true,"lowerBound":0,"iD":false,"id":904,"derived":false},{"id":905,"eClass":"EGenericType"},{"ordered":true,"upperBound":1,"unique":true,"name":"v","lowerBound":1,"id":906,"many":false,"required":true,"eClass":"EParameter"},{"ordered":true,"upperBound":1,"unique":true,"name":"diff","lowerBound":1,"id":907,"many":false,"required":true,"eClass":"EParameter"},{"id":908,"eClass":"EGenericType"},{"id":909,"eClass":"EGenericType"},{"id":910,"eClass":"EGenericType"},{"id":911,"eClass":"EGenericType"},{"id":912,"eClass":"EGenericType"},{"instanceTypeName":null,"instanceClassName":null,"name":"UnitType","instanceClass":null,"id":913,"serializable":true,"eClass":"EEnum"},{"id":914,"eClass":"EGenericType"},{"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":false,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"name","changeable":true,"lowerBound":0,"iD":false,"id":915,"derived":false},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"from","changeable":true,"resolveProxies":true,"lowerBound":1,"id":916,"derived":false},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"to","changeable":true,"resolveProxies":true,"lowerBound":1,"id":917,"derived":false},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"fromValue","changeable":true,"resolveProxies":true,"lowerBound":1,"id":918,"derived":false},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"toValue","changeable":true,"resolveProxies":true,"lowerBound":1,"id":919,"derived":false},{"id":920,"eClass":"EGenericType"},{"id":921,"eClass":"EGenericType"},{"id":922,"eClass":"EGenericType"},{"id":923,"eClass":"EGenericType"},{"id":924,"eClass":"EGenericType"},{"ordered":true,"upperBound":1,"defaultValue":0,"volatile":false,"many":false,"required":true,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"cardinalityMin","changeable":true,"lowerBound":1,"iD":false,"id":925,"derived":false},{"ordered":true,"upperBound":1,"defaultValue":0,"volatile":false,"many":false,"required":true,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"cardinalityMax","changeable":true,"lowerBound":1,"iD":false,"id":926,"derived":false},{"id":927,"eClass":"EGenericType"},{"id":928,"eClass":"EGenericType"},{"ordered":true,"upperBound":1,"defaultValue":0,"volatile":false,"many":false,"required":true,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"value","changeable":true,"lowerBound":1,"iD":false,"id":929,"derived":false},{"id":930,"eClass":"EGenericType"},{"id":931,"eClass":"EGenericType"},{"id":932,"eClass":"EGenericType"},{"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"name","changeable":true,"lowerBound":1,"iD":false,"id":933,"derived":false},{"container":false,"ordered":true,"upperBound":-1,"defaultValue":null,"volatile":false,"many":true,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"subClones","changeable":true,"resolveProxies":true,"lowerBound":0,"id":934,"derived":false},{"id":935,"eClass":"EGenericType"},{"id":936,"eClass":"EGenericType"},{"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"name","changeable":true,"lowerBound":1,"iD":false,"id":937,"derived":false},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"from","changeable":true,"resolveProxies":true,"lowerBound":1,"id":938,"derived":false},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"to","changeable":true,"resolveProxies":true,"lowerBound":1,"id":939,"derived":false},{"container":false,"ordered":true,"upperBound":-1,"defaultValue":null,"volatile":false,"many":true,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"attributeConstraints","changeable":true,"resolveProxies":true,"lowerBound":0,"id":940,"derived":false},{"id":941,"eClass":"EGenericType"},{"id":942,"eClass":"EGenericType"},{"id":943,"eClass":"EGenericType"},{"id":944,"eClass":"EGenericType"},{"id":945,"eClass":"EGenericType"},{"id":946,"eClass":"EGenericType"},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"scopeFrom","changeable":true,"resolveProxies":true,"lowerBound":0,"id":947,"derived":false},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"scopeTo","changeable":true,"resolveProxies":true,"lowerBound":0,"id":948,"derived":false},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"cardFrom","changeable":true,"resolveProxies":true,"lowerBound":0,"id":949,"derived":false},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"cardTo","changeable":true,"resolveProxies":true,"lowerBound":0,"id":950,"derived":false},{"id":951,"eClass":"EGenericType"},{"id":952,"eClass":"EGenericType"},{"id":953,"eClass":"EGenericType"},{"id":954,"eClass":"EGenericType"},{"id":955,"eClass":"EGenericType"},{"ordered":true,"upperBound":1,"volatile":false,"many":false,"required":false,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"type","changeable":true,"lowerBound":0,"iD":false,"id":956,"derived":false},{"ordered":true,"upperBound":1,"defaultValue":0,"volatile":false,"many":false,"required":false,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"order","changeable":true,"lowerBound":0,"iD":false,"id":957,"derived":false},{"ordered":true,"upperBound":1,"defaultValue":0,"volatile":false,"many":false,"required":true,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"value","changeable":true,"lowerBound":1,"iD":false,"id":958,"derived":false},{"id":959,"eClass":"EGenericType"},{"id":960,"eClass":"EGenericType"},{"id":961,"eClass":"EGenericType"},{"id":962,"eClass":"EGenericType"},{"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"name","changeable":true,"lowerBound":1,"iD":false,"id":963,"derived":false},{"container":false,"ordered":true,"upperBound":-1,"defaultValue":null,"volatile":false,"many":true,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"attributes","changeable":true,"resolveProxies":true,"lowerBound":0,"id":964,"derived":false},{"container":false,"ordered":true,"upperBound":-1,"defaultValue":null,"volatile":false,"many":true,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"subFeatures","changeable":true,"resolveProxies":true,"lowerBound":0,"id":965,"derived":false},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"featureCardinality","changeable":true,"resolveProxies":true,"lowerBound":1,"id":966,"derived":false},{"container":false,"ordered":true,"upperBound":-1,"defaultValue":null,"volatile":false,"many":true,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"clones","changeable":true,"resolveProxies":true,"lowerBound":0,"id":967,"derived":false},{"id":968,"eClass":"EGenericType"},{"id":969,"eClass":"EGenericType"},{"id":970,"eClass":"EGenericType"},{"id":971,"eClass":"EGenericType"},{"id":972,"eClass":"EGenericType"},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"groupCardinality","changeable":true,"resolveProxies":true,"lowerBound":0,"id":973,"derived":false},{"container":false,"ordered":true,"upperBound":-1,"defaultValue":null,"volatile":false,"many":true,"required":true,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"variants","changeable":true,"resolveProxies":true,"lowerBound":1,"id":974,"derived":false},{"id":975,"eClass":"EGenericType"},{"id":976,"eClass":"EGenericType"},{"id":977,"eClass":"EGenericType"},{"id":978,"eClass":"EGenericType"},{"name":"select","id":979,"value":0,"literal":"select","eClass":"EEnumLiteral"},{"name":"add","id":980,"value":1,"literal":"add","eClass":"EEnumLiteral"},{"name":"remove","id":981,"value":2,"literal":"remove","eClass":"EEnumLiteral"},{"name":"multiply","id":982,"value":3,"literal":"multiply","eClass":"EEnumLiteral"},{"name":"divide","id":983,"value":4,"literal":"divide","eClass":"EEnumLiteral"},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"feature","changeable":true,"resolveProxies":true,"lowerBound":1,"id":984,"derived":false},{"id":985,"eClass":"EGenericType"},{"id":986,"eClass":"EGenericType"},{"id":987,"eClass":"EGenericType"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"Requirement","instanceClass":null,"abstract":true,"id":988,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"instanceClassName":null,"name":"RequirementOperatorType","instanceClass":null,"id":989,"serializable":true,"eClass":"EEnum"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"HardRequirement","instanceClass":null,"abstract":true,"id":990,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"SoftRequirement","instanceClass":null,"abstract":true,"id":991,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"OptimisationRequirement","instanceClass":null,"abstract":false,"id":992,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"HardwareRequirement","instanceClass":null,"abstract":true,"id":993,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"OSRequirement","instanceClass":null,"abstract":false,"id":994,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"ImageRequirement","instanceClass":null,"abstract":false,"id":995,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"SecurityRequirement","instanceClass":null,"abstract":false,"id":996,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"ScaleRequirement","instanceClass":null,"abstract":true,"id":997,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"HorizontalScaleRequirement","instanceClass":null,"abstract":false,"id":998,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"VerticalScaleRequirement","instanceClass":null,"abstract":false,"id":999,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"instanceClassName":null,"name":"OptimisationFunctionType","instanceClass":null,"id":1000,"serializable":true,"eClass":"EEnum"},{"container":false,"ordered":true,"upperBound":-1,"defaultValue":null,"volatile":false,"many":true,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"requirements","changeable":true,"resolveProxies":true,"lowerBound":0,"id":1001,"derived":false},{"id":1002,"eClass":"EGenericType"},{"id":1003,"eClass":"EGenericType"},{"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"name","changeable":true,"lowerBound":1,"iD":false,"id":1004,"derived":false},{"id":1005,"eClass":"EGenericType"},{"ordered":true,"upperBound":1,"unique":true,"name":"checkRecursiveness","lowerBound":0,"id":1006,"many":false,"required":false,"eClass":"EOperation"},{"container":false,"ordered":true,"upperBound":-1,"defaultValue":null,"volatile":false,"many":true,"required":true,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"requirements","changeable":true,"resolveProxies":true,"lowerBound":1,"id":1007,"derived":false},{"container":false,"ordered":true,"upperBound":-1,"defaultValue":null,"volatile":false,"many":true,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"application","changeable":true,"resolveProxies":true,"lowerBound":0,"id":1008,"derived":false},{"ordered":true,"upperBound":1,"volatile":false,"many":false,"required":true,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"requirementOperator","changeable":true,"lowerBound":1,"iD":false,"id":1009,"derived":false},{"id":1010,"eClass":"EGenericType"},{"id":1011,"eClass":"EGenericType"},{"ordered":true,"upperBound":1,"unique":true,"name":"rg1","lowerBound":0,"id":1012,"many":false,"required":false,"eClass":"EParameter"},{"ordered":true,"upperBound":1,"unique":true,"name":"r","lowerBound":0,"id":1013,"many":false,"required":false,"eClass":"EParameter"},{"ordered":true,"upperBound":1,"unique":true,"name":"resources","lowerBound":0,"id":1014,"many":false,"required":false,"eClass":"EParameter"},{"ordered":true,"upperBound":-1,"unique":true,"name":"context","lowerBound":0,"id":1015,"many":true,"required":false,"eClass":"EParameter"},{"id":1016,"eClass":"EGenericType"},{"id":1017,"eClass":"EGenericType"},{"id":1018,"eClass":"EGenericType"},{"id":1019,"eClass":"EGenericType"},{"id":1020,"eClass":"EGenericType"},{"id":1021,"eClass":"EGenericType"},{"id":1022,"eClass":"EGenericType"},{"name":"AND","id":1023,"value":0,"literal":"AND","eClass":"EEnumLiteral"},{"name":"OR","id":1024,"value":1,"literal":"OR","eClass":"EEnumLiteral"},{"name":"XOR","id":1025,"value":2,"literal":"XOR","eClass":"EEnumLiteral"},{"id":1026,"eClass":"EGenericType"},{"ordered":true,"upperBound":1,"defaultValue":0.0,"volatile":false,"many":false,"required":false,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"priority","changeable":true,"lowerBound":0,"iD":false,"id":1027,"derived":false},{"id":1028,"eClass":"EGenericType"},{"id":1029,"eClass":"EGenericType"},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"customServiceLevel","changeable":true,"resolveProxies":true,"lowerBound":1,"id":1030,"derived":false},{"id":1031,"eClass":"EGenericType"},{"id":1032,"eClass":"EGenericType"},{"ordered":true,"upperBound":1,"volatile":false,"many":false,"required":true,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"optimisationFunction","changeable":true,"lowerBound":1,"iD":false,"id":1033,"derived":false},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"metric","changeable":true,"resolveProxies":true,"lowerBound":0,"id":1034,"derived":false},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"property","changeable":true,"resolveProxies":true,"lowerBound":0,"id":1035,"derived":false},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"application","changeable":true,"resolveProxies":true,"lowerBound":0,"id":1036,"derived":false},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"component","changeable":true,"resolveProxies":true,"lowerBound":0,"id":1037,"derived":false},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"metricContext","changeable":true,"resolveProxies":true,"lowerBound":0,"id":1038,"derived":false},{"id":1039,"eClass":"EGenericType"},{"id":1040,"eClass":"EGenericType"},{"id":1041,"eClass":"EGenericType"},{"id":1042,"eClass":"EGenericType"},{"id":1043,"eClass":"EGenericType"},{"id":1044,"eClass":"EGenericType"},{"id":1045,"eClass":"EGenericType"},{"id":1046,"eClass":"EGenericType"},{"ordered":true,"upperBound":1,"defaultValue":0.0,"volatile":false,"many":false,"required":false,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"minBenchmark","changeable":true,"lowerBound":0,"iD":false,"id":1047,"derived":false},{"ordered":true,"upperBound":1,"defaultValue":0.0,"volatile":false,"many":false,"required":false,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"maxBenchmark","changeable":true,"lowerBound":0,"iD":false,"id":1048,"derived":false},{"id":1049,"eClass":"EGenericType"},{"id":1050,"eClass":"EGenericType"},{"id":1051,"eClass":"EGenericType"},{"ordered":true,"upperBound":1,"defaultValue":0.0,"volatile":false,"many":false,"required":false,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"minCPU","changeable":true,"lowerBound":0,"iD":false,"id":1052,"derived":false},{"ordered":true,"upperBound":1,"defaultValue":0.0,"volatile":false,"many":false,"required":false,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"maxCPU","changeable":true,"lowerBound":0,"iD":false,"id":1053,"derived":false},{"ordered":true,"upperBound":1,"defaultValue":0,"volatile":false,"many":false,"required":false,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"minCores","changeable":true,"lowerBound":0,"iD":false,"id":1054,"derived":false},{"ordered":true,"upperBound":1,"defaultValue":0,"volatile":false,"many":false,"required":false,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"maxCores","changeable":true,"lowerBound":0,"iD":false,"id":1055,"derived":false},{"ordered":true,"upperBound":1,"defaultValue":0,"volatile":false,"many":false,"required":false,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"minRAM","changeable":true,"lowerBound":0,"iD":false,"id":1056,"derived":false},{"ordered":true,"upperBound":1,"defaultValue":0,"volatile":false,"many":false,"required":false,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"maxRAM","changeable":true,"lowerBound":0,"iD":false,"id":1057,"derived":false},{"ordered":true,"upperBound":1,"defaultValue":0,"volatile":false,"many":false,"required":false,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"minStorage","changeable":true,"lowerBound":0,"iD":false,"id":1058,"derived":false},{"ordered":true,"upperBound":1,"defaultValue":0,"volatile":false,"many":false,"required":false,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"maxStorage","changeable":true,"lowerBound":0,"iD":false,"id":1059,"derived":false},{"id":1060,"eClass":"EGenericType"},{"id":1061,"eClass":"EGenericType"},{"id":1062,"eClass":"EGenericType"},{"id":1063,"eClass":"EGenericType"},{"id":1064,"eClass":"EGenericType"},{"id":1065,"eClass":"EGenericType"},{"id":1066,"eClass":"EGenericType"},{"id":1067,"eClass":"EGenericType"},{"id":1068,"eClass":"EGenericType"},{"container":false,"ordered":true,"upperBound":-1,"defaultValue":null,"volatile":false,"many":true,"required":true,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"providers","changeable":true,"resolveProxies":true,"lowerBound":1,"id":1069,"derived":false},{"id":1070,"eClass":"EGenericType"},{"id":1071,"eClass":"EGenericType"},{"id":1072,"eClass":"EGenericType"},{"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"os","changeable":true,"lowerBound":1,"iD":false,"id":1073,"derived":false},{"ordered":true,"upperBound":1,"defaultValue":true,"volatile":false,"many":false,"required":true,"eClass":"EAttribute","defaultValueLiteral":"true","unsettable":false,"transient":false,"unique":true,"name":"is64os","changeable":true,"lowerBound":1,"iD":false,"id":1074,"derived":false},{"id":1075,"eClass":"EGenericType"},{"id":1076,"eClass":"EGenericType"},{"id":1077,"eClass":"EGenericType"},{"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"imageId","changeable":true,"lowerBound":1,"iD":false,"id":1078,"derived":false},{"id":1079,"eClass":"EGenericType"},{"id":1080,"eClass":"EGenericType"},{"container":false,"ordered":true,"upperBound":-1,"defaultValue":null,"volatile":false,"many":true,"required":true,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"securityControls","changeable":true,"resolveProxies":true,"lowerBound":1,"id":1081,"derived":false},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"application","changeable":true,"resolveProxies":true,"lowerBound":0,"id":1082,"derived":false},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"component","changeable":true,"resolveProxies":true,"lowerBound":0,"id":1083,"derived":false},{"id":1084,"eClass":"EGenericType"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"SecurityControl","instanceClass":null,"abstract":false,"id":1085,"interface":false,"eClass":"EClass"},{"id":1086,"eClass":"EGenericType"},{"id":1087,"eClass":"EGenericType"},{"id":1088,"eClass":"EGenericType"},{"container":false,"ordered":true,"upperBound":-1,"defaultValue":null,"volatile":false,"many":true,"required":true,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"locations","changeable":true,"resolveProxies":true,"lowerBound":1,"id":1089,"derived":false},{"id":1090,"eClass":"EGenericType"},{"id":1091,"eClass":"EGenericType"},{"id":1092,"eClass":"EGenericType"},{"ordered":true,"upperBound":1,"defaultValue":0,"volatile":false,"many":false,"required":true,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"minInstances","changeable":true,"lowerBound":1,"iD":false,"id":1093,"derived":false},{"ordered":true,"upperBound":1,"defaultValue":0,"volatile":false,"many":false,"required":true,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"maxInstances","changeable":true,"lowerBound":1,"iD":false,"id":1094,"derived":false},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"component","changeable":true,"resolveProxies":true,"lowerBound":1,"id":1095,"derived":false},{"id":1096,"eClass":"EGenericType"},{"id":1097,"eClass":"EGenericType"},{"id":1098,"eClass":"EGenericType"},{"id":1099,"eClass":"EGenericType"},{"ordered":true,"upperBound":1,"defaultValue":0.0,"volatile":false,"many":false,"required":false,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"minCPU","changeable":true,"lowerBound":0,"iD":false,"id":1100,"derived":false},{"ordered":true,"upperBound":1,"defaultValue":0.0,"volatile":false,"many":false,"required":false,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"maxCPU","changeable":true,"lowerBound":0,"iD":false,"id":1101,"derived":false},{"ordered":true,"upperBound":1,"defaultValue":0,"volatile":false,"many":false,"required":false,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"minCores","changeable":true,"lowerBound":0,"iD":false,"id":1102,"derived":false},{"ordered":true,"upperBound":1,"defaultValue":0,"volatile":false,"many":false,"required":false,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"maxCores","changeable":true,"lowerBound":0,"iD":false,"id":1103,"derived":false},{"ordered":true,"upperBound":1,"defaultValue":0,"volatile":false,"many":false,"required":false,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"minRAM","changeable":true,"lowerBound":0,"iD":false,"id":1104,"derived":false},{"ordered":true,"upperBound":1,"defaultValue":0,"volatile":false,"many":false,"required":false,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"maxRAM","changeable":true,"lowerBound":0,"iD":false,"id":1105,"derived":false},{"ordered":true,"upperBound":1,"defaultValue":0,"volatile":false,"many":false,"required":false,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"minStorage","changeable":true,"lowerBound":0,"iD":false,"id":1106,"derived":false},{"ordered":true,"upperBound":1,"defaultValue":0,"volatile":false,"many":false,"required":false,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"maxStorage","changeable":true,"lowerBound":0,"iD":false,"id":1107,"derived":false},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"vm","changeable":true,"resolveProxies":true,"lowerBound":1,"id":1108,"derived":false},{"id":1109,"eClass":"EGenericType"},{"id":1110,"eClass":"EGenericType"},{"id":1111,"eClass":"EGenericType"},{"id":1112,"eClass":"EGenericType"},{"id":1113,"eClass":"EGenericType"},{"id":1114,"eClass":"EGenericType"},{"id":1115,"eClass":"EGenericType"},{"id":1116,"eClass":"EGenericType"},{"id":1117,"eClass":"EGenericType"},{"id":1118,"eClass":"EGenericType"},{"name":"MINIMISE","id":1119,"value":0,"literal":"MINIMISE","eClass":"EEnumLiteral"},{"name":"MAXIMISE","id":1120,"value":1,"literal":"MAXIMISE","eClass":"EEnumLiteral"},{"instanceTypeName":null,"instanceClassName":null,"name":"BinaryPatternOperatorType","instanceClass":null,"id":1121,"serializable":true,"eClass":"EEnum"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"Event","instanceClass":null,"abstract":false,"id":1122,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"EventPattern","instanceClass":null,"abstract":true,"id":1123,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"BinaryEventPattern","instanceClass":null,"abstract":false,"id":1124,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"UnaryEventPattern","instanceClass":null,"abstract":false,"id":1125,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"SimpleEvent","instanceClass":null,"abstract":false,"id":1126,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"FunctionalEvent","instanceClass":null,"abstract":false,"id":1127,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"NonFunctionalEvent","instanceClass":null,"abstract":false,"id":1128,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"ScalingAction","instanceClass":null,"abstract":true,"id":1129,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"HorizontalScalingAction","instanceClass":null,"abstract":false,"id":1130,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"VerticalScalingAction","instanceClass":null,"abstract":false,"id":1131,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"Timer","instanceClass":null,"abstract":false,"id":1132,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"instanceClassName":null,"name":"TimerType","instanceClass":null,"id":1133,"serializable":true,"eClass":"EEnum"},{"instanceTypeName":null,"instanceClassName":null,"name":"UnaryPatternOperatorType","instanceClass":null,"id":1134,"serializable":true,"eClass":"EEnum"},{"instanceTypeName":null,"instanceClassName":null,"name":"StatusType","instanceClass":null,"id":1135,"serializable":true,"eClass":"EEnum"},{"container":false,"ordered":false,"upperBound":-1,"defaultValue":null,"volatile":false,"many":true,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"rules","changeable":true,"resolveProxies":true,"lowerBound":0,"id":1136,"derived":false},{"container":false,"ordered":false,"upperBound":-1,"defaultValue":null,"volatile":false,"many":true,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"events","changeable":true,"resolveProxies":true,"lowerBound":0,"id":1137,"derived":false},{"container":false,"ordered":false,"upperBound":-1,"defaultValue":null,"volatile":false,"many":true,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"eventInstances","changeable":true,"resolveProxies":true,"lowerBound":0,"id":1138,"derived":false},{"container":false,"ordered":false,"upperBound":-1,"defaultValue":null,"volatile":false,"many":true,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"actions","changeable":true,"resolveProxies":true,"lowerBound":0,"id":1139,"derived":false},{"container":false,"ordered":false,"upperBound":-1,"defaultValue":null,"volatile":false,"many":true,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"patterns","changeable":true,"resolveProxies":true,"lowerBound":0,"id":1140,"derived":false},{"container":false,"ordered":false,"upperBound":-1,"defaultValue":null,"volatile":false,"many":true,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"timers","changeable":true,"resolveProxies":true,"lowerBound":0,"id":1141,"derived":false},{"container":false,"ordered":true,"upperBound":-1,"defaultValue":null,"volatile":false,"many":true,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"scaleRequirements","changeable":true,"resolveProxies":true,"lowerBound":0,"id":1142,"derived":false},{"id":1143,"eClass":"EGenericType"},{"id":1144,"eClass":"EGenericType"},{"id":1145,"eClass":"EGenericType"},{"id":1146,"eClass":"EGenericType"},{"id":1147,"eClass":"EGenericType"},{"id":1148,"eClass":"EGenericType"},{"id":1149,"eClass":"EGenericType"},{"id":1150,"eClass":"EGenericType"},{"name":"AND","id":1151,"value":0,"literal":"AND","eClass":"EEnumLiteral"},{"name":"OR","id":1152,"value":1,"literal":"OR","eClass":"EEnumLiteral"},{"name":"XOR","id":1153,"value":3,"literal":"XOR","eClass":"EEnumLiteral"},{"name":"PRECEDES","id":1154,"value":4,"literal":"PRECEDES","eClass":"EEnumLiteral"},{"name":"REPEAT_UNTIL","id":1155,"value":5,"literal":"REPEAT_UNTIL","eClass":"EEnumLiteral"},{"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"name","changeable":true,"lowerBound":1,"iD":false,"id":1156,"derived":false},{"id":1157,"eClass":"EGenericType"},{"ordered":true,"upperBound":1,"unique":true,"name":"includesEvent","lowerBound":0,"id":1158,"many":false,"required":false,"eClass":"EOperation"},{"ordered":true,"upperBound":1,"unique":true,"name":"includesLeftEvent","lowerBound":0,"id":1159,"many":false,"required":false,"eClass":"EOperation"},{"ordered":true,"upperBound":1,"unique":true,"name":"includesRightEvent","lowerBound":0,"id":1160,"many":false,"required":false,"eClass":"EOperation"},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"timer","changeable":true,"resolveProxies":true,"lowerBound":0,"id":1161,"derived":false},{"id":1162,"eClass":"EGenericType"},{"id":1163,"eClass":"EGenericType"},{"ordered":true,"upperBound":1,"unique":true,"name":"e","lowerBound":1,"id":1164,"many":false,"required":true,"eClass":"EParameter"},{"id":1165,"eClass":"EGenericType"},{"id":1166,"eClass":"EGenericType"},{"ordered":true,"upperBound":1,"unique":true,"name":"e","lowerBound":1,"id":1167,"many":false,"required":true,"eClass":"EParameter"},{"id":1168,"eClass":"EGenericType"},{"id":1169,"eClass":"EGenericType"},{"ordered":true,"upperBound":1,"unique":true,"name":"e","lowerBound":1,"id":1170,"many":false,"required":true,"eClass":"EParameter"},{"id":1171,"eClass":"EGenericType"},{"id":1172,"eClass":"EGenericType"},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"leftEvent","changeable":true,"resolveProxies":true,"lowerBound":0,"id":1173,"derived":false},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"rightEvent","changeable":true,"resolveProxies":true,"lowerBound":0,"id":1174,"derived":false},{"ordered":true,"upperBound":1,"defaultValue":0,"volatile":false,"many":false,"required":false,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"lowerOccurrenceBound","changeable":true,"lowerBound":0,"iD":false,"id":1175,"derived":false},{"ordered":true,"upperBound":1,"defaultValue":0,"volatile":false,"many":false,"required":false,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"upperOccurrenceBound","changeable":true,"lowerBound":0,"iD":false,"id":1176,"derived":false},{"ordered":true,"upperBound":1,"volatile":false,"many":false,"required":true,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"operator","changeable":true,"lowerBound":1,"iD":false,"id":1177,"derived":false},{"id":1178,"eClass":"EGenericType"},{"id":1179,"eClass":"EGenericType"},{"id":1180,"eClass":"EGenericType"},{"id":1181,"eClass":"EGenericType"},{"id":1182,"eClass":"EGenericType"},{"id":1183,"eClass":"EGenericType"},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"event","changeable":true,"resolveProxies":true,"lowerBound":1,"id":1184,"derived":false},{"ordered":true,"upperBound":1,"defaultValue":0,"volatile":false,"many":false,"required":false,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"occurrenceNum","changeable":true,"lowerBound":0,"iD":false,"id":1185,"derived":false},{"ordered":true,"upperBound":1,"volatile":false,"many":false,"required":true,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"operator","changeable":true,"lowerBound":1,"iD":false,"id":1186,"derived":false},{"id":1187,"eClass":"EGenericType"},{"id":1188,"eClass":"EGenericType"},{"id":1189,"eClass":"EGenericType"},{"id":1190,"eClass":"EGenericType"},{"id":1191,"eClass":"EGenericType"},{"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"functionalType","changeable":true,"lowerBound":1,"iD":false,"id":1192,"derived":false},{"id":1193,"eClass":"EGenericType"},{"id":1194,"eClass":"EGenericType"},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"metricCondition","changeable":true,"resolveProxies":true,"lowerBound":1,"id":1195,"derived":false},{"ordered":true,"upperBound":1,"defaultValue":false,"volatile":false,"many":false,"required":true,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"isViolation","changeable":true,"lowerBound":1,"iD":false,"id":1196,"derived":false},{"id":1197,"eClass":"EGenericType"},{"id":1198,"eClass":"EGenericType"},{"id":1199,"eClass":"EGenericType"},{"ordered":true,"upperBound":1,"unique":true,"name":"equalLayer","lowerBound":0,"id":1200,"many":false,"required":false,"eClass":"EOperation"},{"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"name","changeable":true,"lowerBound":1,"iD":false,"id":1201,"derived":false},{"ordered":true,"upperBound":1,"volatile":false,"many":false,"required":true,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"status","changeable":true,"lowerBound":1,"iD":false,"id":1202,"derived":false},{"ordered":true,"upperBound":1,"volatile":false,"many":false,"required":false,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"layer","changeable":true,"lowerBound":0,"iD":false,"id":1203,"derived":false},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"event","changeable":true,"resolveProxies":true,"lowerBound":1,"id":1204,"derived":false},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"metricInstance","changeable":true,"resolveProxies":true,"lowerBound":0,"id":1205,"derived":false},{"id":1206,"eClass":"EGenericType"},{"ordered":true,"upperBound":1,"unique":true,"name":"l1","lowerBound":1,"id":1207,"many":false,"required":true,"eClass":"EParameter"},{"ordered":true,"upperBound":1,"unique":true,"name":"l2","lowerBound":1,"id":1208,"many":false,"required":true,"eClass":"EParameter"},{"id":1209,"eClass":"EGenericType"},{"id":1210,"eClass":"EGenericType"},{"id":1211,"eClass":"EGenericType"},{"id":1212,"eClass":"EGenericType"},{"id":1213,"eClass":"EGenericType"},{"id":1214,"eClass":"EGenericType"},{"id":1215,"eClass":"EGenericType"},{"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"name","changeable":true,"lowerBound":1,"iD":false,"id":1216,"derived":false},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"event","changeable":true,"resolveProxies":true,"lowerBound":1,"id":1217,"derived":false},{"container":false,"ordered":true,"upperBound":-1,"defaultValue":null,"volatile":false,"many":true,"required":true,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"actions","changeable":true,"resolveProxies":true,"lowerBound":1,"id":1218,"derived":false},{"container":false,"ordered":true,"upperBound":-1,"defaultValue":null,"volatile":false,"many":true,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"entity","changeable":true,"resolveProxies":true,"lowerBound":0,"id":1219,"derived":false},{"container":false,"ordered":true,"upperBound":-1,"defaultValue":null,"volatile":false,"many":true,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"scaleRequirements","changeable":true,"resolveProxies":true,"lowerBound":0,"id":1220,"derived":false},{"id":1221,"eClass":"EGenericType"},{"id":1222,"eClass":"EGenericType"},{"id":1223,"eClass":"EGenericType"},{"id":1224,"eClass":"EGenericType"},{"id":1225,"eClass":"EGenericType"},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"vm","changeable":true,"resolveProxies":true,"lowerBound":1,"id":1226,"derived":false},{"id":1227,"eClass":"EGenericType"},{"id":1228,"eClass":"EGenericType"},{"ordered":true,"upperBound":1,"defaultValue":0,"volatile":false,"many":false,"required":false,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"count","changeable":true,"lowerBound":0,"iD":false,"id":1229,"derived":false},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"internalComponent","changeable":true,"resolveProxies":true,"lowerBound":1,"id":1230,"derived":false},{"id":1231,"eClass":"EGenericType"},{"id":1232,"eClass":"EGenericType"},{"id":1233,"eClass":"EGenericType"},{"ordered":true,"upperBound":1,"defaultValue":0,"volatile":false,"many":false,"required":false,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"memoryUpdate","changeable":true,"lowerBound":0,"iD":false,"id":1234,"derived":false},{"ordered":true,"upperBound":1,"defaultValue":0.0,"volatile":false,"many":false,"required":false,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"CPUUpdate","changeable":true,"lowerBound":0,"iD":false,"id":1235,"derived":false},{"ordered":true,"upperBound":1,"defaultValue":0,"volatile":false,"many":false,"required":false,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"coreUpdate","changeable":true,"lowerBound":0,"iD":false,"id":1236,"derived":false},{"ordered":true,"upperBound":1,"defaultValue":0,"volatile":false,"many":false,"required":false,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"storageUpdate","changeable":true,"lowerBound":0,"iD":false,"id":1237,"derived":false},{"ordered":true,"upperBound":1,"defaultValue":0,"volatile":false,"many":false,"required":false,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"ioUpdate","changeable":true,"lowerBound":0,"iD":false,"id":1238,"derived":false},{"ordered":true,"upperBound":1,"defaultValue":0,"volatile":false,"many":false,"required":false,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"networkUpdate","changeable":true,"lowerBound":0,"iD":false,"id":1239,"derived":false},{"id":1240,"eClass":"EGenericType"},{"id":1241,"eClass":"EGenericType"},{"id":1242,"eClass":"EGenericType"},{"id":1243,"eClass":"EGenericType"},{"id":1244,"eClass":"EGenericType"},{"id":1245,"eClass":"EGenericType"},{"id":1246,"eClass":"EGenericType"},{"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":false,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"name","changeable":true,"lowerBound":0,"iD":false,"id":1247,"derived":false},{"ordered":true,"upperBound":1,"volatile":false,"many":false,"required":true,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"type","changeable":true,"lowerBound":1,"iD":false,"id":1248,"derived":false},{"ordered":true,"upperBound":1,"defaultValue":0,"volatile":false,"many":false,"required":true,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"timeValue","changeable":true,"lowerBound":1,"iD":false,"id":1249,"derived":false},{"ordered":true,"upperBound":1,"defaultValue":0,"volatile":false,"many":false,"required":false,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"maxOccurrenceNum","changeable":true,"lowerBound":0,"iD":false,"id":1250,"derived":false},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"unit","changeable":true,"resolveProxies":true,"lowerBound":1,"id":1251,"derived":false},{"id":1252,"eClass":"EGenericType"},{"id":1253,"eClass":"EGenericType"},{"id":1254,"eClass":"EGenericType"},{"id":1255,"eClass":"EGenericType"},{"id":1256,"eClass":"EGenericType"},{"name":"WITHIN","id":1257,"value":0,"literal":"WITHIN","eClass":"EEnumLiteral"},{"name":"WITHIN_MAX","id":1258,"value":1,"literal":"WITHIN_MAX","eClass":"EEnumLiteral"},{"name":"INTERVAL","id":1259,"value":2,"literal":"INTERVAL","eClass":"EEnumLiteral"},{"name":"EVERY","id":1260,"value":0,"literal":"EVERY","eClass":"EEnumLiteral"},{"name":"NOT","id":1261,"value":1,"literal":"NOT","eClass":"EEnumLiteral"},{"name":"REPEAT","id":1262,"value":2,"literal":"REPEAT","eClass":"EEnumLiteral"},{"name":"WHEN","id":1263,"value":3,"literal":"WHEN","eClass":"EEnumLiteral"},{"name":"CRITICAL","id":1264,"value":0,"literal":"CRITICAL","eClass":"EEnumLiteral"},{"name":"WARNING","id":1265,"value":1,"literal":"WARNING","eClass":"EEnumLiteral"},{"name":"SUCCESS","id":1266,"value":2,"literal":"SUCCESS","eClass":"EEnumLiteral"},{"name":"FATAL","id":1267,"value":3,"literal":"FATAL","eClass":"EEnumLiteral"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"SecurityDomain","instanceClass":null,"abstract":false,"id":1268,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"RawSecurityMetricInstance","instanceClass":null,"abstract":false,"id":1269,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"RawSecurityMetric","instanceClass":null,"abstract":false,"id":1270,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"SecurityProperty","instanceClass":null,"abstract":false,"id":1271,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"Certifiable","instanceClass":null,"abstract":false,"id":1272,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"SecuritySLO","instanceClass":null,"abstract":false,"id":1273,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"CompositeSecurityMetric","instanceClass":null,"abstract":false,"id":1274,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"CompositeSecurityMetricInstance","instanceClass":null,"abstract":false,"id":1275,"interface":false,"eClass":"EClass"},{"container":false,"ordered":false,"upperBound":-1,"defaultValue":null,"volatile":false,"many":true,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"securityControls","changeable":true,"resolveProxies":true,"lowerBound":0,"id":1276,"derived":false},{"container":false,"ordered":false,"upperBound":-1,"defaultValue":null,"volatile":false,"many":true,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"securityRequirements","changeable":true,"resolveProxies":true,"lowerBound":0,"id":1277,"derived":false},{"container":false,"ordered":false,"upperBound":-1,"defaultValue":null,"volatile":false,"many":true,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"securityProperties","changeable":true,"resolveProxies":true,"lowerBound":0,"id":1278,"derived":false},{"container":false,"ordered":false,"upperBound":-1,"defaultValue":null,"volatile":false,"many":true,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"rawSecurityMetrics","changeable":true,"resolveProxies":true,"lowerBound":0,"id":1279,"derived":false},{"container":false,"ordered":false,"upperBound":-1,"defaultValue":null,"volatile":false,"many":true,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"compositeSecurityMetrics","changeable":true,"resolveProxies":true,"lowerBound":0,"id":1280,"derived":false},{"container":false,"ordered":false,"upperBound":-1,"defaultValue":null,"volatile":false,"many":true,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"rawSecurityMetricInstances","changeable":true,"resolveProxies":true,"lowerBound":0,"id":1281,"derived":false},{"container":false,"ordered":false,"upperBound":-1,"defaultValue":null,"volatile":false,"many":true,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"compositeSecurityMetricInstances","changeable":true,"resolveProxies":true,"lowerBound":0,"id":1282,"derived":false},{"container":false,"ordered":false,"upperBound":-1,"defaultValue":null,"volatile":false,"many":true,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"securityDomains","changeable":true,"resolveProxies":true,"lowerBound":0,"id":1283,"derived":false},{"container":false,"ordered":false,"upperBound":-1,"defaultValue":null,"volatile":false,"many":true,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"securityCapabilities","changeable":true,"resolveProxies":true,"lowerBound":0,"id":1284,"derived":false},{"container":false,"ordered":true,"upperBound":-1,"defaultValue":null,"volatile":false,"many":true,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"securitySLOs","changeable":true,"resolveProxies":true,"lowerBound":0,"id":1285,"derived":false},{"id":1286,"eClass":"EGenericType"},{"id":1287,"eClass":"EGenericType"},{"id":1288,"eClass":"EGenericType"},{"id":1289,"eClass":"EGenericType"},{"id":1290,"eClass":"EGenericType"},{"id":1291,"eClass":"EGenericType"},{"id":1292,"eClass":"EGenericType"},{"id":1293,"eClass":"EGenericType"},{"id":1294,"eClass":"EGenericType"},{"id":1295,"eClass":"EGenericType"},{"id":1296,"eClass":"EGenericType"},{"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"id","changeable":true,"lowerBound":1,"iD":false,"id":1297,"derived":false},{"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"name","changeable":true,"lowerBound":1,"iD":false,"id":1298,"derived":false},{"container":false,"ordered":false,"upperBound":-1,"defaultValue":null,"volatile":false,"many":true,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"subDomain","changeable":true,"resolveProxies":true,"lowerBound":0,"id":1299,"derived":false},{"id":1300,"eClass":"EGenericType"},{"id":1301,"eClass":"EGenericType"},{"id":1302,"eClass":"EGenericType"},{"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"name","changeable":true,"lowerBound":1,"iD":false,"id":1303,"derived":false},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"domain","changeable":true,"resolveProxies":true,"lowerBound":1,"id":1304,"derived":false},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"subDomain","changeable":true,"resolveProxies":true,"lowerBound":1,"id":1305,"derived":false},{"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"specification","changeable":true,"lowerBound":1,"iD":false,"id":1306,"derived":false},{"container":false,"ordered":true,"upperBound":-1,"defaultValue":null,"volatile":false,"many":true,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"securityProperties","changeable":true,"resolveProxies":true,"lowerBound":0,"id":1307,"derived":false},{"container":false,"ordered":true,"upperBound":-1,"defaultValue":null,"volatile":false,"many":true,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"rawSecurityMetrics","changeable":true,"resolveProxies":true,"lowerBound":0,"id":1308,"derived":false},{"container":false,"ordered":true,"upperBound":-1,"defaultValue":null,"volatile":false,"many":true,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"compositeSecurityMetrics","changeable":true,"resolveProxies":true,"lowerBound":0,"id":1309,"derived":false},{"id":1310,"eClass":"EGenericType"},{"id":1311,"eClass":"EGenericType"},{"id":1312,"eClass":"EGenericType"},{"id":1313,"eClass":"EGenericType"},{"id":1314,"eClass":"EGenericType"},{"id":1315,"eClass":"EGenericType"},{"id":1316,"eClass":"EGenericType"},{"id":1317,"eClass":"EGenericType"},{"id":1318,"eClass":"EGenericType"},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"domain","changeable":true,"resolveProxies":true,"lowerBound":1,"id":1319,"derived":false},{"id":1320,"eClass":"EGenericType"},{"id":1321,"eClass":"EGenericType"},{"id":1322,"eClass":"EGenericType"},{"id":1323,"eClass":"EGenericType"},{"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"name","changeable":true,"lowerBound":1,"iD":false,"id":1324,"derived":false},{"container":false,"ordered":false,"upperBound":-1,"defaultValue":null,"volatile":false,"many":true,"required":true,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"securityControls","changeable":true,"resolveProxies":true,"lowerBound":1,"id":1325,"derived":false},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"dataCenter","changeable":true,"resolveProxies":true,"lowerBound":0,"id":1326,"derived":false},{"id":1327,"eClass":"EGenericType"},{"id":1328,"eClass":"EGenericType"},{"id":1329,"eClass":"EGenericType"},{"id":1330,"eClass":"EGenericType"},{"id":1331,"eClass":"EGenericType"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"Limit","instanceClass":null,"abstract":false,"id":1332,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"instanceClassName":null,"name":"TypeEnum","instanceClass":null,"id":1333,"serializable":true,"eClass":"EEnum"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"BoolValue","instanceClass":null,"abstract":false,"id":1334,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"EnumerateValue","instanceClass":null,"abstract":false,"id":1335,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"NumericValue","instanceClass":null,"abstract":true,"id":1336,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"IntegerValue","instanceClass":null,"abstract":false,"id":1337,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"FloatsValue","instanceClass":null,"abstract":false,"id":1338,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"DoublePrecisionValue","instanceClass":null,"abstract":false,"id":1339,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"NegativeInf","instanceClass":null,"abstract":false,"id":1340,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"PositiveInf","instanceClass":null,"abstract":false,"id":1341,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"ValueToIncrease","instanceClass":null,"abstract":false,"id":1342,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"StringsValue","instanceClass":null,"abstract":false,"id":1343,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"BooleanValueType","instanceClass":null,"abstract":false,"id":1344,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"Enumeration","instanceClass":null,"abstract":false,"id":1345,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"List","instanceClass":null,"abstract":false,"id":1346,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"Range","instanceClass":null,"abstract":false,"id":1347,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"RangeUnion","instanceClass":null,"abstract":false,"id":1348,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"StringValueType","instanceClass":null,"abstract":false,"id":1349,"interface":false,"eClass":"EClass"},{"container":false,"ordered":true,"upperBound":-1,"defaultValue":null,"volatile":false,"many":true,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"dataTypes","changeable":true,"resolveProxies":true,"lowerBound":0,"id":1350,"derived":false},{"container":false,"ordered":true,"upperBound":-1,"defaultValue":null,"volatile":false,"many":true,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"values","changeable":true,"resolveProxies":true,"lowerBound":0,"id":1351,"derived":false},{"id":1352,"eClass":"EGenericType"},{"id":1353,"eClass":"EGenericType"},{"id":1354,"eClass":"EGenericType"},{"ordered":true,"upperBound":1,"defaultValue":false,"volatile":false,"many":false,"required":true,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"included","changeable":true,"lowerBound":1,"iD":false,"id":1355,"derived":false},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"value","changeable":true,"resolveProxies":true,"lowerBound":1,"id":1356,"derived":false},{"id":1357,"eClass":"EGenericType"},{"id":1358,"eClass":"EGenericType"},{"name":"IntType","id":1359,"value":0,"literal":"IntType","eClass":"EEnumLiteral"},{"name":"StringType","id":1360,"value":1,"literal":"StringType","eClass":"EEnumLiteral"},{"name":"BooleanType","id":1361,"value":2,"literal":"BooleanType","eClass":"EEnumLiteral"},{"name":"FloatType","id":1362,"value":3,"literal":"FloatType","eClass":"EEnumLiteral"},{"name":"DoubleType","id":1363,"value":4,"literal":"DoubleType","eClass":"EEnumLiteral"},{"ordered":true,"upperBound":1,"unique":true,"name":"valueEquals","lowerBound":0,"id":1364,"many":false,"required":false,"eClass":"EOperation"},{"id":1365,"eClass":"EGenericType"},{"ordered":true,"upperBound":1,"unique":true,"name":"v","lowerBound":1,"id":1366,"many":false,"required":true,"eClass":"EParameter"},{"id":1367,"eClass":"EGenericType"},{"ordered":true,"upperBound":1,"defaultValue":false,"volatile":false,"many":false,"required":true,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"value","changeable":true,"lowerBound":1,"iD":false,"id":1368,"derived":false},{"id":1369,"eClass":"EGenericType"},{"id":1370,"eClass":"EGenericType"},{"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"name","changeable":true,"lowerBound":1,"iD":false,"id":1371,"derived":false},{"ordered":true,"upperBound":1,"defaultValue":0,"volatile":false,"many":false,"required":true,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"value","changeable":true,"lowerBound":1,"iD":false,"id":1372,"derived":false},{"id":1373,"eClass":"EGenericType"},{"id":1374,"eClass":"EGenericType"},{"id":1375,"eClass":"EGenericType"},{"id":1376,"eClass":"EGenericType"},{"ordered":true,"upperBound":1,"defaultValue":0,"volatile":false,"many":false,"required":true,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"value","changeable":true,"lowerBound":1,"iD":false,"id":1377,"derived":false},{"id":1378,"eClass":"EGenericType"},{"id":1379,"eClass":"EGenericType"},{"ordered":true,"upperBound":1,"defaultValue":0.0,"volatile":false,"many":false,"required":true,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"value","changeable":true,"lowerBound":1,"iD":false,"id":1380,"derived":false},{"id":1381,"eClass":"EGenericType"},{"id":1382,"eClass":"EGenericType"},{"ordered":true,"upperBound":1,"defaultValue":0.0,"volatile":false,"many":false,"required":true,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"value","changeable":true,"lowerBound":1,"iD":false,"id":1383,"derived":false},{"id":1384,"eClass":"EGenericType"},{"id":1385,"eClass":"EGenericType"},{"id":1386,"eClass":"EGenericType"},{"id":1387,"eClass":"EGenericType"},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"value","changeable":true,"resolveProxies":true,"lowerBound":1,"id":1388,"derived":false},{"id":1389,"eClass":"EGenericType"},{"id":1390,"eClass":"EGenericType"},{"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"value","changeable":true,"lowerBound":1,"iD":false,"id":1391,"derived":false},{"id":1392,"eClass":"EGenericType"},{"id":1393,"eClass":"EGenericType"},{"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":false,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"name","changeable":true,"lowerBound":0,"iD":false,"id":1394,"derived":false},{"id":1395,"eClass":"EGenericType"},{"ordered":true,"upperBound":1,"volatile":false,"many":false,"required":true,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"primitiveType","changeable":true,"lowerBound":1,"iD":false,"id":1396,"derived":false},{"id":1397,"eClass":"EGenericType"},{"id":1398,"eClass":"EGenericType"},{"ordered":true,"upperBound":1,"unique":true,"name":"includesName","lowerBound":0,"id":1399,"many":false,"required":false,"eClass":"EOperation"},{"ordered":true,"upperBound":1,"unique":true,"name":"includesValue","lowerBound":0,"id":1400,"many":false,"required":false,"eClass":"EOperation"},{"container":false,"ordered":true,"upperBound":-1,"defaultValue":null,"volatile":false,"many":true,"required":true,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"values","changeable":true,"resolveProxies":true,"lowerBound":1,"id":1401,"derived":false},{"id":1402,"eClass":"EGenericType"},{"id":1403,"eClass":"EGenericType"},{"ordered":true,"upperBound":1,"unique":true,"name":"name","lowerBound":1,"id":1404,"many":false,"required":true,"eClass":"EParameter"},{"id":1405,"eClass":"EGenericType"},{"id":1406,"eClass":"EGenericType"},{"ordered":true,"upperBound":1,"unique":true,"name":"value","lowerBound":1,"id":1407,"many":false,"required":true,"eClass":"EParameter"},{"id":1408,"eClass":"EGenericType"},{"id":1409,"eClass":"EGenericType"},{"ordered":true,"upperBound":1,"unique":true,"name":"includesValue","lowerBound":0,"id":1410,"many":false,"required":false,"eClass":"EOperation"},{"ordered":true,"upperBound":1,"unique":true,"name":"checkValueType","lowerBound":0,"id":1411,"many":false,"required":false,"eClass":"EOperation"},{"container":false,"ordered":true,"upperBound":-1,"defaultValue":null,"volatile":false,"many":true,"required":true,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"values","changeable":true,"resolveProxies":true,"lowerBound":1,"id":1412,"derived":false},{"ordered":true,"upperBound":1,"volatile":false,"many":false,"required":false,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"primitiveType","changeable":true,"lowerBound":0,"iD":false,"id":1413,"derived":false},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"type","changeable":true,"resolveProxies":true,"lowerBound":0,"id":1414,"derived":false},{"id":1415,"eClass":"EGenericType"},{"id":1416,"eClass":"EGenericType"},{"ordered":true,"upperBound":1,"unique":true,"name":"v","lowerBound":1,"id":1417,"many":false,"required":true,"eClass":"EParameter"},{"id":1418,"eClass":"EGenericType"},{"id":1419,"eClass":"EGenericType"},{"ordered":true,"upperBound":1,"unique":true,"name":"p","lowerBound":1,"id":1420,"many":false,"required":true,"eClass":"EParameter"},{"id":1421,"eClass":"EGenericType"},{"id":1422,"eClass":"EGenericType"},{"id":1423,"eClass":"EGenericType"},{"id":1424,"eClass":"EGenericType"},{"ordered":true,"upperBound":1,"unique":true,"name":"checkType","lowerBound":0,"id":1425,"many":false,"required":false,"eClass":"EOperation"},{"ordered":true,"upperBound":1,"unique":true,"name":"includesValue","lowerBound":0,"id":1426,"many":false,"required":false,"eClass":"EOperation"},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"lowerLimit","changeable":true,"resolveProxies":true,"lowerBound":1,"id":1427,"derived":false},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"upperLimit","changeable":true,"resolveProxies":true,"lowerBound":1,"id":1428,"derived":false},{"ordered":true,"upperBound":1,"volatile":false,"many":false,"required":true,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"primitiveType","changeable":true,"lowerBound":1,"iD":false,"id":1429,"derived":false},{"id":1430,"eClass":"EGenericType"},{"id":1431,"eClass":"EGenericType"},{"ordered":true,"upperBound":1,"unique":true,"name":"l","lowerBound":1,"id":1432,"many":false,"required":true,"eClass":"EParameter"},{"ordered":true,"upperBound":1,"unique":true,"name":"type","lowerBound":1,"id":1433,"many":false,"required":true,"eClass":"EParameter"},{"ordered":true,"upperBound":1,"unique":true,"name":"lower","lowerBound":1,"id":1434,"many":false,"required":true,"eClass":"EParameter"},{"id":1435,"eClass":"EGenericType"},{"id":1436,"eClass":"EGenericType"},{"id":1437,"eClass":"EGenericType"},{"id":1438,"eClass":"EGenericType"},{"ordered":true,"upperBound":1,"unique":true,"name":"n","lowerBound":1,"id":1439,"many":false,"required":true,"eClass":"EParameter"},{"id":1440,"eClass":"EGenericType"},{"id":1441,"eClass":"EGenericType"},{"id":1442,"eClass":"EGenericType"},{"id":1443,"eClass":"EGenericType"},{"ordered":true,"upperBound":1,"unique":true,"name":"includesValue","lowerBound":0,"id":1444,"many":false,"required":false,"eClass":"EOperation"},{"ordered":true,"upperBound":1,"unique":true,"name":"invalidRangeSequence","lowerBound":0,"id":1445,"many":false,"required":false,"eClass":"EOperation"},{"container":false,"ordered":true,"upperBound":-1,"defaultValue":null,"volatile":false,"many":true,"required":true,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"ranges","changeable":true,"resolveProxies":true,"lowerBound":1,"id":1446,"derived":false},{"ordered":true,"upperBound":1,"volatile":false,"many":false,"required":true,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"primitiveType","changeable":true,"lowerBound":1,"iD":false,"id":1447,"derived":false},{"id":1448,"eClass":"EGenericType"},{"id":1449,"eClass":"EGenericType"},{"ordered":true,"upperBound":1,"unique":true,"name":"n","lowerBound":1,"id":1450,"many":false,"required":true,"eClass":"EParameter"},{"id":1451,"eClass":"EGenericType"},{"id":1452,"eClass":"EGenericType"},{"ordered":true,"upperBound":1,"unique":true,"name":"ru","lowerBound":1,"id":1453,"many":false,"required":true,"eClass":"EParameter"},{"id":1454,"eClass":"EGenericType"},{"id":1455,"eClass":"EGenericType"},{"id":1456,"eClass":"EGenericType"},{"ordered":true,"upperBound":1,"volatile":false,"many":false,"required":true,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"primitiveType","changeable":true,"lowerBound":1,"iD":false,"id":1457,"derived":false},{"id":1458,"eClass":"EGenericType"},{"id":1459,"eClass":"EGenericType"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"CoreUnit","instanceClass":null,"abstract":false,"id":1460,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"Dimensionless","instanceClass":null,"abstract":false,"id":1461,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"RequestUnit","instanceClass":null,"abstract":false,"id":1462,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"StorageUnit","instanceClass":null,"abstract":false,"id":1463,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"ThroughputUnit","instanceClass":null,"abstract":false,"id":1464,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"TransactionUnit","instanceClass":null,"abstract":false,"id":1465,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"instanceClassName":null,"name":"UnitDimensionType","instanceClass":null,"id":1466,"serializable":true,"eClass":"EEnum"},{"ordered":true,"upperBound":1,"unique":true,"name":"checkUnit","lowerBound":0,"id":1467,"many":false,"required":false,"eClass":"EOperation"},{"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"name","changeable":true,"lowerBound":1,"iD":false,"id":1468,"derived":false},{"ordered":true,"upperBound":1,"volatile":false,"many":false,"required":true,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"unit","changeable":true,"lowerBound":1,"iD":false,"id":1469,"derived":false},{"id":1470,"eClass":"EGenericType"},{"id":1471,"eClass":"EGenericType"},{"id":1472,"eClass":"EGenericType"},{"id":1473,"eClass":"EGenericType"},{"id":1474,"eClass":"EGenericType"},{"id":1475,"eClass":"EGenericType"},{"id":1476,"eClass":"EGenericType"},{"id":1477,"eClass":"EGenericType"},{"id":1478,"eClass":"EGenericType"},{"id":1479,"eClass":"EGenericType"},{"id":1480,"eClass":"EGenericType"},{"name":"BYTES","id":1481,"value":0,"literal":"BYTES","eClass":"EEnumLiteral"},{"name":"BYTES_PER_SECOND","id":1482,"value":1,"literal":"BYTES_PER_SECOND","eClass":"EEnumLiteral"},{"name":"KILOBYTES","id":1483,"value":2,"literal":"KILOBYTES","eClass":"EEnumLiteral"},{"name":"MEGABYTES","id":1484,"value":3,"literal":"MEGABYTES","eClass":"EEnumLiteral"},{"name":"GIGABYTES","id":1485,"value":4,"literal":"GIGABYTES","eClass":"EEnumLiteral"},{"name":"MILLISECONDS","id":1486,"value":5,"literal":"MILLISECONDS","eClass":"EEnumLiteral"},{"name":"SECONDS","id":1487,"value":6,"literal":"SECONDS","eClass":"EEnumLiteral"},{"name":"MINUTES","id":1488,"value":7,"literal":"MINUTES","eClass":"EEnumLiteral"},{"name":"HOURS","id":1489,"value":8,"literal":"HOURS","eClass":"EEnumLiteral"},{"name":"DAYS","id":1490,"value":9,"literal":"DAYS","eClass":"EEnumLiteral"},{"name":"WEEKS","id":1491,"value":10,"literal":"WEEKS","eClass":"EEnumLiteral"},{"name":"MONTHS","id":1492,"value":11,"literal":"MONTHS","eClass":"EEnumLiteral"},{"name":"REQUESTS","id":1493,"value":12,"literal":"REQUESTS","eClass":"EEnumLiteral"},{"name":"REQUESTS_PER_SECOND","id":1494,"value":13,"literal":"REQUESTS_PER_SECOND","eClass":"EEnumLiteral"},{"name":"TRANSACTIONS","id":1495,"value":14,"literal":"TRANSACTIONS","eClass":"EEnumLiteral"},{"name":"TRANSACTIONS_PER_SECOND","id":1496,"value":15,"literal":"TRANSACTIONS_PER_SECOND","eClass":"EEnumLiteral"},{"name":"CORES","id":1497,"value":16,"literal":"CORES","eClass":"EEnumLiteral"},{"name":"PERCENTAGE","id":1498,"value":17,"literal":"PERCENTAGE","eClass":"EEnumLiteral"},{"name":"EUROS","id":1499,"value":18,"literal":"EUROS","eClass":"EEnumLiteral"},{"name":"POUNDS","id":1500,"value":19,"literal":"POUNDS","eClass":"EEnumLiteral"},{"name":"DOLLARS","id":1501,"value":20,"literal":"DOLLARS","eClass":"EEnumLiteral"},{"name":"TIME_INTERVAL","id":1502,"value":0,"literal":"TIME_INTERVAL","eClass":"EEnumLiteral"},{"name":"STORAGE","id":1503,"value":1,"literal":"STORAGE","eClass":"EEnumLiteral"},{"name":"COST","id":1504,"value":2,"literal":"COST","eClass":"EEnumLiteral"},{"name":"THROUGHPUT","id":1505,"value":3,"literal":"THROUGHPUT","eClass":"EEnumLiteral"},{"name":"REQUEST_NUM","id":1506,"value":4,"literal":"REQUEST_NUM","eClass":"EEnumLiteral"},{"name":"TRANSACTION_NUM","id":1507,"value":5,"literal":"TRANSACTION_NUM","eClass":"EEnumLiteral"},{"name":"DIMENSIONLESS","id":1508,"value":6,"literal":"DIMENSIONLESS","eClass":"EEnumLiteral"},{"name":"CORE_NUM","id":1509,"value":7,"literal":"CORE_NUM","eClass":"EEnumLiteral"},{"container":false,"ordered":true,"upperBound":-1,"defaultValue":null,"volatile":false,"many":true,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"units","changeable":true,"resolveProxies":true,"lowerBound":0,"id":1510,"derived":false},{"id":1511,"eClass":"EGenericType"},{"id":1512,"eClass":"EGenericType"}],"links":[{"source":0,"target":1},{"source":0,"target":2},{"source":0,"target":3},{"source":0,"target":4},{"source":0,"target":5},{"source":0,"target":6},{"source":0,"target":7},{"source":0,"target":8},{"source":0,"target":9},{"source":0,"target":10},{"source":0,"target":11},{"source":0,"target":12},{"source":0,"target":13},{"source":0,"target":14},{"source":0,"target":15},{"source":0,"target":16},{"source":0,"target":17},{"source":1,"target":0},{"source":1,"target":18},{"source":1,"target":19},{"source":18,"target":20},{"source":18,"target":1},{"source":19,"target":21},{"source":19,"target":1},{"source":2,"target":0},{"source":2,"target":1},{"source":2,"target":22},{"source":2,"target":23},{"source":2,"target":24},{"source":2,"target":25},{"source":2,"target":26},{"source":2,"target":27},{"source":2,"target":28},{"source":2,"target":29},{"source":2,"target":30},{"source":2,"target":31},{"source":2,"target":32},{"source":2,"target":33},{"source":2,"target":34},{"source":2,"target":35},{"source":22,"target":3},{"source":22,"target":36},{"source":22,"target":2},{"source":36,"target":3},{"source":23,"target":5},{"source":23,"target":37},{"source":23,"target":2},{"source":37,"target":5},{"source":24,"target":38},{"source":24,"target":39},{"source":24,"target":2},{"source":39,"target":38},{"source":25,"target":40},{"source":25,"target":41},{"source":25,"target":2},{"source":41,"target":40},{"source":26,"target":42},{"source":26,"target":43},{"source":26,"target":2},{"source":43,"target":42},{"source":27,"target":44},{"source":27,"target":45},{"source":27,"target":2},{"source":45,"target":44},{"source":28,"target":46},{"source":28,"target":47},{"source":28,"target":2},{"source":47,"target":46},{"source":29,"target":48},{"source":29,"target":49},{"source":29,"target":2},{"source":49,"target":48},{"source":30,"target":50},{"source":30,"target":51},{"source":30,"target":2},{"source":51,"target":50},{"source":31,"target":52},{"source":31,"target":53},{"source":31,"target":2},{"source":53,"target":52},{"source":32,"target":54},{"source":32,"target":55},{"source":32,"target":2},{"source":55,"target":54},{"source":33,"target":56},{"source":33,"target":57},{"source":33,"target":2},{"source":57,"target":56},{"source":34,"target":58},{"source":34,"target":59},{"source":34,"target":2},{"source":59,"target":58},{"source":35,"target":1},{"source":3,"target":0},{"source":3,"target":60},{"source":3,"target":61},{"source":60,"target":62},{"source":60,"target":3},{"source":61,"target":4},{"source":61,"target":63},{"source":61,"target":3},{"source":63,"target":4},{"source":4,"target":0},{"source":4,"target":64},{"source":4,"target":65},{"source":4,"target":66},{"source":4,"target":67},{"source":4,"target":68},{"source":4,"target":69},{"source":4,"target":70},{"source":64,"target":4},{"source":65,"target":4},{"source":66,"target":4},{"source":67,"target":4},{"source":68,"target":4},{"source":69,"target":4},{"source":70,"target":4},{"source":5,"target":0},{"source":5,"target":71},{"source":5,"target":72},{"source":5,"target":73},{"source":5,"target":74},{"source":5,"target":75},{"source":71,"target":76},{"source":71,"target":5},{"source":72,"target":77},{"source":72,"target":5},{"source":73,"target":78},{"source":73,"target":5},{"source":74,"target":79},{"source":74,"target":80},{"source":74,"target":5},{"source":80,"target":79},{"source":75,"target":38},{"source":75,"target":81},{"source":75,"target":5},{"source":81,"target":38},{"source":6,"target":0},{"source":6,"target":82},{"source":6,"target":83},{"source":6,"target":84},{"source":6,"target":85},{"source":6,"target":86},{"source":82,"target":6},{"source":83,"target":6},{"source":84,"target":6},{"source":85,"target":6},{"source":86,"target":6},{"source":7,"target":87},{"source":7,"target":38},{"source":7,"target":88},{"source":7,"target":89},{"source":7,"target":90},{"source":7,"target":91},{"source":7,"target":92},{"source":7,"target":93},{"source":7,"target":94},{"source":7,"target":95},{"source":7,"target":96},{"source":7,"target":97},{"source":7,"target":98},{"source":7,"target":99},{"source":7,"target":100},{"source":7,"target":101},{"source":7,"target":102},{"source":7,"target":103},{"source":7,"target":104},{"source":7,"target":105},{"source":7,"target":106},{"source":7,"target":107},{"source":7,"target":108},{"source":7,"target":109},{"source":7,"target":110},{"source":7,"target":111},{"source":7,"target":112},{"source":7,"target":0},{"source":87,"target":7},{"source":87,"target":113},{"source":113,"target":114},{"source":113,"target":87},{"source":38,"target":7},{"source":38,"target":1},{"source":38,"target":115},{"source":38,"target":116},{"source":38,"target":117},{"source":38,"target":118},{"source":38,"target":119},{"source":38,"target":120},{"source":38,"target":121},{"source":38,"target":122},{"source":38,"target":123},{"source":38,"target":124},{"source":38,"target":125},{"source":115,"target":89},{"source":115,"target":126},{"source":115,"target":38},{"source":126,"target":89},{"source":116,"target":103},{"source":116,"target":127},{"source":116,"target":38},{"source":127,"target":103},{"source":117,"target":90},{"source":117,"target":128},{"source":117,"target":38},{"source":128,"target":90},{"source":118,"target":104},{"source":118,"target":129},{"source":118,"target":38},{"source":129,"target":104},{"source":119,"target":93},{"source":119,"target":130},{"source":119,"target":38},{"source":130,"target":93},{"source":120,"target":105},{"source":120,"target":131},{"source":120,"target":38},{"source":131,"target":105},{"source":121,"target":98},{"source":121,"target":132},{"source":121,"target":38},{"source":132,"target":98},{"source":122,"target":109},{"source":122,"target":133},{"source":122,"target":38},{"source":133,"target":109},{"source":123,"target":91},{"source":123,"target":134},{"source":123,"target":38},{"source":134,"target":91},{"source":124,"target":91},{"source":124,"target":135},{"source":124,"target":38},{"source":135,"target":91},{"source":125,"target":1},{"source":88,"target":7},{"source":88,"target":87},{"source":88,"target":136},{"source":88,"target":137},{"source":88,"target":138},{"source":88,"target":139},{"source":136,"target":96},{"source":136,"target":140},{"source":136,"target":88},{"source":140,"target":96},{"source":137,"target":100},{"source":137,"target":141},{"source":137,"target":88},{"source":141,"target":100},{"source":138,"target":92},{"source":138,"target":142},{"source":138,"target":88},{"source":142,"target":92},{"source":139,"target":87},{"source":89,"target":7},{"source":89,"target":88},{"source":89,"target":143},{"source":89,"target":144},{"source":89,"target":145},{"source":89,"target":146},{"source":89,"target":147},{"source":89,"target":148},{"source":143,"target":149},{"source":143,"target":89},{"source":143,"target":150},{"source":143,"target":151},{"source":150,"target":89},{"source":150,"target":152},{"source":150,"target":143},{"source":152,"target":89},{"source":151,"target":89},{"source":151,"target":153},{"source":151,"target":143},{"source":153,"target":89},{"source":144,"target":89},{"source":144,"target":154},{"source":144,"target":89},{"source":154,"target":89},{"source":145,"target":97},{"source":145,"target":155},{"source":145,"target":89},{"source":155,"target":97},{"source":146,"target":101},{"source":146,"target":156},{"source":146,"target":89},{"source":156,"target":101},{"source":147,"target":157},{"source":147,"target":89},{"source":148,"target":88},{"source":90,"target":7},{"source":90,"target":88},{"source":90,"target":158},{"source":90,"target":159},{"source":158,"target":91},{"source":158,"target":160},{"source":158,"target":90},{"source":160,"target":91},{"source":159,"target":88},{"source":91,"target":7},{"source":91,"target":161},{"source":91,"target":162},{"source":91,"target":163},{"source":91,"target":164},{"source":91,"target":165},{"source":91,"target":166},{"source":161,"target":167},{"source":161,"target":91},{"source":162,"target":168},{"source":162,"target":169},{"source":162,"target":91},{"source":169,"target":168},{"source":163,"target":170},{"source":163,"target":171},{"source":163,"target":91},{"source":171,"target":170},{"source":164,"target":172},{"source":164,"target":173},{"source":164,"target":91},{"source":173,"target":172},{"source":165,"target":174},{"source":165,"target":175},{"source":165,"target":91},{"source":175,"target":174},{"source":166,"target":176},{"source":166,"target":177},{"source":166,"target":91},{"source":177,"target":176},{"source":92,"target":7},{"source":92,"target":87},{"source":92,"target":178},{"source":92,"target":179},{"source":92,"target":180},{"source":92,"target":181},{"source":92,"target":182},{"source":92,"target":183},{"source":92,"target":184},{"source":178,"target":185},{"source":178,"target":92},{"source":179,"target":186},{"source":179,"target":92},{"source":180,"target":187},{"source":180,"target":92},{"source":181,"target":188},{"source":181,"target":92},{"source":182,"target":189},{"source":182,"target":92},{"source":183,"target":190},{"source":183,"target":92},{"source":184,"target":87},{"source":93,"target":7},{"source":93,"target":87},{"source":93,"target":191},{"source":93,"target":192},{"source":93,"target":193},{"source":93,"target":194},{"source":93,"target":195},{"source":93,"target":196},{"source":191,"target":94},{"source":191,"target":197},{"source":191,"target":93},{"source":197,"target":94},{"source":192,"target":96},{"source":192,"target":198},{"source":192,"target":93},{"source":198,"target":96},{"source":193,"target":97},{"source":193,"target":199},{"source":193,"target":93},{"source":199,"target":97},{"source":194,"target":92},{"source":194,"target":200},{"source":194,"target":93},{"source":200,"target":92},{"source":195,"target":92},{"source":195,"target":201},{"source":195,"target":93},{"source":201,"target":92},{"source":196,"target":87},{"source":94,"target":7},{"source":94,"target":202},{"source":94,"target":203},{"source":94,"target":204},{"source":202,"target":94},{"source":203,"target":94},{"source":204,"target":94},{"source":95,"target":7},{"source":95,"target":87},{"source":95,"target":205},{"source":95,"target":206},{"source":205,"target":207},{"source":205,"target":95},{"source":206,"target":87},{"source":96,"target":7},{"source":96,"target":95},{"source":96,"target":208},{"source":208,"target":95},{"source":97,"target":7},{"source":97,"target":95},{"source":97,"target":209},{"source":97,"target":210},{"source":209,"target":211},{"source":209,"target":97},{"source":210,"target":95},{"source":98,"target":7},{"source":98,"target":87},{"source":98,"target":212},{"source":98,"target":213},{"source":98,"target":214},{"source":98,"target":215},{"source":98,"target":216},{"source":212,"target":100},{"source":212,"target":217},{"source":212,"target":98},{"source":217,"target":100},{"source":213,"target":101},{"source":213,"target":218},{"source":213,"target":98},{"source":218,"target":101},{"source":214,"target":92},{"source":214,"target":219},{"source":214,"target":98},{"source":219,"target":92},{"source":215,"target":92},{"source":215,"target":220},{"source":215,"target":98},{"source":220,"target":92},{"source":216,"target":87},{"source":99,"target":7},{"source":99,"target":87},{"source":99,"target":221},{"source":221,"target":87},{"source":100,"target":7},{"source":100,"target":99},{"source":100,"target":222},{"source":222,"target":99},{"source":101,"target":7},{"source":101,"target":99},{"source":101,"target":223},{"source":223,"target":99},{"source":102,"target":7},{"source":102,"target":87},{"source":102,"target":224},{"source":102,"target":225},{"source":102,"target":226},{"source":102,"target":227},{"source":102,"target":228},{"source":102,"target":229},{"source":224,"target":88},{"source":224,"target":230},{"source":224,"target":102},{"source":230,"target":88},{"source":225,"target":107},{"source":225,"target":231},{"source":225,"target":102},{"source":231,"target":107},{"source":226,"target":111},{"source":226,"target":232},{"source":226,"target":102},{"source":232,"target":111},{"source":227,"target":233},{"source":227,"target":102},{"source":228,"target":234},{"source":228,"target":102},{"source":229,"target":87},{"source":103,"target":7},{"source":103,"target":102},{"source":103,"target":235},{"source":103,"target":236},{"source":103,"target":237},{"source":235,"target":108},{"source":235,"target":238},{"source":235,"target":103},{"source":238,"target":108},{"source":236,"target":112},{"source":236,"target":239},{"source":236,"target":103},{"source":239,"target":112},{"source":237,"target":102},{"source":104,"target":7},{"source":104,"target":102},{"source":104,"target":240},{"source":104,"target":241},{"source":104,"target":242},{"source":104,"target":243},{"source":104,"target":244},{"source":240,"target":245},{"source":240,"target":104},{"source":240,"target":246},{"source":246,"target":104},{"source":246,"target":247},{"source":246,"target":240},{"source":247,"target":104},{"source":241,"target":248},{"source":241,"target":249},{"source":241,"target":104},{"source":249,"target":248},{"source":242,"target":250},{"source":242,"target":251},{"source":242,"target":104},{"source":251,"target":250},{"source":243,"target":252},{"source":243,"target":104},{"source":244,"target":102},{"source":105,"target":7},{"source":105,"target":87},{"source":105,"target":253},{"source":105,"target":254},{"source":105,"target":255},{"source":105,"target":256},{"source":253,"target":93},{"source":253,"target":257},{"source":253,"target":105},{"source":257,"target":93},{"source":254,"target":107},{"source":254,"target":258},{"source":254,"target":105},{"source":258,"target":107},{"source":255,"target":108},{"source":255,"target":259},{"source":255,"target":105},{"source":259,"target":108},{"source":256,"target":87},{"source":106,"target":7},{"source":106,"target":87},{"source":106,"target":260},{"source":106,"target":261},{"source":260,"target":95},{"source":260,"target":262},{"source":260,"target":106},{"source":262,"target":95},{"source":261,"target":87},{"source":107,"target":7},{"source":107,"target":106},{"source":107,"target":263},{"source":263,"target":106},{"source":108,"target":7},{"source":108,"target":106},{"source":108,"target":264},{"source":264,"target":106},{"source":109,"target":7},{"source":109,"target":87},{"source":109,"target":265},{"source":109,"target":266},{"source":109,"target":267},{"source":109,"target":268},{"source":265,"target":98},{"source":265,"target":269},{"source":265,"target":109},{"source":269,"target":98},{"source":266,"target":111},{"source":266,"target":270},{"source":266,"target":109},{"source":270,"target":111},{"source":267,"target":112},{"source":267,"target":271},{"source":267,"target":109},{"source":271,"target":112},{"source":268,"target":87},{"source":110,"target":7},{"source":110,"target":87},{"source":110,"target":272},{"source":110,"target":273},{"source":272,"target":99},{"source":272,"target":274},{"source":272,"target":110},{"source":274,"target":99},{"source":273,"target":87},{"source":111,"target":7},{"source":111,"target":110},{"source":111,"target":275},{"source":275,"target":110},{"source":112,"target":7},{"source":112,"target":110},{"source":112,"target":276},{"source":276,"target":110},{"source":8,"target":40},{"source":8,"target":277},{"source":8,"target":278},{"source":8,"target":279},{"source":8,"target":280},{"source":8,"target":281},{"source":8,"target":282},{"source":8,"target":283},{"source":8,"target":284},{"source":8,"target":285},{"source":8,"target":0},{"source":40,"target":8},{"source":40,"target":1},{"source":40,"target":286},{"source":40,"target":287},{"source":40,"target":288},{"source":40,"target":289},{"source":40,"target":290},{"source":40,"target":291},{"source":40,"target":292},{"source":286,"target":277},{"source":286,"target":293},{"source":286,"target":40},{"source":293,"target":277},{"source":287,"target":294},{"source":287,"target":295},{"source":287,"target":40},{"source":295,"target":294},{"source":288,"target":278},{"source":288,"target":296},{"source":288,"target":40},{"source":296,"target":278},{"source":289,"target":279},{"source":289,"target":297},{"source":289,"target":40},{"source":297,"target":279},{"source":290,"target":284},{"source":290,"target":298},{"source":290,"target":40},{"source":298,"target":284},{"source":291,"target":285},{"source":291,"target":299},{"source":291,"target":40},{"source":299,"target":285},{"source":292,"target":1},{"source":277,"target":8},{"source":277,"target":300},{"source":277,"target":301},{"source":277,"target":302},{"source":277,"target":303},{"source":277,"target":304},{"source":300,"target":305},{"source":300,"target":277},{"source":301,"target":3},{"source":301,"target":306},{"source":301,"target":277},{"source":306,"target":3},{"source":302,"target":307},{"source":302,"target":277},{"source":303,"target":308},{"source":303,"target":277},{"source":304,"target":309},{"source":304,"target":277},{"source":278,"target":8},{"source":278,"target":310},{"source":278,"target":311},{"source":278,"target":312},{"source":278,"target":313},{"source":278,"target":314},{"source":278,"target":315},{"source":278,"target":316},{"source":278,"target":317},{"source":310,"target":318},{"source":310,"target":278},{"source":311,"target":5},{"source":311,"target":319},{"source":311,"target":278},{"source":319,"target":5},{"source":312,"target":320},{"source":312,"target":278},{"source":313,"target":321},{"source":313,"target":278},{"source":314,"target":322},{"source":314,"target":278},{"source":315,"target":323},{"source":315,"target":324},{"source":315,"target":278},{"source":324,"target":323},{"source":316,"target":38},{"source":316,"target":325},{"source":316,"target":278},{"source":325,"target":38},{"source":317,"target":326},{"source":317,"target":327},{"source":317,"target":278},{"source":327,"target":326},{"source":279,"target":8},{"source":279,"target":328},{"source":279,"target":329},{"source":279,"target":330},{"source":279,"target":331},{"source":279,"target":332},{"source":279,"target":333},{"source":279,"target":334},{"source":279,"target":335},{"source":328,"target":336},{"source":328,"target":279},{"source":329,"target":278},{"source":329,"target":337},{"source":329,"target":279},{"source":337,"target":278},{"source":330,"target":338},{"source":330,"target":339},{"source":330,"target":279},{"source":339,"target":338},{"source":331,"target":340},{"source":331,"target":279},{"source":332,"target":341},{"source":332,"target":279},{"source":333,"target":342},{"source":333,"target":279},{"source":334,"target":343},{"source":334,"target":344},{"source":334,"target":279},{"source":344,"target":343},{"source":335,"target":294},{"source":335,"target":345},{"source":335,"target":279},{"source":345,"target":294},{"source":280,"target":8},{"source":280,"target":279},{"source":280,"target":346},{"source":280,"target":347},{"source":346,"target":5},{"source":346,"target":348},{"source":346,"target":280},{"source":348,"target":5},{"source":347,"target":279},{"source":281,"target":8},{"source":281,"target":279},{"source":281,"target":349},{"source":281,"target":350},{"source":349,"target":103},{"source":349,"target":351},{"source":349,"target":281},{"source":351,"target":103},{"source":350,"target":279},{"source":282,"target":8},{"source":282,"target":279},{"source":282,"target":352},{"source":282,"target":353},{"source":282,"target":354},{"source":352,"target":104},{"source":352,"target":355},{"source":352,"target":282},{"source":355,"target":104},{"source":353,"target":104},{"source":353,"target":356},{"source":353,"target":282},{"source":356,"target":104},{"source":354,"target":279},{"source":283,"target":8},{"source":283,"target":279},{"source":283,"target":357},{"source":283,"target":358},{"source":357,"target":104},{"source":357,"target":359},{"source":357,"target":283},{"source":359,"target":104},{"source":358,"target":279},{"source":284,"target":8},{"source":284,"target":360},{"source":284,"target":361},{"source":284,"target":362},{"source":284,"target":363},{"source":284,"target":364},{"source":284,"target":365},{"source":360,"target":366},{"source":360,"target":284},{"source":361,"target":343},{"source":361,"target":367},{"source":361,"target":284},{"source":367,"target":343},{"source":362,"target":368},{"source":362,"target":284},{"source":363,"target":278},{"source":363,"target":369},{"source":363,"target":284},{"source":369,"target":278},{"source":364,"target":279},{"source":364,"target":370},{"source":364,"target":284},{"source":370,"target":279},{"source":365,"target":371},{"source":365,"target":284},{"source":285,"target":8},{"source":285,"target":372},{"source":285,"target":373},{"source":285,"target":374},{"source":285,"target":375},{"source":285,"target":376},{"source":285,"target":377},{"source":372,"target":378},{"source":372,"target":285},{"source":373,"target":379},{"source":373,"target":380},{"source":373,"target":285},{"source":380,"target":379},{"source":374,"target":294},{"source":374,"target":381},{"source":374,"target":285},{"source":381,"target":294},{"source":375,"target":277},{"source":375,"target":382},{"source":375,"target":285},{"source":382,"target":277},{"source":376,"target":383},{"source":376,"target":285},{"source":377,"target":278},{"source":377,"target":384},{"source":377,"target":285},{"source":384,"target":278},{"source":9,"target":42},{"source":9,"target":385},{"source":9,"target":386},{"source":9,"target":387},{"source":9,"target":388},{"source":9,"target":0},{"source":42,"target":9},{"source":42,"target":1},{"source":42,"target":389},{"source":42,"target":390},{"source":42,"target":391},{"source":42,"target":392},{"source":389,"target":386},{"source":389,"target":393},{"source":389,"target":42},{"source":393,"target":386},{"source":390,"target":388},{"source":390,"target":394},{"source":390,"target":42},{"source":394,"target":388},{"source":391,"target":387},{"source":391,"target":395},{"source":391,"target":42},{"source":395,"target":387},{"source":392,"target":1},{"source":385,"target":9},{"source":385,"target":396},{"source":396,"target":397},{"source":396,"target":385},{"source":386,"target":9},{"source":386,"target":385},{"source":386,"target":398},{"source":386,"target":399},{"source":386,"target":400},{"source":386,"target":401},{"source":386,"target":402},{"source":386,"target":403},{"source":398,"target":404},{"source":398,"target":386},{"source":398,"target":405},{"source":398,"target":406},{"source":405,"target":386},{"source":405,"target":407},{"source":405,"target":398},{"source":407,"target":386},{"source":406,"target":386},{"source":406,"target":408},{"source":406,"target":398},{"source":408,"target":386},{"source":399,"target":409},{"source":399,"target":386},{"source":400,"target":386},{"source":400,"target":410},{"source":400,"target":386},{"source":410,"target":386},{"source":401,"target":386},{"source":401,"target":411},{"source":401,"target":386},{"source":411,"target":386},{"source":402,"target":387},{"source":402,"target":412},{"source":402,"target":386},{"source":412,"target":387},{"source":403,"target":385},{"source":387,"target":9},{"source":387,"target":385},{"source":387,"target":413},{"source":387,"target":414},{"source":387,"target":415},{"source":387,"target":416},{"source":413,"target":417},{"source":413,"target":387},{"source":414,"target":387},{"source":414,"target":418},{"source":414,"target":387},{"source":418,"target":387},{"source":415,"target":419},{"source":415,"target":387},{"source":416,"target":385},{"source":388,"target":9},{"source":388,"target":387},{"source":388,"target":420},{"source":420,"target":387},{"source":10,"target":421},{"source":10,"target":422},{"source":10,"target":423},{"source":10,"target":424},{"source":10,"target":338},{"source":10,"target":425},{"source":10,"target":426},{"source":10,"target":427},{"source":10,"target":428},{"source":10,"target":429},{"source":10,"target":430},{"source":10,"target":431},{"source":10,"target":432},{"source":10,"target":433},{"source":10,"target":434},{"source":10,"target":435},{"source":10,"target":436},{"source":10,"target":437},{"source":10,"target":438},{"source":10,"target":439},{"source":10,"target":440},{"source":10,"target":441},{"source":10,"target":442},{"source":10,"target":443},{"source":10,"target":444},{"source":10,"target":445},{"source":10,"target":446},{"source":10,"target":447},{"source":10,"target":44},{"source":10,"target":448},{"source":10,"target":449},{"source":10,"target":450},{"source":10,"target":451},{"source":10,"target":452},{"source":10,"target":0},{"source":421,"target":10},{"source":421,"target":453},{"source":421,"target":454},{"source":421,"target":455},{"source":421,"target":456},{"source":453,"target":457},{"source":453,"target":421},{"source":454,"target":424},{"source":454,"target":458},{"source":454,"target":421},{"source":458,"target":424},{"source":455,"target":459},{"source":455,"target":421},{"source":456,"target":460},{"source":456,"target":421},{"source":422,"target":10},{"source":422,"target":421},{"source":422,"target":461},{"source":422,"target":462},{"source":461,"target":448},{"source":461,"target":463},{"source":461,"target":422},{"source":463,"target":448},{"source":462,"target":421},{"source":423,"target":10},{"source":423,"target":421},{"source":423,"target":464},{"source":423,"target":465},{"source":423,"target":466},{"source":423,"target":467},{"source":464,"target":451},{"source":464,"target":468},{"source":464,"target":423},{"source":468,"target":451},{"source":465,"target":323},{"source":465,"target":469},{"source":465,"target":423},{"source":469,"target":323},{"source":466,"target":470},{"source":466,"target":471},{"source":466,"target":423},{"source":471,"target":470},{"source":467,"target":421},{"source":424,"target":10},{"source":424,"target":472},{"source":424,"target":473},{"source":424,"target":474},{"source":424,"target":475},{"source":424,"target":476},{"source":424,"target":477},{"source":472,"target":424},{"source":473,"target":424},{"source":474,"target":424},{"source":475,"target":424},{"source":476,"target":424},{"source":477,"target":424},{"source":338,"target":10},{"source":338,"target":478},{"source":338,"target":479},{"source":338,"target":480},{"source":338,"target":481},{"source":338,"target":482},{"source":338,"target":483},{"source":338,"target":484},{"source":478,"target":485},{"source":478,"target":338},{"source":478,"target":486},{"source":478,"target":487},{"source":486,"target":338},{"source":486,"target":488},{"source":486,"target":478},{"source":488,"target":338},{"source":487,"target":338},{"source":487,"target":489},{"source":487,"target":478},{"source":489,"target":338},{"source":479,"target":490},{"source":479,"target":338},{"source":480,"target":429},{"source":480,"target":491},{"source":480,"target":338},{"source":491,"target":429},{"source":481,"target":440},{"source":481,"target":492},{"source":481,"target":338},{"source":492,"target":440},{"source":482,"target":443},{"source":482,"target":493},{"source":482,"target":338},{"source":493,"target":443},{"source":483,"target":434},{"source":483,"target":494},{"source":483,"target":338},{"source":494,"target":434},{"source":484,"target":448},{"source":484,"target":495},{"source":484,"target":338},{"source":495,"target":448},{"source":425,"target":10},{"source":425,"target":338},{"source":425,"target":496},{"source":425,"target":497},{"source":496,"target":338},{"source":496,"target":498},{"source":496,"target":425},{"source":498,"target":338},{"source":497,"target":338},{"source":426,"target":10},{"source":426,"target":338},{"source":426,"target":499},{"source":426,"target":500},{"source":499,"target":442},{"source":499,"target":501},{"source":499,"target":426},{"source":501,"target":442},{"source":500,"target":338},{"source":427,"target":10},{"source":427,"target":502},{"source":427,"target":503},{"source":502,"target":504},{"source":502,"target":427},{"source":503,"target":250},{"source":503,"target":505},{"source":503,"target":427},{"source":505,"target":250},{"source":428,"target":10},{"source":428,"target":427},{"source":428,"target":506},{"source":428,"target":507},{"source":428,"target":508},{"source":428,"target":509},{"source":428,"target":510},{"source":428,"target":511},{"source":428,"target":512},{"source":506,"target":513},{"source":506,"target":428},{"source":506,"target":514},{"source":514,"target":429},{"source":514,"target":515},{"source":514,"target":506},{"source":515,"target":429},{"source":507,"target":516},{"source":507,"target":428},{"source":508,"target":433},{"source":508,"target":517},{"source":508,"target":428},{"source":517,"target":433},{"source":509,"target":432},{"source":509,"target":518},{"source":509,"target":428},{"source":518,"target":432},{"source":510,"target":452},{"source":510,"target":519},{"source":510,"target":428},{"source":519,"target":452},{"source":511,"target":427},{"source":511,"target":520},{"source":511,"target":428},{"source":520,"target":427},{"source":512,"target":427},{"source":429,"target":10},{"source":429,"target":427},{"source":429,"target":521},{"source":429,"target":522},{"source":429,"target":523},{"source":429,"target":524},{"source":429,"target":525},{"source":429,"target":526},{"source":429,"target":527},{"source":429,"target":528},{"source":429,"target":529},{"source":521,"target":530},{"source":521,"target":429},{"source":521,"target":531},{"source":521,"target":532},{"source":531,"target":429},{"source":531,"target":533},{"source":531,"target":521},{"source":533,"target":429},{"source":532,"target":429},{"source":532,"target":534},{"source":532,"target":521},{"source":534,"target":429},{"source":522,"target":535},{"source":522,"target":429},{"source":523,"target":536},{"source":523,"target":537},{"source":523,"target":429},{"source":537,"target":536},{"source":524,"target":538},{"source":524,"target":429},{"source":525,"target":539},{"source":525,"target":540},{"source":525,"target":429},{"source":540,"target":539},{"source":526,"target":6},{"source":526,"target":541},{"source":526,"target":429},{"source":541,"target":6},{"source":527,"target":438},{"source":527,"target":542},{"source":527,"target":429},{"source":542,"target":438},{"source":528,"target":543},{"source":528,"target":429},{"source":529,"target":427},{"source":430,"target":10},{"source":430,"target":429},{"source":430,"target":544},{"source":430,"target":545},{"source":430,"target":546},{"source":544,"target":547},{"source":544,"target":430},{"source":544,"target":548},{"source":544,"target":549},{"source":548,"target":6},{"source":548,"target":550},{"source":548,"target":544},{"source":550,"target":6},{"source":549,"target":6},{"source":549,"target":551},{"source":549,"target":544},{"source":551,"target":6},{"source":545,"target":428},{"source":545,"target":552},{"source":545,"target":430},{"source":552,"target":428},{"source":546,"target":429},{"source":431,"target":10},{"source":431,"target":429},{"source":431,"target":553},{"source":553,"target":429},{"source":432,"target":10},{"source":432,"target":554},{"source":432,"target":555},{"source":432,"target":556},{"source":554,"target":432},{"source":555,"target":432},{"source":556,"target":432},{"source":433,"target":10},{"source":433,"target":557},{"source":433,"target":558},{"source":433,"target":559},{"source":433,"target":560},{"source":433,"target":561},{"source":433,"target":562},{"source":433,"target":563},{"source":433,"target":564},{"source":433,"target":565},{"source":433,"target":566},{"source":433,"target":567},{"source":433,"target":568},{"source":433,"target":569},{"source":433,"target":570},{"source":557,"target":433},{"source":558,"target":433},{"source":559,"target":433},{"source":560,"target":433},{"source":561,"target":433},{"source":562,"target":433},{"source":563,"target":433},{"source":564,"target":433},{"source":565,"target":433},{"source":566,"target":433},{"source":567,"target":433},{"source":568,"target":433},{"source":569,"target":433},{"source":570,"target":433},{"source":434,"target":10},{"source":434,"target":571},{"source":434,"target":572},{"source":571,"target":573},{"source":571,"target":434},{"source":572,"target":278},{"source":572,"target":574},{"source":572,"target":434},{"source":574,"target":278},{"source":435,"target":10},{"source":435,"target":434},{"source":435,"target":575},{"source":575,"target":434},{"source":436,"target":10},{"source":436,"target":434},{"source":436,"target":576},{"source":436,"target":577},{"source":436,"target":578},{"source":576,"target":104},{"source":576,"target":579},{"source":576,"target":436},{"source":579,"target":104},{"source":577,"target":102},{"source":577,"target":580},{"source":577,"target":436},{"source":580,"target":102},{"source":578,"target":434},{"source":437,"target":10},{"source":437,"target":434},{"source":437,"target":581},{"source":437,"target":582},{"source":581,"target":104},{"source":581,"target":583},{"source":581,"target":437},{"source":583,"target":104},{"source":582,"target":434},{"source":438,"target":10},{"source":438,"target":584},{"source":438,"target":585},{"source":438,"target":586},{"source":438,"target":587},{"source":438,"target":588},{"source":584,"target":589},{"source":584,"target":438},{"source":585,"target":590},{"source":585,"target":438},{"source":586,"target":439},{"source":586,"target":591},{"source":586,"target":438},{"source":591,"target":439},{"source":587,"target":438},{"source":587,"target":592},{"source":587,"target":438},{"source":592,"target":438},{"source":588,"target":442},{"source":588,"target":593},{"source":588,"target":438},{"source":593,"target":442},{"source":439,"target":10},{"source":439,"target":594},{"source":439,"target":595},{"source":594,"target":439},{"source":595,"target":439},{"source":440,"target":10},{"source":440,"target":596},{"source":440,"target":597},{"source":440,"target":598},{"source":440,"target":599},{"source":440,"target":600},{"source":440,"target":601},{"source":440,"target":602},{"source":440,"target":603},{"source":440,"target":604},{"source":596,"target":605},{"source":596,"target":440},{"source":596,"target":606},{"source":606,"target":440},{"source":606,"target":607},{"source":606,"target":596},{"source":607,"target":440},{"source":597,"target":608},{"source":597,"target":440},{"source":597,"target":609},{"source":609,"target":440},{"source":609,"target":610},{"source":609,"target":597},{"source":610,"target":440},{"source":598,"target":611},{"source":598,"target":440},{"source":599,"target":612},{"source":599,"target":440},{"source":600,"target":613},{"source":600,"target":440},{"source":601,"target":441},{"source":601,"target":614},{"source":601,"target":440},{"source":614,"target":441},{"source":602,"target":470},{"source":602,"target":615},{"source":602,"target":440},{"source":615,"target":470},{"source":603,"target":616},{"source":603,"target":440},{"source":604,"target":617},{"source":604,"target":440},{"source":441,"target":10},{"source":441,"target":618},{"source":441,"target":619},{"source":441,"target":620},{"source":618,"target":441},{"source":619,"target":441},{"source":620,"target":441},{"source":442,"target":10},{"source":442,"target":621},{"source":442,"target":622},{"source":442,"target":623},{"source":621,"target":624},{"source":621,"target":442},{"source":622,"target":625},{"source":622,"target":442},{"source":623,"target":626},{"source":623,"target":442},{"source":443,"target":10},{"source":443,"target":627},{"source":443,"target":628},{"source":443,"target":629},{"source":443,"target":630},{"source":443,"target":631},{"source":443,"target":632},{"source":627,"target":633},{"source":627,"target":443},{"source":628,"target":470},{"source":628,"target":634},{"source":628,"target":443},{"source":634,"target":470},{"source":629,"target":445},{"source":629,"target":635},{"source":629,"target":443},{"source":635,"target":445},{"source":630,"target":444},{"source":630,"target":636},{"source":630,"target":443},{"source":636,"target":444},{"source":631,"target":637},{"source":631,"target":443},{"source":632,"target":638},{"source":632,"target":443},{"source":444,"target":10},{"source":444,"target":639},{"source":444,"target":640},{"source":444,"target":641},{"source":444,"target":642},{"source":639,"target":444},{"source":640,"target":444},{"source":641,"target":444},{"source":642,"target":444},{"source":445,"target":10},{"source":445,"target":643},{"source":445,"target":644},{"source":643,"target":445},{"source":644,"target":445},{"source":446,"target":10},{"source":446,"target":645},{"source":446,"target":646},{"source":446,"target":647},{"source":446,"target":648},{"source":446,"target":649},{"source":446,"target":650},{"source":446,"target":651},{"source":645,"target":652},{"source":645,"target":446},{"source":646,"target":88},{"source":646,"target":653},{"source":646,"target":446},{"source":653,"target":88},{"source":647,"target":5},{"source":647,"target":654},{"source":647,"target":446},{"source":654,"target":5},{"source":648,"target":447},{"source":648,"target":655},{"source":648,"target":446},{"source":655,"target":447},{"source":649,"target":656},{"source":649,"target":446},{"source":650,"target":657},{"source":650,"target":446},{"source":651,"target":658},{"source":651,"target":446},{"source":447,"target":10},{"source":447,"target":659},{"source":447,"target":660},{"source":447,"target":661},{"source":659,"target":447},{"source":660,"target":447},{"source":661,"target":447},{"source":44,"target":10},{"source":44,"target":1},{"source":44,"target":662},{"source":44,"target":663},{"source":44,"target":664},{"source":44,"target":665},{"source":44,"target":666},{"source":44,"target":667},{"source":44,"target":668},{"source":44,"target":669},{"source":44,"target":670},{"source":44,"target":671},{"source":44,"target":672},{"source":44,"target":673},{"source":662,"target":446},{"source":662,"target":674},{"source":662,"target":44},{"source":674,"target":446},{"source":663,"target":429},{"source":663,"target":675},{"source":663,"target":44},{"source":675,"target":429},{"source":664,"target":338},{"source":664,"target":676},{"source":664,"target":44},{"source":676,"target":338},{"source":665,"target":421},{"source":665,"target":677},{"source":665,"target":44},{"source":677,"target":421},{"source":666,"target":438},{"source":666,"target":678},{"source":666,"target":44},{"source":678,"target":438},{"source":667,"target":434},{"source":667,"target":679},{"source":667,"target":44},{"source":679,"target":434},{"source":668,"target":443},{"source":668,"target":680},{"source":668,"target":44},{"source":680,"target":443},{"source":669,"target":440},{"source":669,"target":681},{"source":669,"target":44},{"source":681,"target":440},{"source":670,"target":427},{"source":670,"target":682},{"source":670,"target":44},{"source":682,"target":427},{"source":671,"target":442},{"source":671,"target":683},{"source":671,"target":44},{"source":683,"target":442},{"source":672,"target":539},{"source":672,"target":684},{"source":672,"target":44},{"source":684,"target":539},{"source":673,"target":1},{"source":448,"target":10},{"source":448,"target":446},{"source":448,"target":685},{"source":448,"target":686},{"source":448,"target":687},{"source":448,"target":688},{"source":685,"target":429},{"source":685,"target":689},{"source":685,"target":448},{"source":689,"target":429},{"source":686,"target":443},{"source":686,"target":690},{"source":686,"target":448},{"source":690,"target":443},{"source":687,"target":440},{"source":687,"target":691},{"source":687,"target":448},{"source":691,"target":440},{"source":688,"target":446},{"source":449,"target":10},{"source":449,"target":448},{"source":449,"target":692},{"source":449,"target":693},{"source":692,"target":448},{"source":692,"target":694},{"source":692,"target":449},{"source":694,"target":448},{"source":693,"target":448},{"source":450,"target":10},{"source":450,"target":448},{"source":450,"target":695},{"source":450,"target":696},{"source":695,"target":442},{"source":695,"target":697},{"source":695,"target":450},{"source":697,"target":442},{"source":696,"target":448},{"source":451,"target":10},{"source":451,"target":446},{"source":451,"target":698},{"source":451,"target":699},{"source":698,"target":438},{"source":698,"target":700},{"source":698,"target":451},{"source":700,"target":438},{"source":699,"target":446},{"source":452,"target":10},{"source":452,"target":701},{"source":452,"target":702},{"source":701,"target":452},{"source":702,"target":452},{"source":11,"target":46},{"source":11,"target":703},{"source":11,"target":704},{"source":11,"target":705},{"source":11,"target":79},{"source":11,"target":706},{"source":11,"target":707},{"source":11,"target":708},{"source":11,"target":709},{"source":11,"target":710},{"source":11,"target":711},{"source":11,"target":712},{"source":11,"target":713},{"source":11,"target":714},{"source":11,"target":715},{"source":11,"target":716},{"source":11,"target":717},{"source":11,"target":718},{"source":11,"target":719},{"source":11,"target":0},{"source":46,"target":11},{"source":46,"target":1},{"source":46,"target":720},{"source":46,"target":721},{"source":46,"target":722},{"source":46,"target":723},{"source":46,"target":724},{"source":46,"target":725},{"source":46,"target":726},{"source":46,"target":727},{"source":46,"target":728},{"source":46,"target":729},{"source":46,"target":730},{"source":46,"target":731},{"source":720,"target":706},{"source":720,"target":732},{"source":720,"target":46},{"source":732,"target":706},{"source":721,"target":707},{"source":721,"target":733},{"source":721,"target":46},{"source":733,"target":707},{"source":722,"target":709},{"source":722,"target":734},{"source":722,"target":46},{"source":734,"target":709},{"source":723,"target":708},{"source":723,"target":735},{"source":723,"target":46},{"source":735,"target":708},{"source":724,"target":718},{"source":724,"target":736},{"source":724,"target":46},{"source":736,"target":718},{"source":725,"target":705},{"source":725,"target":737},{"source":725,"target":46},{"source":737,"target":705},{"source":726,"target":716},{"source":726,"target":738},{"source":726,"target":46},{"source":738,"target":716},{"source":727,"target":717},{"source":727,"target":739},{"source":727,"target":46},{"source":739,"target":717},{"source":728,"target":710},{"source":728,"target":740},{"source":728,"target":46},{"source":740,"target":710},{"source":729,"target":711},{"source":729,"target":741},{"source":729,"target":46},{"source":741,"target":711},{"source":730,"target":713},{"source":730,"target":742},{"source":730,"target":46},{"source":742,"target":713},{"source":731,"target":1},{"source":703,"target":11},{"source":704,"target":11},{"source":704,"target":703},{"source":704,"target":743},{"source":704,"target":744},{"source":704,"target":745},{"source":704,"target":746},{"source":704,"target":747},{"source":704,"target":748},{"source":704,"target":749},{"source":704,"target":750},{"source":743,"target":751},{"source":743,"target":704},{"source":744,"target":707},{"source":744,"target":752},{"source":744,"target":704},{"source":752,"target":707},{"source":745,"target":753},{"source":745,"target":704},{"source":746,"target":754},{"source":746,"target":704},{"source":747,"target":755},{"source":747,"target":704},{"source":748,"target":756},{"source":748,"target":704},{"source":749,"target":757},{"source":749,"target":704},{"source":750,"target":703},{"source":705,"target":11},{"source":705,"target":758},{"source":705,"target":759},{"source":705,"target":760},{"source":758,"target":761},{"source":758,"target":705},{"source":759,"target":762},{"source":759,"target":705},{"source":760,"target":385},{"source":760,"target":763},{"source":760,"target":705},{"source":763,"target":385},{"source":79,"target":11},{"source":706,"target":11},{"source":706,"target":79},{"source":706,"target":764},{"source":706,"target":765},{"source":706,"target":766},{"source":706,"target":767},{"source":706,"target":768},{"source":764,"target":769},{"source":764,"target":706},{"source":765,"target":770},{"source":765,"target":706},{"source":766,"target":771},{"source":766,"target":706},{"source":767,"target":772},{"source":767,"target":706},{"source":768,"target":79},{"source":707,"target":11},{"source":707,"target":706},{"source":707,"target":773},{"source":707,"target":774},{"source":707,"target":775},{"source":707,"target":776},{"source":707,"target":777},{"source":707,"target":778},{"source":707,"target":779},{"source":773,"target":780},{"source":773,"target":707},{"source":774,"target":781},{"source":774,"target":707},{"source":775,"target":782},{"source":775,"target":707},{"source":776,"target":783},{"source":776,"target":707},{"source":777,"target":48},{"source":777,"target":784},{"source":777,"target":707},{"source":784,"target":48},{"source":778,"target":785},{"source":778,"target":786},{"source":778,"target":707},{"source":786,"target":785},{"source":779,"target":706},{"source":708,"target":11},{"source":708,"target":79},{"source":708,"target":787},{"source":708,"target":788},{"source":708,"target":789},{"source":708,"target":790},{"source":708,"target":791},{"source":708,"target":792},{"source":708,"target":793},{"source":708,"target":794},{"source":708,"target":795},{"source":708,"target":796},{"source":708,"target":797},{"source":787,"target":798},{"source":787,"target":708},{"source":788,"target":799},{"source":788,"target":708},{"source":789,"target":800},{"source":789,"target":708},{"source":790,"target":801},{"source":790,"target":708},{"source":791,"target":802},{"source":791,"target":708},{"source":792,"target":709},{"source":792,"target":803},{"source":792,"target":708},{"source":803,"target":709},{"source":793,"target":50},{"source":793,"target":804},{"source":793,"target":708},{"source":804,"target":50},{"source":794,"target":704},{"source":794,"target":805},{"source":794,"target":708},{"source":805,"target":704},{"source":795,"target":38},{"source":795,"target":806},{"source":795,"target":708},{"source":806,"target":38},{"source":796,"target":719},{"source":796,"target":807},{"source":796,"target":708},{"source":807,"target":719},{"source":797,"target":79},{"source":709,"target":11},{"source":709,"target":808},{"source":709,"target":809},{"source":808,"target":810},{"source":808,"target":709},{"source":809,"target":811},{"source":809,"target":709},{"source":710,"target":11},{"source":710,"target":812},{"source":710,"target":813},{"source":710,"target":814},{"source":710,"target":815},{"source":710,"target":816},{"source":710,"target":817},{"source":710,"target":818},{"source":812,"target":819},{"source":812,"target":710},{"source":812,"target":820},{"source":820,"target":710},{"source":820,"target":821},{"source":820,"target":812},{"source":821,"target":710},{"source":813,"target":822},{"source":813,"target":710},{"source":814,"target":716},{"source":814,"target":823},{"source":814,"target":710},{"source":823,"target":716},{"source":815,"target":824},{"source":815,"target":710},{"source":816,"target":825},{"source":816,"target":710},{"source":817,"target":713},{"source":817,"target":826},{"source":817,"target":710},{"source":826,"target":713},{"source":818,"target":4},{"source":818,"target":827},{"source":818,"target":710},{"source":827,"target":4},{"source":711,"target":11},{"source":711,"target":828},{"source":711,"target":829},{"source":711,"target":830},{"source":828,"target":711},{"source":829,"target":711},{"source":830,"target":711},{"source":712,"target":11},{"source":712,"target":831},{"source":712,"target":832},{"source":831,"target":712},{"source":832,"target":712},{"source":713,"target":11},{"source":713,"target":833},{"source":713,"target":834},{"source":833,"target":835},{"source":833,"target":713},{"source":834,"target":712},{"source":834,"target":836},{"source":834,"target":713},{"source":836,"target":712},{"source":714,"target":11},{"source":714,"target":713},{"source":714,"target":837},{"source":714,"target":838},{"source":714,"target":839},{"source":837,"target":840},{"source":837,"target":714},{"source":838,"target":841},{"source":838,"target":714},{"source":839,"target":713},{"source":715,"target":11},{"source":715,"target":713},{"source":715,"target":842},{"source":715,"target":843},{"source":715,"target":844},{"source":842,"target":845},{"source":842,"target":715},{"source":843,"target":846},{"source":843,"target":715},{"source":844,"target":713},{"source":716,"target":11},{"source":716,"target":847},{"source":847,"target":848},{"source":847,"target":716},{"source":717,"target":11},{"source":717,"target":849},{"source":717,"target":850},{"source":717,"target":851},{"source":717,"target":852},{"source":717,"target":853},{"source":717,"target":854},{"source":717,"target":855},{"source":717,"target":856},{"source":717,"target":857},{"source":849,"target":858},{"source":849,"target":717},{"source":849,"target":859},{"source":859,"target":717},{"source":859,"target":860},{"source":859,"target":849},{"source":860,"target":717},{"source":850,"target":861},{"source":850,"target":717},{"source":850,"target":862},{"source":862,"target":717},{"source":862,"target":863},{"source":862,"target":850},{"source":863,"target":717},{"source":851,"target":864},{"source":851,"target":717},{"source":852,"target":708},{"source":852,"target":865},{"source":852,"target":717},{"source":865,"target":708},{"source":853,"target":716},{"source":853,"target":866},{"source":853,"target":717},{"source":866,"target":716},{"source":854,"target":718},{"source":854,"target":867},{"source":854,"target":717},{"source":867,"target":718},{"source":855,"target":868},{"source":855,"target":717},{"source":856,"target":869},{"source":856,"target":717},{"source":857,"target":870},{"source":857,"target":717},{"source":718,"target":11},{"source":718,"target":871},{"source":718,"target":872},{"source":871,"target":873},{"source":871,"target":718},{"source":872,"target":708},{"source":872,"target":874},{"source":872,"target":718},{"source":874,"target":708},{"source":719,"target":11},{"source":719,"target":703},{"source":719,"target":875},{"source":719,"target":876},{"source":875,"target":877},{"source":875,"target":719},{"source":876,"target":703},{"source":12,"target":48},{"source":12,"target":248},{"source":12,"target":878},{"source":12,"target":879},{"source":12,"target":880},{"source":12,"target":881},{"source":12,"target":882},{"source":12,"target":883},{"source":12,"target":884},{"source":12,"target":885},{"source":12,"target":886},{"source":12,"target":887},{"source":12,"target":888},{"source":12,"target":889},{"source":12,"target":890},{"source":12,"target":891},{"source":12,"target":892},{"source":12,"target":893},{"source":12,"target":894},{"source":12,"target":0},{"source":48,"target":12},{"source":48,"target":1},{"source":48,"target":895},{"source":48,"target":896},{"source":48,"target":897},{"source":895,"target":883},{"source":895,"target":898},{"source":895,"target":48},{"source":898,"target":883},{"source":896,"target":888},{"source":896,"target":899},{"source":896,"target":48},{"source":899,"target":888},{"source":897,"target":1},{"source":248,"target":12},{"source":248,"target":900},{"source":248,"target":901},{"source":248,"target":902},{"source":248,"target":903},{"source":248,"target":904},{"source":900,"target":905},{"source":900,"target":248},{"source":900,"target":906},{"source":900,"target":907},{"source":906,"target":250},{"source":906,"target":908},{"source":906,"target":900},{"source":908,"target":250},{"source":907,"target":909},{"source":907,"target":900},{"source":901,"target":910},{"source":901,"target":248},{"source":902,"target":250},{"source":902,"target":911},{"source":902,"target":248},{"source":911,"target":250},{"source":903,"target":536},{"source":903,"target":912},{"source":903,"target":248},{"source":912,"target":536},{"source":904,"target":913},{"source":904,"target":914},{"source":904,"target":248},{"source":914,"target":913},{"source":878,"target":12},{"source":878,"target":915},{"source":878,"target":916},{"source":878,"target":917},{"source":878,"target":918},{"source":878,"target":919},{"source":915,"target":920},{"source":915,"target":878},{"source":916,"target":248},{"source":916,"target":921},{"source":916,"target":878},{"source":921,"target":248},{"source":917,"target":248},{"source":917,"target":922},{"source":917,"target":878},{"source":922,"target":248},{"source":918,"target":250},{"source":918,"target":923},{"source":918,"target":878},{"source":923,"target":250},{"source":919,"target":250},{"source":919,"target":924},{"source":919,"target":878},{"source":924,"target":250},{"source":879,"target":12},{"source":879,"target":925},{"source":879,"target":926},{"source":925,"target":927},{"source":925,"target":879},{"source":926,"target":928},{"source":926,"target":879},{"source":880,"target":12},{"source":880,"target":879},{"source":880,"target":929},{"source":880,"target":930},{"source":929,"target":931},{"source":929,"target":880},{"source":930,"target":879},{"source":881,"target":12},{"source":881,"target":879},{"source":881,"target":932},{"source":932,"target":879},{"source":882,"target":12},{"source":882,"target":933},{"source":882,"target":934},{"source":933,"target":935},{"source":933,"target":882},{"source":934,"target":882},{"source":934,"target":936},{"source":934,"target":882},{"source":936,"target":882},{"source":883,"target":12},{"source":883,"target":937},{"source":883,"target":938},{"source":883,"target":939},{"source":883,"target":940},{"source":937,"target":941},{"source":937,"target":883},{"source":938,"target":888},{"source":938,"target":942},{"source":938,"target":883},{"source":942,"target":888},{"source":939,"target":888},{"source":939,"target":943},{"source":939,"target":883},{"source":943,"target":888},{"source":940,"target":878},{"source":940,"target":944},{"source":940,"target":883},{"source":944,"target":878},{"source":884,"target":12},{"source":884,"target":883},{"source":884,"target":945},{"source":945,"target":883},{"source":885,"target":12},{"source":885,"target":883},{"source":885,"target":946},{"source":946,"target":883},{"source":886,"target":12},{"source":886,"target":883},{"source":886,"target":947},{"source":886,"target":948},{"source":886,"target":949},{"source":886,"target":950},{"source":886,"target":951},{"source":947,"target":892},{"source":947,"target":952},{"source":947,"target":886},{"source":952,"target":892},{"source":948,"target":892},{"source":948,"target":953},{"source":948,"target":886},{"source":953,"target":892},{"source":949,"target":880},{"source":949,"target":954},{"source":949,"target":886},{"source":954,"target":880},{"source":950,"target":880},{"source":950,"target":955},{"source":950,"target":886},{"source":955,"target":880},{"source":951,"target":883},{"source":887,"target":12},{"source":887,"target":886},{"source":887,"target":956},{"source":887,"target":957},{"source":887,"target":958},{"source":887,"target":959},{"source":956,"target":891},{"source":956,"target":960},{"source":956,"target":887},{"source":960,"target":891},{"source":957,"target":961},{"source":957,"target":887},{"source":958,"target":962},{"source":958,"target":887},{"source":959,"target":886},{"source":888,"target":12},{"source":888,"target":963},{"source":888,"target":964},{"source":888,"target":965},{"source":888,"target":966},{"source":888,"target":967},{"source":963,"target":968},{"source":963,"target":888},{"source":964,"target":248},{"source":964,"target":969},{"source":964,"target":888},{"source":969,"target":248},{"source":965,"target":888},{"source":965,"target":970},{"source":965,"target":888},{"source":970,"target":888},{"source":966,"target":880},{"source":966,"target":971},{"source":966,"target":888},{"source":971,"target":880},{"source":967,"target":882},{"source":967,"target":972},{"source":967,"target":888},{"source":972,"target":882},{"source":889,"target":12},{"source":889,"target":888},{"source":889,"target":973},{"source":889,"target":974},{"source":889,"target":975},{"source":973,"target":881},{"source":973,"target":976},{"source":973,"target":889},{"source":976,"target":881},{"source":974,"target":888},{"source":974,"target":977},{"source":974,"target":889},{"source":977,"target":888},{"source":975,"target":888},{"source":890,"target":12},{"source":890,"target":889},{"source":890,"target":978},{"source":978,"target":889},{"source":891,"target":12},{"source":891,"target":979},{"source":891,"target":980},{"source":891,"target":981},{"source":891,"target":982},{"source":891,"target":983},{"source":979,"target":891},{"source":980,"target":891},{"source":981,"target":891},{"source":982,"target":891},{"source":983,"target":891},{"source":892,"target":12},{"source":893,"target":12},{"source":893,"target":892},{"source":893,"target":984},{"source":893,"target":985},{"source":984,"target":888},{"source":984,"target":986},{"source":984,"target":893},{"source":986,"target":888},{"source":985,"target":892},{"source":894,"target":12},{"source":894,"target":892},{"source":894,"target":987},{"source":987,"target":892},{"source":13,"target":50},{"source":13,"target":988},{"source":13,"target":326},{"source":13,"target":989},{"source":13,"target":990},{"source":13,"target":991},{"source":13,"target":343},{"source":13,"target":992},{"source":13,"target":993},{"source":13,"target":172},{"source":13,"target":174},{"source":13,"target":170},{"source":13,"target":176},{"source":13,"target":994},{"source":13,"target":995},{"source":13,"target":996},{"source":13,"target":168},{"source":13,"target":997},{"source":13,"target":998},{"source":13,"target":999},{"source":13,"target":1000},{"source":13,"target":0},{"source":50,"target":13},{"source":50,"target":1},{"source":50,"target":1001},{"source":50,"target":1002},{"source":1001,"target":988},{"source":1001,"target":1003},{"source":1001,"target":50},{"source":1003,"target":988},{"source":1002,"target":1},{"source":988,"target":13},{"source":988,"target":1004},{"source":1004,"target":1005},{"source":1004,"target":988},{"source":326,"target":13},{"source":326,"target":988},{"source":326,"target":1006},{"source":326,"target":1007},{"source":326,"target":1008},{"source":326,"target":1009},{"source":326,"target":1010},{"source":1006,"target":1011},{"source":1006,"target":326},{"source":1006,"target":1012},{"source":1006,"target":1013},{"source":1006,"target":1014},{"source":1006,"target":1015},{"source":1012,"target":326},{"source":1012,"target":1016},{"source":1012,"target":1006},{"source":1016,"target":326},{"source":1013,"target":990},{"source":1013,"target":1017},{"source":1013,"target":1006},{"source":1017,"target":990},{"source":1014,"target":1018},{"source":1014,"target":1006},{"source":1015,"target":326},{"source":1015,"target":1019},{"source":1015,"target":1006},{"source":1019,"target":326},{"source":1007,"target":988},{"source":1007,"target":1020},{"source":1007,"target":326},{"source":1020,"target":988},{"source":1008,"target":5},{"source":1008,"target":1021},{"source":1008,"target":326},{"source":1021,"target":5},{"source":1009,"target":989},{"source":1009,"target":1022},{"source":1009,"target":326},{"source":1022,"target":989},{"source":1010,"target":988},{"source":989,"target":13},{"source":989,"target":1023},{"source":989,"target":1024},{"source":989,"target":1025},{"source":1023,"target":989},{"source":1024,"target":989},{"source":1025,"target":989},{"source":990,"target":13},{"source":990,"target":988},{"source":990,"target":1026},{"source":1026,"target":988},{"source":991,"target":13},{"source":991,"target":988},{"source":991,"target":1027},{"source":991,"target":1028},{"source":1027,"target":1029},{"source":1027,"target":991},{"source":1028,"target":988},{"source":343,"target":13},{"source":343,"target":990},{"source":343,"target":1030},{"source":343,"target":1031},{"source":1030,"target":421},{"source":1030,"target":1032},{"source":1030,"target":343},{"source":1032,"target":421},{"source":1031,"target":990},{"source":992,"target":13},{"source":992,"target":991},{"source":992,"target":1033},{"source":992,"target":1034},{"source":992,"target":1035},{"source":992,"target":1036},{"source":992,"target":1037},{"source":992,"target":1038},{"source":992,"target":1039},{"source":1033,"target":1000},{"source":1033,"target":1040},{"source":1033,"target":992},{"source":1040,"target":1000},{"source":1034,"target":429},{"source":1034,"target":1041},{"source":1034,"target":992},{"source":1041,"target":429},{"source":1035,"target":438},{"source":1035,"target":1042},{"source":1035,"target":992},{"source":1042,"target":438},{"source":1036,"target":5},{"source":1036,"target":1043},{"source":1036,"target":992},{"source":1043,"target":5},{"source":1037,"target":88},{"source":1037,"target":1044},{"source":1037,"target":992},{"source":1044,"target":88},{"source":1038,"target":448},{"source":1038,"target":1045},{"source":1038,"target":992},{"source":1045,"target":448},{"source":1039,"target":991},{"source":993,"target":13},{"source":993,"target":990},{"source":993,"target":1046},{"source":1046,"target":990},{"source":172,"target":13},{"source":172,"target":993},{"source":172,"target":1047},{"source":172,"target":1048},{"source":172,"target":1049},{"source":1047,"target":1050},{"source":1047,"target":172},{"source":1048,"target":1051},{"source":1048,"target":172},{"source":1049,"target":993},{"source":174,"target":13},{"source":174,"target":993},{"source":174,"target":1052},{"source":174,"target":1053},{"source":174,"target":1054},{"source":174,"target":1055},{"source":174,"target":1056},{"source":174,"target":1057},{"source":174,"target":1058},{"source":174,"target":1059},{"source":174,"target":1060},{"source":1052,"target":1061},{"source":1052,"target":174},{"source":1053,"target":1062},{"source":1053,"target":174},{"source":1054,"target":1063},{"source":1054,"target":174},{"source":1055,"target":1064},{"source":1055,"target":174},{"source":1056,"target":1065},{"source":1056,"target":174},{"source":1057,"target":1066},{"source":1057,"target":174},{"source":1058,"target":1067},{"source":1058,"target":174},{"source":1059,"target":1068},{"source":1059,"target":174},{"source":1060,"target":993},{"source":170,"target":13},{"source":170,"target":990},{"source":170,"target":1069},{"source":170,"target":1070},{"source":1069,"target":707},{"source":1069,"target":1071},{"source":1069,"target":170},{"source":1071,"target":707},{"source":1070,"target":990},{"source":176,"target":13},{"source":176,"target":990},{"source":176,"target":1072},{"source":1072,"target":990},{"source":994,"target":13},{"source":994,"target":176},{"source":994,"target":1073},{"source":994,"target":1074},{"source":994,"target":1075},{"source":1073,"target":1076},{"source":1073,"target":994},{"source":1074,"target":1077},{"source":1074,"target":994},{"source":1075,"target":176},{"source":995,"target":13},{"source":995,"target":176},{"source":995,"target":1078},{"source":995,"target":1079},{"source":1078,"target":1080},{"source":1078,"target":995},{"source":1079,"target":176},{"source":996,"target":13},{"source":996,"target":990},{"source":996,"target":1081},{"source":996,"target":1082},{"source":996,"target":1083},{"source":996,"target":1084},{"source":1081,"target":1085},{"source":1081,"target":1086},{"source":1081,"target":996},{"source":1086,"target":1085},{"source":1082,"target":5},{"source":1082,"target":1087},{"source":1082,"target":996},{"source":1087,"target":5},{"source":1083,"target":89},{"source":1083,"target":1088},{"source":1083,"target":996},{"source":1088,"target":89},{"source":1084,"target":990},{"source":168,"target":13},{"source":168,"target":990},{"source":168,"target":1089},{"source":168,"target":1090},{"source":1089,"target":385},{"source":1089,"target":1091},{"source":1089,"target":168},{"source":1091,"target":385},{"source":1090,"target":990},{"source":997,"target":13},{"source":997,"target":990},{"source":997,"target":1092},{"source":1092,"target":990},{"source":998,"target":13},{"source":998,"target":997},{"source":998,"target":1093},{"source":998,"target":1094},{"source":998,"target":1095},{"source":998,"target":1096},{"source":1093,"target":1097},{"source":1093,"target":998},{"source":1094,"target":1098},{"source":1094,"target":998},{"source":1095,"target":89},{"source":1095,"target":1099},{"source":1095,"target":998},{"source":1099,"target":89},{"source":1096,"target":997},{"source":999,"target":13},{"source":999,"target":997},{"source":999,"target":1100},{"source":999,"target":1101},{"source":999,"target":1102},{"source":999,"target":1103},{"source":999,"target":1104},{"source":999,"target":1105},{"source":999,"target":1106},{"source":999,"target":1107},{"source":999,"target":1108},{"source":999,"target":1109},{"source":1100,"target":1110},{"source":1100,"target":999},{"source":1101,"target":1111},{"source":1101,"target":999},{"source":1102,"target":1112},{"source":1102,"target":999},{"source":1103,"target":1113},{"source":1103,"target":999},{"source":1104,"target":1114},{"source":1104,"target":999},{"source":1105,"target":1115},{"source":1105,"target":999},{"source":1106,"target":1116},{"source":1106,"target":999},{"source":1107,"target":1117},{"source":1107,"target":999},{"source":1108,"target":90},{"source":1108,"target":1118},{"source":1108,"target":999},{"source":1118,"target":90},{"source":1109,"target":997},{"source":1000,"target":13},{"source":1000,"target":1119},{"source":1000,"target":1120},{"source":1119,"target":1000},{"source":1120,"target":1000},{"source":14,"target":52},{"source":14,"target":1121},{"source":14,"target":1122},{"source":14,"target":1123},{"source":14,"target":1124},{"source":14,"target":1125},{"source":14,"target":1126},{"source":14,"target":1127},{"source":14,"target":1128},{"source":14,"target":294},{"source":14,"target":379},{"source":14,"target":1129},{"source":14,"target":1130},{"source":14,"target":1131},{"source":14,"target":1132},{"source":14,"target":1133},{"source":14,"target":1134},{"source":14,"target":1135},{"source":14,"target":0},{"source":52,"target":14},{"source":52,"target":1},{"source":52,"target":1136},{"source":52,"target":1137},{"source":52,"target":1138},{"source":52,"target":1139},{"source":52,"target":1140},{"source":52,"target":1141},{"source":52,"target":1142},{"source":52,"target":1143},{"source":1136,"target":379},{"source":1136,"target":1144},{"source":1136,"target":52},{"source":1144,"target":379},{"source":1137,"target":1122},{"source":1137,"target":1145},{"source":1137,"target":52},{"source":1145,"target":1122},{"source":1138,"target":294},{"source":1138,"target":1146},{"source":1138,"target":52},{"source":1146,"target":294},{"source":1139,"target":1129},{"source":1139,"target":1147},{"source":1139,"target":52},{"source":1147,"target":1129},{"source":1140,"target":1123},{"source":1140,"target":1148},{"source":1140,"target":52},{"source":1148,"target":1123},{"source":1141,"target":1132},{"source":1141,"target":1149},{"source":1141,"target":52},{"source":1149,"target":1132},{"source":1142,"target":997},{"source":1142,"target":1150},{"source":1142,"target":52},{"source":1150,"target":997},{"source":1143,"target":1},{"source":1121,"target":14},{"source":1121,"target":1151},{"source":1121,"target":1152},{"source":1121,"target":1153},{"source":1121,"target":1154},{"source":1121,"target":1155},{"source":1151,"target":1121},{"source":1152,"target":1121},{"source":1153,"target":1121},{"source":1154,"target":1121},{"source":1155,"target":1121},{"source":1122,"target":14},{"source":1122,"target":1156},{"source":1156,"target":1157},{"source":1156,"target":1122},{"source":1123,"target":14},{"source":1123,"target":1122},{"source":1123,"target":1158},{"source":1123,"target":1159},{"source":1123,"target":1160},{"source":1123,"target":1161},{"source":1123,"target":1162},{"source":1158,"target":1163},{"source":1158,"target":1123},{"source":1158,"target":1164},{"source":1164,"target":1126},{"source":1164,"target":1165},{"source":1164,"target":1158},{"source":1165,"target":1126},{"source":1159,"target":1166},{"source":1159,"target":1123},{"source":1159,"target":1167},{"source":1167,"target":1126},{"source":1167,"target":1168},{"source":1167,"target":1159},{"source":1168,"target":1126},{"source":1160,"target":1169},{"source":1160,"target":1123},{"source":1160,"target":1170},{"source":1170,"target":1126},{"source":1170,"target":1171},{"source":1170,"target":1160},{"source":1171,"target":1126},{"source":1161,"target":1132},{"source":1161,"target":1172},{"source":1161,"target":1123},{"source":1172,"target":1132},{"source":1162,"target":1122},{"source":1124,"target":14},{"source":1124,"target":1123},{"source":1124,"target":1173},{"source":1124,"target":1174},{"source":1124,"target":1175},{"source":1124,"target":1176},{"source":1124,"target":1177},{"source":1124,"target":1178},{"source":1173,"target":1122},{"source":1173,"target":1179},{"source":1173,"target":1124},{"source":1179,"target":1122},{"source":1174,"target":1122},{"source":1174,"target":1180},{"source":1174,"target":1124},{"source":1180,"target":1122},{"source":1175,"target":1181},{"source":1175,"target":1124},{"source":1176,"target":1182},{"source":1176,"target":1124},{"source":1177,"target":1121},{"source":1177,"target":1183},{"source":1177,"target":1124},{"source":1183,"target":1121},{"source":1178,"target":1123},{"source":1125,"target":14},{"source":1125,"target":1123},{"source":1125,"target":1184},{"source":1125,"target":1185},{"source":1125,"target":1186},{"source":1125,"target":1187},{"source":1184,"target":1122},{"source":1184,"target":1188},{"source":1184,"target":1125},{"source":1188,"target":1122},{"source":1185,"target":1189},{"source":1185,"target":1125},{"source":1186,"target":1134},{"source":1186,"target":1190},{"source":1186,"target":1125},{"source":1190,"target":1134},{"source":1187,"target":1123},{"source":1126,"target":14},{"source":1126,"target":1122},{"source":1126,"target":1191},{"source":1191,"target":1122},{"source":1127,"target":14},{"source":1127,"target":1126},{"source":1127,"target":1192},{"source":1127,"target":1193},{"source":1192,"target":1194},{"source":1192,"target":1127},{"source":1193,"target":1126},{"source":1128,"target":14},{"source":1128,"target":1126},{"source":1128,"target":1195},{"source":1128,"target":1196},{"source":1128,"target":1197},{"source":1195,"target":422},{"source":1195,"target":1198},{"source":1195,"target":1128},{"source":1198,"target":422},{"source":1196,"target":1199},{"source":1196,"target":1128},{"source":1197,"target":1126},{"source":294,"target":14},{"source":294,"target":1200},{"source":294,"target":1201},{"source":294,"target":1202},{"source":294,"target":1203},{"source":294,"target":1204},{"source":294,"target":1205},{"source":1200,"target":1206},{"source":1200,"target":294},{"source":1200,"target":1207},{"source":1200,"target":1208},{"source":1207,"target":6},{"source":1207,"target":1209},{"source":1207,"target":1200},{"source":1209,"target":6},{"source":1208,"target":6},{"source":1208,"target":1210},{"source":1208,"target":1200},{"source":1210,"target":6},{"source":1201,"target":1211},{"source":1201,"target":294},{"source":1202,"target":1135},{"source":1202,"target":1212},{"source":1202,"target":294},{"source":1212,"target":1135},{"source":1203,"target":6},{"source":1203,"target":1213},{"source":1203,"target":294},{"source":1213,"target":6},{"source":1204,"target":1126},{"source":1204,"target":1214},{"source":1204,"target":294},{"source":1214,"target":1126},{"source":1205,"target":338},{"source":1205,"target":1215},{"source":1205,"target":294},{"source":1215,"target":338},{"source":379,"target":14},{"source":379,"target":1216},{"source":379,"target":1217},{"source":379,"target":1218},{"source":379,"target":1219},{"source":379,"target":1220},{"source":1216,"target":1221},{"source":1216,"target":379},{"source":1217,"target":1122},{"source":1217,"target":1222},{"source":1217,"target":379},{"source":1222,"target":1122},{"source":1218,"target":3},{"source":1218,"target":1223},{"source":1218,"target":379},{"source":1223,"target":3},{"source":1219,"target":79},{"source":1219,"target":1224},{"source":1219,"target":379},{"source":1224,"target":79},{"source":1220,"target":997},{"source":1220,"target":1225},{"source":1220,"target":379},{"source":1225,"target":997},{"source":1129,"target":14},{"source":1129,"target":3},{"source":1129,"target":1226},{"source":1129,"target":1227},{"source":1226,"target":90},{"source":1226,"target":1228},{"source":1226,"target":1129},{"source":1228,"target":90},{"source":1227,"target":3},{"source":1130,"target":14},{"source":1130,"target":1129},{"source":1130,"target":1229},{"source":1130,"target":1230},{"source":1130,"target":1231},{"source":1229,"target":1232},{"source":1229,"target":1130},{"source":1230,"target":89},{"source":1230,"target":1233},{"source":1230,"target":1130},{"source":1233,"target":89},{"source":1231,"target":1129},{"source":1131,"target":14},{"source":1131,"target":1129},{"source":1131,"target":1234},{"source":1131,"target":1235},{"source":1131,"target":1236},{"source":1131,"target":1237},{"source":1131,"target":1238},{"source":1131,"target":1239},{"source":1131,"target":1240},{"source":1234,"target":1241},{"source":1234,"target":1131},{"source":1235,"target":1242},{"source":1235,"target":1131},{"source":1236,"target":1243},{"source":1236,"target":1131},{"source":1237,"target":1244},{"source":1237,"target":1131},{"source":1238,"target":1245},{"source":1238,"target":1131},{"source":1239,"target":1246},{"source":1239,"target":1131},{"source":1240,"target":1129},{"source":1132,"target":14},{"source":1132,"target":1247},{"source":1132,"target":1248},{"source":1132,"target":1249},{"source":1132,"target":1250},{"source":1132,"target":1251},{"source":1247,"target":1252},{"source":1247,"target":1132},{"source":1248,"target":1133},{"source":1248,"target":1253},{"source":1248,"target":1132},{"source":1253,"target":1133},{"source":1249,"target":1254},{"source":1249,"target":1132},{"source":1250,"target":1255},{"source":1250,"target":1132},{"source":1251,"target":470},{"source":1251,"target":1256},{"source":1251,"target":1132},{"source":1256,"target":470},{"source":1133,"target":14},{"source":1133,"target":1257},{"source":1133,"target":1258},{"source":1133,"target":1259},{"source":1257,"target":1133},{"source":1258,"target":1133},{"source":1259,"target":1133},{"source":1134,"target":14},{"source":1134,"target":1260},{"source":1134,"target":1261},{"source":1134,"target":1262},{"source":1134,"target":1263},{"source":1260,"target":1134},{"source":1261,"target":1134},{"source":1262,"target":1134},{"source":1263,"target":1134},{"source":1135,"target":14},{"source":1135,"target":1264},{"source":1135,"target":1265},{"source":1135,"target":1266},{"source":1135,"target":1267},{"source":1264,"target":1135},{"source":1265,"target":1135},{"source":1266,"target":1135},{"source":1267,"target":1135},{"source":15,"target":54},{"source":15,"target":1268},{"source":15,"target":1085},{"source":15,"target":1269},{"source":15,"target":1270},{"source":15,"target":1271},{"source":15,"target":1272},{"source":15,"target":1273},{"source":15,"target":785},{"source":15,"target":1274},{"source":15,"target":1275},{"source":15,"target":0},{"source":54,"target":15},{"source":54,"target":1},{"source":54,"target":1276},{"source":54,"target":1277},{"source":54,"target":1278},{"source":54,"target":1279},{"source":54,"target":1280},{"source":54,"target":1281},{"source":54,"target":1282},{"source":54,"target":1283},{"source":54,"target":1284},{"source":54,"target":1285},{"source":54,"target":1286},{"source":1276,"target":1085},{"source":1276,"target":1287},{"source":1276,"target":54},{"source":1287,"target":1085},{"source":1277,"target":996},{"source":1277,"target":1288},{"source":1277,"target":54},{"source":1288,"target":996},{"source":1278,"target":1271},{"source":1278,"target":1289},{"source":1278,"target":54},{"source":1289,"target":1271},{"source":1279,"target":1270},{"source":1279,"target":1290},{"source":1279,"target":54},{"source":1290,"target":1270},{"source":1280,"target":1274},{"source":1280,"target":1291},{"source":1280,"target":54},{"source":1291,"target":1274},{"source":1281,"target":1269},{"source":1281,"target":1292},{"source":1281,"target":54},{"source":1292,"target":1269},{"source":1282,"target":1275},{"source":1282,"target":1293},{"source":1282,"target":54},{"source":1293,"target":1275},{"source":1283,"target":1268},{"source":1283,"target":1294},{"source":1283,"target":54},{"source":1294,"target":1268},{"source":1284,"target":785},{"source":1284,"target":1295},{"source":1284,"target":54},{"source":1295,"target":785},{"source":1285,"target":1273},{"source":1285,"target":1296},{"source":1285,"target":54},{"source":1296,"target":1273},{"source":1286,"target":1},{"source":1268,"target":15},{"source":1268,"target":1297},{"source":1268,"target":1298},{"source":1268,"target":1299},{"source":1297,"target":1300},{"source":1297,"target":1268},{"source":1298,"target":1301},{"source":1298,"target":1268},{"source":1299,"target":1268},{"source":1299,"target":1302},{"source":1299,"target":1268},{"source":1302,"target":1268},{"source":1085,"target":15},{"source":1085,"target":1303},{"source":1085,"target":1304},{"source":1085,"target":1305},{"source":1085,"target":1306},{"source":1085,"target":1307},{"source":1085,"target":1308},{"source":1085,"target":1309},{"source":1303,"target":1310},{"source":1303,"target":1085},{"source":1304,"target":1268},{"source":1304,"target":1311},{"source":1304,"target":1085},{"source":1311,"target":1268},{"source":1305,"target":1268},{"source":1305,"target":1312},{"source":1305,"target":1085},{"source":1312,"target":1268},{"source":1306,"target":1313},{"source":1306,"target":1085},{"source":1307,"target":1271},{"source":1307,"target":1314},{"source":1307,"target":1085},{"source":1314,"target":1271},{"source":1308,"target":1270},{"source":1308,"target":1315},{"source":1308,"target":1085},{"source":1315,"target":1270},{"source":1309,"target":1274},{"source":1309,"target":1316},{"source":1309,"target":1085},{"source":1316,"target":1274},{"source":1269,"target":15},{"source":1269,"target":426},{"source":1269,"target":1317},{"source":1317,"target":426},{"source":1270,"target":15},{"source":1270,"target":431},{"source":1270,"target":1318},{"source":1318,"target":431},{"source":1271,"target":15},{"source":1271,"target":438},{"source":1271,"target":1319},{"source":1271,"target":1320},{"source":1319,"target":1268},{"source":1319,"target":1321},{"source":1319,"target":1271},{"source":1321,"target":1268},{"source":1320,"target":438},{"source":1272,"target":15},{"source":1272,"target":1271},{"source":1272,"target":1322},{"source":1322,"target":1271},{"source":1273,"target":15},{"source":1273,"target":343},{"source":1273,"target":1323},{"source":1323,"target":343},{"source":785,"target":15},{"source":785,"target":1324},{"source":785,"target":1325},{"source":785,"target":1326},{"source":1324,"target":1327},{"source":1324,"target":785},{"source":1325,"target":1085},{"source":1325,"target":1328},{"source":1325,"target":785},{"source":1328,"target":1085},{"source":1326,"target":705},{"source":1326,"target":1329},{"source":1326,"target":785},{"source":1329,"target":705},{"source":1274,"target":15},{"source":1274,"target":430},{"source":1274,"target":1330},{"source":1330,"target":430},{"source":1275,"target":15},{"source":1275,"target":425},{"source":1275,"target":1331},{"source":1331,"target":425},{"source":16,"target":56},{"source":16,"target":1332},{"source":16,"target":1333},{"source":16,"target":250},{"source":16,"target":1334},{"source":16,"target":1335},{"source":16,"target":1336},{"source":16,"target":1337},{"source":16,"target":1338},{"source":16,"target":1339},{"source":16,"target":1340},{"source":16,"target":1341},{"source":16,"target":1342},{"source":16,"target":1343},{"source":16,"target":536},{"source":16,"target":1344},{"source":16,"target":1345},{"source":16,"target":1346},{"source":16,"target":1347},{"source":16,"target":1348},{"source":16,"target":1349},{"source":16,"target":0},{"source":56,"target":16},{"source":56,"target":1},{"source":56,"target":1350},{"source":56,"target":1351},{"source":56,"target":1352},{"source":1350,"target":536},{"source":1350,"target":1353},{"source":1350,"target":56},{"source":1353,"target":536},{"source":1351,"target":250},{"source":1351,"target":1354},{"source":1351,"target":56},{"source":1354,"target":250},{"source":1352,"target":1},{"source":1332,"target":16},{"source":1332,"target":1355},{"source":1332,"target":1356},{"source":1355,"target":1357},{"source":1355,"target":1332},{"source":1356,"target":1336},{"source":1356,"target":1358},{"source":1356,"target":1332},{"source":1358,"target":1336},{"source":1333,"target":16},{"source":1333,"target":1359},{"source":1333,"target":1360},{"source":1333,"target":1361},{"source":1333,"target":1362},{"source":1333,"target":1363},{"source":1359,"target":1333},{"source":1360,"target":1333},{"source":1361,"target":1333},{"source":1362,"target":1333},{"source":1363,"target":1333},{"source":250,"target":16},{"source":250,"target":1364},{"source":1364,"target":1365},{"source":1364,"target":250},{"source":1364,"target":1366},{"source":1366,"target":250},{"source":1366,"target":1367},{"source":1366,"target":1364},{"source":1367,"target":250},{"source":1334,"target":16},{"source":1334,"target":250},{"source":1334,"target":1368},{"source":1334,"target":1369},{"source":1368,"target":1370},{"source":1368,"target":1334},{"source":1369,"target":250},{"source":1335,"target":16},{"source":1335,"target":250},{"source":1335,"target":1371},{"source":1335,"target":1372},{"source":1335,"target":1373},{"source":1371,"target":1374},{"source":1371,"target":1335},{"source":1372,"target":1375},{"source":1372,"target":1335},{"source":1373,"target":250},{"source":1336,"target":16},{"source":1336,"target":250},{"source":1336,"target":1376},{"source":1376,"target":250},{"source":1337,"target":16},{"source":1337,"target":1336},{"source":1337,"target":1377},{"source":1337,"target":1378},{"source":1377,"target":1379},{"source":1377,"target":1337},{"source":1378,"target":1336},{"source":1338,"target":16},{"source":1338,"target":1336},{"source":1338,"target":1380},{"source":1338,"target":1381},{"source":1380,"target":1382},{"source":1380,"target":1338},{"source":1381,"target":1336},{"source":1339,"target":16},{"source":1339,"target":1336},{"source":1339,"target":1383},{"source":1339,"target":1384},{"source":1383,"target":1385},{"source":1383,"target":1339},{"source":1384,"target":1336},{"source":1340,"target":16},{"source":1340,"target":1336},{"source":1340,"target":1386},{"source":1386,"target":1336},{"source":1341,"target":16},{"source":1341,"target":1336},{"source":1341,"target":1387},{"source":1387,"target":1336},{"source":1342,"target":16},{"source":1342,"target":1336},{"source":1342,"target":1388},{"source":1342,"target":1389},{"source":1388,"target":1336},{"source":1388,"target":1390},{"source":1388,"target":1342},{"source":1390,"target":1336},{"source":1389,"target":1336},{"source":1343,"target":16},{"source":1343,"target":250},{"source":1343,"target":1391},{"source":1343,"target":1392},{"source":1391,"target":1393},{"source":1391,"target":1343},{"source":1392,"target":250},{"source":536,"target":16},{"source":536,"target":1394},{"source":1394,"target":1395},{"source":1394,"target":536},{"source":1344,"target":16},{"source":1344,"target":536},{"source":1344,"target":1396},{"source":1344,"target":1397},{"source":1396,"target":1333},{"source":1396,"target":1398},{"source":1396,"target":1344},{"source":1398,"target":1333},{"source":1397,"target":536},{"source":1345,"target":16},{"source":1345,"target":536},{"source":1345,"target":1399},{"source":1345,"target":1400},{"source":1345,"target":1401},{"source":1345,"target":1402},{"source":1399,"target":1403},{"source":1399,"target":1345},{"source":1399,"target":1404},{"source":1404,"target":1405},{"source":1404,"target":1399},{"source":1400,"target":1406},{"source":1400,"target":1345},{"source":1400,"target":1407},{"source":1407,"target":1408},{"source":1407,"target":1400},{"source":1401,"target":1335},{"source":1401,"target":1409},{"source":1401,"target":1345},{"source":1409,"target":1335},{"source":1402,"target":536},{"source":1346,"target":16},{"source":1346,"target":536},{"source":1346,"target":1410},{"source":1346,"target":1411},{"source":1346,"target":1412},{"source":1346,"target":1413},{"source":1346,"target":1414},{"source":1346,"target":1415},{"source":1410,"target":1416},{"source":1410,"target":1346},{"source":1410,"target":1417},{"source":1417,"target":250},{"source":1417,"target":1418},{"source":1417,"target":1410},{"source":1418,"target":250},{"source":1411,"target":1419},{"source":1411,"target":1346},{"source":1411,"target":1420},{"source":1420,"target":250},{"source":1420,"target":1421},{"source":1420,"target":1411},{"source":1421,"target":250},{"source":1412,"target":250},{"source":1412,"target":1422},{"source":1412,"target":1346},{"source":1422,"target":250},{"source":1413,"target":1333},{"source":1413,"target":1423},{"source":1413,"target":1346},{"source":1423,"target":1333},{"source":1414,"target":536},{"source":1414,"target":1424},{"source":1414,"target":1346},{"source":1424,"target":536},{"source":1415,"target":536},{"source":1347,"target":16},{"source":1347,"target":536},{"source":1347,"target":1425},{"source":1347,"target":1426},{"source":1347,"target":1427},{"source":1347,"target":1428},{"source":1347,"target":1429},{"source":1347,"target":1430},{"source":1425,"target":1431},{"source":1425,"target":1347},{"source":1425,"target":1432},{"source":1425,"target":1433},{"source":1425,"target":1434},{"source":1432,"target":1332},{"source":1432,"target":1435},{"source":1432,"target":1425},{"source":1435,"target":1332},{"source":1433,"target":1333},{"source":1433,"target":1436},{"source":1433,"target":1425},{"source":1436,"target":1333},{"source":1434,"target":1437},{"source":1434,"target":1425},{"source":1426,"target":1438},{"source":1426,"target":1347},{"source":1426,"target":1439},{"source":1439,"target":1440},{"source":1439,"target":1426},{"source":1427,"target":1332},{"source":1427,"target":1441},{"source":1427,"target":1347},{"source":1441,"target":1332},{"source":1428,"target":1332},{"source":1428,"target":1442},{"source":1428,"target":1347},{"source":1442,"target":1332},{"source":1429,"target":1333},{"source":1429,"target":1443},{"source":1429,"target":1347},{"source":1443,"target":1333},{"source":1430,"target":536},{"source":1348,"target":16},{"source":1348,"target":536},{"source":1348,"target":1444},{"source":1348,"target":1445},{"source":1348,"target":1446},{"source":1348,"target":1447},{"source":1348,"target":1448},{"source":1444,"target":1449},{"source":1444,"target":1348},{"source":1444,"target":1450},{"source":1450,"target":1451},{"source":1450,"target":1444},{"source":1445,"target":1452},{"source":1445,"target":1348},{"source":1445,"target":1453},{"source":1453,"target":1348},{"source":1453,"target":1454},{"source":1453,"target":1445},{"source":1454,"target":1348},{"source":1446,"target":1347},{"source":1446,"target":1455},{"source":1446,"target":1348},{"source":1455,"target":1347},{"source":1447,"target":1333},{"source":1447,"target":1456},{"source":1447,"target":1348},{"source":1456,"target":1333},{"source":1448,"target":536},{"source":1349,"target":16},{"source":1349,"target":536},{"source":1349,"target":1457},{"source":1349,"target":1458},{"source":1457,"target":1333},{"source":1457,"target":1459},{"source":1457,"target":1349},{"source":1459,"target":1333},{"source":1458,"target":536},{"source":17,"target":539},{"source":17,"target":1460},{"source":17,"target":1461},{"source":17,"target":323},{"source":17,"target":1462},{"source":17,"target":1463},{"source":17,"target":1464},{"source":17,"target":470},{"source":17,"target":1465},{"source":17,"target":913},{"source":17,"target":1466},{"source":17,"target":58},{"source":17,"target":0},{"source":539,"target":17},{"source":539,"target":1467},{"source":539,"target":1468},{"source":539,"target":1469},{"source":1467,"target":1470},{"source":1467,"target":539},{"source":1468,"target":1471},{"source":1468,"target":539},{"source":1469,"target":913},{"source":1469,"target":1472},{"source":1469,"target":539},{"source":1472,"target":913},{"source":1460,"target":17},{"source":1460,"target":539},{"source":1460,"target":1473},{"source":1473,"target":539},{"source":1461,"target":17},{"source":1461,"target":539},{"source":1461,"target":1474},{"source":1474,"target":539},{"source":323,"target":17},{"source":323,"target":539},{"source":323,"target":1475},{"source":1475,"target":539},{"source":1462,"target":17},{"source":1462,"target":539},{"source":1462,"target":1476},{"source":1476,"target":539},{"source":1463,"target":17},{"source":1463,"target":539},{"source":1463,"target":1477},{"source":1477,"target":539},{"source":1464,"target":17},{"source":1464,"target":539},{"source":1464,"target":1478},{"source":1478,"target":539},{"source":470,"target":17},{"source":470,"target":539},{"source":470,"target":1479},{"source":1479,"target":539},{"source":1465,"target":17},{"source":1465,"target":539},{"source":1465,"target":1480},{"source":1480,"target":539},{"source":913,"target":17},{"source":913,"target":1481},{"source":913,"target":1482},{"source":913,"target":1483},{"source":913,"target":1484},{"source":913,"target":1485},{"source":913,"target":1486},{"source":913,"target":1487},{"source":913,"target":1488},{"source":913,"target":1489},{"source":913,"target":1490},{"source":913,"target":1491},{"source":913,"target":1492},{"source":913,"target":1493},{"source":913,"target":1494},{"source":913,"target":1495},{"source":913,"target":1496},{"source":913,"target":1497},{"source":913,"target":1498},{"source":913,"target":1499},{"source":913,"target":1500},{"source":913,"target":1501},{"source":1481,"target":913},{"source":1482,"target":913},{"source":1483,"target":913},{"source":1484,"target":913},{"source":1485,"target":913},{"source":1486,"target":913},{"source":1487,"target":913},{"source":1488,"target":913},{"source":1489,"target":913},{"source":1490,"target":913},{"source":1491,"target":913},{"source":1492,"target":913},{"source":1493,"target":913},{"source":1494,"target":913},{"source":1495,"target":913},{"source":1496,"target":913},{"source":1497,"target":913},{"source":1498,"target":913},{"source":1499,"target":913},{"source":1500,"target":913},{"source":1501,"target":913},{"source":1466,"target":17},{"source":1466,"target":1502},{"source":1466,"target":1503},{"source":1466,"target":1504},{"source":1466,"target":1505},{"source":1466,"target":1506},{"source":1466,"target":1507},{"source":1466,"target":1508},{"source":1466,"target":1509},{"source":1502,"target":1466},{"source":1503,"target":1466},{"source":1504,"target":1466},{"source":1505,"target":1466},{"source":1506,"target":1466},{"source":1507,"target":1466},{"source":1508,"target":1466},{"source":1509,"target":1466},{"source":58,"target":17},{"source":58,"target":1},{"source":58,"target":1510},{"source":58,"target":1511},{"source":1510,"target":539},{"source":1510,"target":1512},{"source":1510,"target":58},{"source":1512,"target":539},{"source":1511,"target":1}],"multigraph":true}