From 1274e5c3d00d1bac9843b74ee72b617accf98c44 Mon Sep 17 00:00:00 2001 From: shangxdy Date: Mon, 21 Dec 2015 19:37:39 +0800 Subject: [PATCH] Define a general nfv Tosca template(new) Define a general nfv Tosca template, which supports ETSI/MANO standard. Recheck for changed documents architecture. JIRA:PARSER-6 Change-Id: I0c6f0571c8a5dffbe0bc281d68f2b9542952bf7d Signed-off-by: shangxdy --- docs/index.rst | 6 +- docs/tosca2heat/TOSCA_nfv_definition_1_0.yaml | 627 +++++++++++++++++++++ docs/tosca2heat/parser_new_keywords.rst | 10 +- .../image/vRNC_Definition.PNG | Bin 10888 -> 0 bytes .../image/vRNC_Definition.bmp | Bin 0 -> 165158 bytes .../simple_rnc_definition/vRNC_tosca_intro.rst | 18 +- 6 files changed, 645 insertions(+), 16 deletions(-) create mode 100644 docs/tosca2heat/TOSCA_nfv_definition_1_0.yaml delete mode 100644 docs/tosca2heat/simple_rnc_definition/image/vRNC_Definition.PNG create mode 100644 docs/tosca2heat/simple_rnc_definition/image/vRNC_Definition.bmp diff --git a/docs/index.rst b/docs/index.rst index aa376d8..aeeaf56 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -13,8 +13,10 @@ Contents: :maxdepth: 4 documentation-example.rst - ./tosca2heat/simple_rnc_definition/Simple_RNC_definition.yaml - ./tosca2heat/simple_rnc_definition/Simple_RNC.yaml + ./tosca2heat/parser_new_keywords.rst + ./tosca2heat/simple_rnc_definition/vRNC_tosca_intro.rst + ./tosca2heat/simple_rnc_definition/image/vRNC_Definition.bmp + ./tosca2heat/simple_rnc_definition/image/vRNC_Topology.bmp Indices and tables ================== diff --git a/docs/tosca2heat/TOSCA_nfv_definition_1_0.yaml b/docs/tosca2heat/TOSCA_nfv_definition_1_0.yaml new file mode 100644 index 0000000..432cee5 --- /dev/null +++ b/docs/tosca2heat/TOSCA_nfv_definition_1_0.yaml @@ -0,0 +1,627 @@ +# Licensed :under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + +########################################################################### +# The content of this file reflects TOSCA nfv Profile in YAML version +# 1.0.0, which is derived from TOSCA Simple Profile. It describes the +# definition for nfv TOSCA types including Node Type, +# Relationship Type, Capability Type and Interfaces. +########################################################################### +tosca_definitions_version: tosca_simple_yaml_1_0 + +metadata: + template_name: tosca_simple_profile_for_nfv + template_author: opnfv_parser_project + template_version: tosca_simple_profile_for_nfv_1_0 + +########################################################################### +# Node Type. +# A Node Type is a reusable entity that defines the type of one or more +# Node Templates. +########################################################################### +node_types: + tosca.nodes.nfv.VNF: + derived_from: tosca.nodes.Root + properties: + id: + type: string + description: ID of this VNF + vendor: + type: string + description: name of the vendor which provides this VNF + version: + type: version + description: version of the software for this VNF + requirements: + - virtualLink: + capability: tosca.capabilities.nfv.VirtualLinkable + + tosca.nodes.nfv.VDU: + derived_from: tosca.nodes.SoftwareComponent + properties: + id: + type: string + required: true + description: > + A unique identifier of this VDU within the scope + of the VNFD, including version functional + description and other identification information. + This will be used to refer to VDU when defining + relationships between them. + capabilities: + high_availability: + type: tosca.capabilities.nfv.HA + virtualbinding: + type: tosca.capabilities.nfv.VirtualBindable + monitoring_parameter: + type: tosca.capabilities.nfv.Metric + requirements: + - high_availability: + capability: tosca.capabilities.nfv.HA + relationship: tosca.relationships.nfv.HA + occurrences: [ 0, 1 ] + - host: + capability: tosca.capabilities.Container + node: tosca.nodes.Compute + relationship: tosca.relationships.HostedOn + + tosca.nodes.nfv.CP: + derived_from: tosca.nodes.Root + properties: + type: + type: string + required: false + attributes: + IP_address: + type: string + required: false + requirements: + - virtualLink: + capability: tosca.capabilities.nfv.VirtualLinkable + - virtualbinding: + capability: tosca.capabilities.nfv.Virtualbindable + + tosca.nodes.nfv.VL: + derived_from: tosca.nodes.Root + properties: + vendor: + type: string + required: true + description: name of the vendor who generate this VL + capabilities: + virtual_linkable: + type: tosca.capabilities.nfv.VirtualLinkable + + tosca.nodes.nfv.VL.ELine: + derived_from: tosca.nodes.nfv.VL + capabilities: + virtual_linkable: + occurrences: 2 + + tosca.nodes.nfv.VL.ELAN: + derived_from: tosca.nodes.nfv.VL + + tosca.nodes.nfv.VL.ETree: + derived_from: tosca.nodes.nfv.VL + + tosca.nodes.nfv.FP: + derived_from: tosca.nodes.Root + properties: + policy: + type: string + required: false + description: name of the vendor who generate this VL + requirements: + - forwarder: + capability: tosca.capabilities.nfv.Forwarder + +########################################################################## +# Capability Type. +# A Capability Type is a reusable entity that describes a kind of +# capability that a Node Type can declare to expose. +########################################################################## +capability_types: + tosca.capabilities.nfv.VirtualBindable: + derived_from: tosca.capabilities.Root + + tosca.capabilities.nfv.HA: + derived_from: tosca.capabilities.Root + valid_source_types: [ tosca.nodes.nfv.VDU ] + + tosca.capabilities.nfv.HA.ActiveActive: + derived_from: tosca.capabilities.nfv.HA + + tosca.capabilities.nfv.HA.ActivePassive: + derived_from: tosca.capabilities.nfv.HA + + tosca.capabilities.nfv.Metric: + derived_from: tosca.capabilities.Root + + tosca.capabilities.nfv.Forwarder: + derived_from: tosca.capabilities.Root + + tosca.capabilities.nfv.VirtualLinkable: + derived_from: tosca.capabilities.Root + + tosca.capabilities.nfv.CPU_extension: + derived_from: tosca.capabilities.Root + properties: + cpu_instruction_set_extension: + type: list + required: false + entry_schema: + type: string + constraints: + - min_length: 1 + description: > + Instruction sets are often enhanced with + instruction set extensions. This element + represents instruction set extensions that the + VDU has been developed, optimized or tested with + cpu_model: + type: list + required: false + entry_schema: + type: string + constraints: + - min_length: 1 + description: > + The CPU model for which the VDU has been + developed, compiled with CPU model specific + optimisations, optimized or validated on. + cpu_model_specification_binding: + type: string + required: false + description: > + VDUs may be developed, compiled, optimized + or validated on particular CPU models. Some + deployments may wish to permit the VDU to + be deployed on a platform with the specified + CPU only, or with an alternative CPU with the + same architecture, instruction set, and if + specified, instruction set extensions, or with a + CPU of equivalent or greater capability. + cpu_min_clock_speed: + type: string + required: false + description: > + The minimum CPU clock speed may be one of + the elements that the development and + validation of the VDU has been considered + with. This may be in conjunction with some of + the other CPU elements such as CPU Model. + Requiring a minimum clock speed may be part + of a deployment requirement necessary to + help ensure particular performance or timing + related characteristics are met in the + deployment. + cpu_core_reservation: + type: string + required: false + description: > + The number of CPU cores allocated to the + VDU. This may be necessary to help ensure + particular performance or timing related + characteristics are met in the deployment. + cpu_simultaneous_multi_threading_hw_thread_specification: + type: string + required: false + description: > + The use of Simultaneous Multi-Threading HW + is an efficient way to increase the compute + capacity of a platform. SMT HW threads share + some CPU core resources. In some VDU + implementations, it may be necessary to very + explicitly control the HW thread allocation on a + platform. This could be to help ensure locality + in data caches or as a mechanism to enhance + determinism. + cpu_core_oversubscription_policy: + type: string + required: false + description: > + The VDU may co-exist on a platform with + multiple VDUs or VMs and as such will be + sharing CPU core resources available in the + platform. It may be necessary to specify the + CPU core oversubscription policy in terms of + virtual cores to physical cores/threads on the + platform. This policy could be based on + required VDU deployment characteristics such + as high performance, low latency, and /or + deterministic behaviour. + cpu_core_and_hw_thread_allocation_topology_policy: + type: string + required: false + description: > + The VDU may be designed to use a specific + mapping of virtual CPUs to HW threads or + cores with a specific allocation topology in + order to ensure locality in data caches and + maximize performance. The VDU will not + specify which physical resources to use, but + may specify if virtual CPUs shall be coupled + together as HW threads belonging to the same + core, or as belonging to the same processor. + cpu_last_level_cache_size: + type: scalar-unit.size + required: false + constraints: + - greater_or_equal: 0 KB + description: > + The size of the last level cache may impact the + performance of the VDU, particularly for cache + intensive workloads. + cpu_direct_io_access_to_cache: + type: string + required: false + description: > + The ability of an I/O device to have direct + access to the CPU cache enables + considerable memory access savings and for + I/O intensive workloads can offer significant + performance benefits. + cpu_translation_look_aside_buffer_parameter: + type: list + required: false + entry_schema: + type: string + constraints: + - min_length: 1 + description: > + The Translation Look-aside Buffer (TLB) is a + cache for address translation typically used by + a hardware based memory management units. + The Input/Output TLB (IOTLB) is a cache for + address translation related to remapping + hardware. The availability of a TLB and an + IOTLB can significantly improve the + performance of a virtual machine. + A number of parameters of the TLBs impact + the performance potential. These include: + 1 TLB Size. + 2 TLB Large Page Support. + 3 IOTLB Size. + 4 IOTLB Large Page Support. + cpu_hot_add: + type: boolean + required: false + description: > + Hot add CPU is the ability to dynamically add + CPUs to a running system. The new CPU can + immediately replace a failing CPU via + migration or be brought on-line later. + cpu_support_accelerator: + type: list + required: false + entry_schema: + type: string + constraints: + - min_length: 1 + description: > + This capability refers to support by the CPU + and associated chipsets of a data processing + accelerator framework, together with its + libraries and drivers. + + tosca.capabilities.nfv.Memory_extension: + derived_from: tosca.capabilities.Root + properties: + memory_parameter: + type: list + required: false + entry_schema: + type: string + constraints: + - min_length: 1 + description: > + There are a number of memory related parameters that can have a + significant impact on the performance and/or reliability of the VDU. + These include: + • Memory Type. + • Memory Speed + • Number of memory channels. + • Size of available memory. + • Reliability characteristics such as Memory Error Correction + codes. + • Memory oversubscription policy. + • Memory bandwidth required per VDU. + • Number of large pages required per VDU + • Non-Uniform Memory Architecture (NUMA) Allocation Policy, + i.e. in NUMA architecture how you specify memory allocation + that is cognisant of the relevant process/core allocation. This + applies also to allocation of huge pages. + memory_hot_add: + type: boolean + required: false + description: > + Hot add memory is the ability to add physical memory while the system + is running. Added memory can immediately replace failing memory via + migration or be brought on-line later. + + tosca.capabilities.nfv.Hypervisors: + derived_from: tosca.capabilities.Root + properties: + hypervisors: + type: list + required: false + entry_schema: + type: string + constraints: + - min_length: 1 + description: > + There are a number of hypervisor related parameters that can have a + significant impact on the deployment and performance of the VDU. + These include: + • Hypervisor type + • Hypervisor version as a VDU may be validated with a particular + version. + • Hypervisor Address Translation support parameters including: + o Second Level Address Translation. + o Second Level Address Translation with Large page + support. + o Second Level Address Translation for I/O. + o Second Level Address Translation for I/O with Large page. + support. Where "Large" is considered to be 1 GB or + greater. + o Support for interrupt remapping, i.e. supporting the IOMMU + in the hypervisor. + o Support of data processing acceleration libraries in the + hypervisor, i.e. for acceleration libraries which require + hypervisor support for high performance. + + tosca.capabilities.nfv.PCIe: + derived_from: tosca.capabilities.Root + properties: + platform_pcie_parameter: + type: list + required: false + entry_schema: + type: string + constraints: + - min_length: 1 + description: > + There are a number of PCIe related parameters that can + have a significant impact on the deployment and + performance of the VDU. These include: + • PCIe generational capabilities. + • PCIe bandwidth. + • PCIe Device Pass-through. + • PCIe SR-IOV as the VDU may require that an SR- + IOV virtual vunction from the specified PCIe + device can be allocated to the VM. + • PCIe Device Assignment Affinity. The VDU may + require for performance reasons the ability to + allocate a partitionable PCIe Device capability + such as a NIC port, an entire NIC or a NIC virtual + function to the VDU while also ensuring that the + selected device is locally connected to the same + processor. + platform_pcie_parameter: + type: string + required: false + description: > + Detecting and reporting correctable and un-correctable + (fatal and non-fatal) PCIe errors to software for error + handling and remediation. + platform_acceleration_device: + type: list + required: false + entry_schema: + type: string + constraints: + - min_length: 1 + description: > + The VDU may have been developed, optimized or + tested with an acceleration device such as a crypto + accelerator that may typically be accessed over a PCIe + bus. + + tosca.capabilities.nfv.network.Interfaces: + derived_from: tosca.capabilities.Root + properties: + network_interface_card_capability: + type: list + required: false + entry_schema: + type: string + constraints: + - min_length: 1 + description: > + The VDU may have been developed, optimized or + tested with certain NIC capabilities to benefit items + such as performance or scalability. These include: + • TCP Large Segmentation Offload (LSO) for + offload the segmentation of large TCP + messages into MTU sized packets from the + CPU to the NIC. + • Large Receive Offload (LRO), i.e. the + inverse of LSO by coalescing incoming + TCP/IP packets into larger segments for + processing in the CPU. + • Checksum Offload. + • Receive Side Scaling (RSS), for packet + distribution between cores. + • Flow Director, for more fine grained (than + RSS) packet distribution between cores. + • Mirroring of packets between interfaces. + • Availability of Independent Rx/Tx queues for + VM so that queue pairs in the NIC can be + allocated to the VMs. + • Jumbo Frame support. + • VLAN tag stripping. + • RDMA support. + • SR-IOV support. + • Data processing acceleration software + library support, e.g. DPDK ® - see note. + network_interface_bandwidth: + type: list + required: false + entry_schema: + type: string + constraints: + - min_length: 1 + description: > + The network speed/bandwidth to be guaranteed + per requested NIC. + data_processing_acceleration_library: + type: list + required: false + entry_schema: + type: string + constraints: + - min_length: 1 + description: > + Name and version of the data processing + acceleration library used. Orchestration can match + any NIC that is known to be compatible with the + specified library + + tosca.capabilities.nfv.network.Virtual_switches: + derived_from: tosca.capabilities.Root + properties: + vswitch_capability: + type: list + required: false + entry_schema: + type: string + constraints: + - min_length: 1 + description: > + The VDU may have been developed, optimized or tested with a + particular vSwitch and may require specifying the vSwitch type, version + and key features such as overlay tunnel termination support. + + tosca.capabilities.nfv.Storage: + derived_from: tosca.capabilities.Root + properties: + storage_requirement: + type: scalar-unit.size + required: false + constraints: + - greater_or_equal: 0 MB + description: > + Required storage characteristics (e.g. size), including Key Quality + Indicators (KQIs) for performance and reliability/availability. + rdma_support_bandwitdh: + type: integer + required: false + constraints: + - greater_or_equal: 0 + description: > + The VDU may have been developed, optimized or tested with a + storage supporting RDMA over a given bandwidth. + +########################################################################## +# Relationship Type. +# A Relationship Type is a reusable entity that defines the type of one +# or more relationships between Node Types or Node Templates. +########################################################################## +relationship_types: + tosca.relationships.nfv.VirtualBindsTo: + derived_from: tosca.relationships.ConnectsTo + valid_target_types: [ tosca.capabilities.nfv.VirtualBindable ] + + tosca.relationships.nfv.HA: + derived_from: tosca.relationships.Root + valid_target_types: [ tosca.capabilities.nfv.HA ] + + tosca.relationships.nfv.Monitor: + derived_from: tosca.relationships.ConnectsTo #??? + valid_target_types: [ tosca.capabilities.nfv.Metric ] + + tosca.relationships.nfv.ForwardsTo: + derived_from: tosca.relationships.root + valid_target_types: [ tosca.capabilities.nfv.Forwarder ] + + tosca.relationships.nfv.VirtualLinksTo: + derived_from: tosca.relationships.ConnectsTo + valid_target_types: [ tosca.capabilities.nfv.VirtualLinkable ] + +########################################################################## + # groups Type. + # as defined within the TOSCA nfv Simple Profile specification. + # BWT:Not supported by tosca-parser currently, and will be added future. +########################################################################## +#group_types: +# tosca.groups.nfv.VNFFG: +# derived_from: tosca.groups.Root +# properties: +# vendor: +# type: string +# required: true +# description: name of the vendor who generate this VNFFG +# version: +# type: string +# required: true +# description: version of this VNFFG +# number_of_endpoints: +# type: integer +# required: true +# description: count of the external endpoints included in this VNFFG +# dependent_virtual_link: +# type: list +# description: Reference to a VLD used in this Forwarding Graph +# required: true +# entry_schema: +# type: string +# connection_point: +# type: list +# description: Reference to Connection Points forming the VNFFG +# required: true +# entry_schema: +# type: string +# constituent_vnfs: +# type: list +# description: Reference to a list of VNFD used in this VNF Forwarding Graph +# required: true +# entry_schema: +# type: string +# targets: +# type: list +# required: false +# description: list of Network Forwarding Path within the VNFFG +# entry_schema: +# type: string +# requirements: +# - forwarder: +# capability: tosca.capabilities.Forwarder + +#datatype_definitions: +########################################################################## + # Data Type. To be continue + # A Datatype is a complex data type declaration which contains other + # complex or simple data types. + # BWT: will be added future. +########################################################################## + +#tosca.datatypes.network.XX: +# properties: +# network_name: +# type: string +# network_id: +# type: string +# addresses: +# type: list +# entry_schema: +# type: string + +#artifact_types: +########################################################################## + # Artifact Type.To be continue + # An Artifact Type is a reusable entity that defines the type of one or more + # files which Node Types or Node Templates can have dependent relationships + # and used during operations such as during installation or deployment. + # BWT: will be added future. +########################################################################## +#tosca.artifacts.File.XXX: +# derived_from: tosca.artifacts.Root diff --git a/docs/tosca2heat/parser_new_keywords.rst b/docs/tosca2heat/parser_new_keywords.rst index 9d572c2..d705d17 100644 --- a/docs/tosca2heat/parser_new_keywords.rst +++ b/docs/tosca2heat/parser_new_keywords.rst @@ -73,17 +73,17 @@ Extend types 2.Simple-tosca new keywords --------------------------- -Some keywords are defined in tosca simple profile,but are not -impletmented in code,except policy type, which are not yet defined -completely now. +Some keywords are only defined in tosca simple profile,but are not +supported in tosca-paser, and some keywords such as "policy type", are not yet defined +completely so far. 2.1 topology template keyname ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -- “substitution\_mappings” syntax +- "substitution\_mappings" syntax An optional declaration that exports the topology template as an - implementation of a Node type, Which is not supported by toscalib. + impletmentation of a node type, which is not supported by tosca-parser. 2.2 Group types ~~~~~~~~~~~~~~~ diff --git a/docs/tosca2heat/simple_rnc_definition/image/vRNC_Definition.PNG b/docs/tosca2heat/simple_rnc_definition/image/vRNC_Definition.PNG deleted file mode 100644 index dd299e3834243914f4c9597a23cc5afd5a60b9b4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10888 zcmd^lcTiN%)-9lbfFv1m5J?VMf*>Hw5QZFP$T0P=&s2)Ai?l(ywqW9FDe|X#B=HnQr3n%hOmg z)V2G*C!LNh4!KExI=^gw5h5)@Q-{xZkXJWsFNIu9O502-*(_PLp$YKuDQGxZEiO1* zDPXd@T&_Qyu5Bd3g=1a)sI;Nr`Ik80psODdmy1PHO+MYfo&_|By&?o|J94{RUYwWK zUDo)Y9!PA}EkudK3(W%0Js2BKH)~Ip1;u0YGn@xHeJfps6^2!YR>sqIxF&ZuCY&3J zZ`^&>)lJ37sMYn!dpGBngg6fMrWO`RKm?BV$4&ED<-EU>3pvjx_-E)62cN+gvd>Qh|2hujmmHyb;~eWo{qXZK#vBs800{L@2aqIE0z z9!x=CJ>{ohjA1JuxF9>XodP$Mi`g|ycv@dbOqF@Vla|KNF-%hG+1!Q1IW!uXUskeX zno9cvsST^4|54Vh|G17stKKy8CPbSCW3OE$0tsl$)rz9$kFIyQvrZ zj-Y$wCa6UJ0+Ub25xDL+;uMD2gzlXZXw#ZW?Chuu@m*Bi?eW^kgln+KXFOfwRXESQ z4Kn<7rEJZrxTcTZ-%V!8glD~zj()IQg6tQPc%6+~)0w!Zy1q|~r9SOA_9+v*ToXys zucm+Z1GeoC+C0A76QR@P5l1I9uNAj+tO>1_SkZ#p6#PS&8v%~K4x3Jr;78hMXb7R# z6h(^Nb{H5Iy|q-K)7KqY>Y%e|qyBk~^wwUctxfqH7)ji!pRhkzD3U{P`atD@eKai0 zLsj{K9%$(Ji&G;{`X(!TapWN5X_Y8F!*kY@>qvP*`KO>fX>8i`@1ki~V;xITrkc$? z*mY~!QQJlzPz|6PmP5hHTwX;4bycIE#FdnU7+~c0OenLByr1ocfL&kLt*>z~@a_~S zzO)qTC9v9#4+<>3;~%FlYOX6qOcSkx2ii!HMCaj|-BAG1ltQ1(1i`MSlPF0Q=b6(eU#fA3u{M8BN;K|P*es1Y>Cl}f ze)nx59fvD95S)#hCZW&xYevJsE+rYqCAsO{6vq(_=zBk8ux zldBDIeF7BgwPIO2qUsmT&GzsaPH*p7Em1z4_tlA`d_V(H;V1rBVP^+r+%kU3G-$<& z3+-=!<%V- zUqSl%*zighe7NM5&uA?0qnp34{~PzKFpbB@$9JW+!#nj#e#v8l-bn}JlQP{DrG^U| zb1M%QH=-mwFP6+MH+*LTd&;19YS?h?ddvPG86e;>hcF}@ z3q-ji@I|*23;g9a!dwIwir9anbd3;r-@4)smkiLnz3qlkJr4Rtpj_}6U~Nc(gBYBJ z1y1e?&AS0KzjK?_VV^LF<%}HH8mM17TknL?Z-LcBelXY(` z8xn@XL=)@d`Mxta?CgZd?Bso>|E|%@`Ra%haa56g2pGTgWHDFD@z)VF5EbOsJJZu} zhHT0S3F*V53daFQwyw#)oc4eAwML6lNsI0#8*sxFR-OIJ~7j-_mYA z^8IXZk8kPs(17y_QDZyfn1m>2SQx64r<}J~{d*Xk!wiCyqrPkDvy#cW%r&&^C=X#! zuE2rCMo|2FG1%UET^^4Qs{y}{&ka1xP~_R3x4Vs;Cyy2qRjj*5_nu3TXkg}nmkx;N zekORj2$@57rwCb4twIM^$A-IO`kF(M^iS4}DTx&jH8tZ&DMYqI^JeliFdtt@P>P4T zY+$WMges%iW0Fs0cdjGV8E#1?R&a6IJeDglx_W=Bz4rX|eapsSXQt&wjhMQ-R1%g_ z6yL)vA@9QDyFSm%9=q}vXv08S&Yazb>$apfCq)|xnk^q82`UB0o1aTDAU24b0 zm-{pPBk}jfl!I;fO{63w=%rBnH~E#7KzWA2ySr{(#HK@>E^}XAuDWtqaQ>QY3YmL@ zjSRJiDFI~?7et1n%8TdvsS_lXrsw=b78^v9j|HaV)Q@kGM#N9a_k+tAfvQe*LI-lp zNVH=m)CRDn;Nvb{E(sD(1ttyHU4`O-8e5)3cLLFdhP)2E7q>3Aq{fm)mZ)K%V$lSz-~m`{|sQh-eaFv$p4 z9YY$B&iK=;NE{;s7SMmLbRU&Zk_ZOc0z5`aIJ>N(ZOgPla@Zh!p!8P0SalmAK>pB8 zJptfO9;nIk-*oIO;M#U=(ISKnFrdZDG(5nO$Kzo*lt6{&+N^8J55Y8PBFF%z34kzf z74(?g1t%LlUA-CzU@6kE>t(-`Mr1Q8jDyQ4uLi>B|6(AZDTH-99o(c$4;3d8GM3NI z&RQes9Yq4Z7URI^H~o^|;H+uQ&V7BQS8A$e7l%<~=&wGh{oMR*nGNV!Y3Hc`A-Zvq z&`OvP)Rgfp+f)MzuT1;QOaY7+1pKzY9sFF@k(2~J`0TP@9F(UMjE;t1fAwUerOEqu zkYxe5(|)^Mr**4{+39-U+oz*#FIdjc52_nXH0G^Nd~xMz0jOlBe#xynyE#=G1-Zyg zlnO}lgb_a6?db`ay>|QPRp41J(v?Gp^Vb|{;Nozx(bsbv5b+2y#)I4CXE&BNG4{eZE$sssI-vVNc|82nQ~XxItA=lsoh;S^#7Inb_V zBWAr5n7}_U*xeCkT>Td%|I~xIDDb@$U@@h}lYepohR8ug4hF_Tu2!kM=g<8M(SNGY zzYu)LG11BlD6B6am_`Snvp>b8VvLM316bS>eBVB&{zdSmqKI}6V72@K_ z3c$q<1KQ{{fLC={%WA&>d~vE}J9YgF@bMLbEF;B#@&BK|M@f(Y0IW`4oQQrtF5U{b zSkn7KQ5tyA8Z~or41GQLfeTVr_9b9PD}9*V?5ID{ ztfneg(`54oxq*PM;JUMOpvg6Qsk%|H7CPCz^tdC0dSa<@A#0w;&S%1$C3-aliVC^4ih03U>W;Ezi= zmXiBf)j@AN3zeLw3@Z>s^>E$UcyjMBw1 zJYRMU8LmF}+*XEC7ZA1`nx-adJ+&BSu-SCpkEb@W^BKe8KFzDLA{H)ZP+0Xo{!m(v zZK&1T!jdz-R+aT3hy`BB1z}5S0ReO4(7Pf;fBK=P)1@oIE7z>$+Pgt;jdlCgKFKVQikAkfor)Uw8@jM=C#;!w>J+ErZz0;;H@tg?9aI)uZ_@es1@Er zvY6*+xD4_RP2fuiX#^@etr+Kbp4uf{ZVpy(TUy%u;S4}fmTGFEN9T|TCi=3C9aGr; zC0D&8ZfGS5=uZMy_DG+teYkTm&;C;H<~Ea;1*ns+H2S%O-YZKF+uDc!<`IKchkZ3V zK(78N42JPK(W(>wk@}9lw~LM9|GmhAFgga5-ztH${X<3m8%;P6!JO;1Tf0(3A%_=h zwnV;jFR7;kPB%Upx4k*;me^X(x+rMuYx2mzOnvr0jk{qi5e_)&xRvQqsA+Blu5n+9 zQCkIp9;dpfqCh_x{6LBUCl}lw)LWDgqTz+N7J+ixS5Sns8rLNwBAbBxG#3I9cOcv8Nn(%3^(wvpWl0>tMMKofm|7**)112*HS@AL-(& zlj<@CCzK}!VXEq*hKrShi8B<{v+DVyS#^0&^16hhWdm`ssCyMCdxND2ZF)rdQG5F_H!Mm*_b(hs!_Pg+?Ea$=yKhal;U+kG>+Zm^t7`fl}*G zG}t6qESs4OOxGFD+7a@v>2C~$FYdqPReF81IM`})T69<5xQ37bbX*=u*u0Q52i{RP z9DIj?fnA4!3%$O?mBjYX7=%4RFW~k#umOUa57D)W};(u?WrC_4AQDm0^RAjG$sIv-dK=LtI!$-HH2ODXv`s zH5))O=m2hQzaAeg7L190j$i=T(PJQ6;yv00R)R2=+6#05<=6+1c6fkV!3GEUCgBYc zK;v`)^fZKtrY2kmi>pCOfNi?IAwas^Nmbzxa57X*=1Q8#1KPmP@(b`_TAWG@fStzx zIqY1PvMWa0YKjqr0&&y=3*p(f+)^@-S}7+vVEBhNfUo(_GHQVRvjxFxph+yygd;;m z_Zm{UK*a&DvIF?HLq}bT4WdkZM+opgBoGv`Lqfv^E*#Z8_#6ieR|fV8%44((&oQ(u zIb6Uyv6Q`#k+^ev99krkl;6>$TaTpA-tuC>jeF^Ud8y)j0wC~PxPlYP2sVMhMVMbGgywmFtxZnx`vW4y<2P`0MwM7NQ`> zi?OBk2Zr>#;^mY-fBuwh?HTW=48hosl=$yC^P8R=J)Q=;AaUqmbSm~Kc?MFz+@Jh< z1#wjtGO9Ue^!3mJikf^@98L z4Uesc>*|kJsWt34Myd)LUlLL4O8H2W$H@eL1;$lZ(uZ{e2i6&Lgj0x#{9f7Lbsd&X z$q|6Sg_48C{n||2Z`|^`1(X>!!CO|GS2uBByuj*6*nzL2|M$5-j9E^ZIoae7+@DB4pZANo zBlDJk@@U%#qE~tAQlAB!T$XaM-z(J5=A z<_ha+J`P}|DQRswDnQt#rpohXw6nHJ&PS8IarR!wR4EX(eAt{9`$aN!`B@%op1pjr z!C|DVLBm2;1+?kZA~s+GRV8_7Bis6Opyy$2>1f|TL9VF>1K2QuFY`(Ih1t`t1UWk5 zXP2xgpOT0s7^R1)u1&b)J6A7EE zd+e!+S$5UuT|8sm&szsySar8(tWDjTc}B%}YGp-Do@7-tniP3{CyKgkACn!)9JIJ* za^dANUQ_e#@tE+WSb&dH)k$vrE@EeeN8Kj)Nfa$LFAgkIvCL~O9I@DUdv};su>R?5 z-Z$<}zIn$H(zhfGlhe~6B=g0^UK9Kd!%y*(hc*djzvaiQEY)yTjrSM&z~jcW5~4=L zr>&prPOpZa4YaR(*S4V4Iu@2Zec7!~A=-Nw)i=#^d2wVxMk2WJ#g-Mk107=4JIv-D zU!QL29<6W}@#;ShaY*(;#1Q{jZu&U0lLxm*jAAxn)eTnEw2UvpOWll8+-qa-=={ zc$QwA|Az4EgW^qAF9vt%Jn6{_C7M_;$y(MFCu(Z=IL6DN zVk=>l8Tl~maLR-(pg>&BtG&S1jCN_kW@P0NIHx>4r^c?_cr7p?L5Gda##h4bLUx{B zW`HkzFf|kbB0ZRlT2W6dhHS9TAPlC{UiOiJ9)A_|=)Y-hZBgZx()UyblpQP3(x@Kf z@iTxl+b1Wj)%)RLhXXc9jU@E=ntBwAgvpch&#!ixdueuz_nD$e=BxVPN?Tj~Q311q zjLrCnMdnjoF?HsNWW}GdZ0iN}oi;%mb>DWF{8i&emBOAK%WSp3v=Q6s4jNmG@R6A6W>S|F}B~vfpm4fc57)T!9D;W6H+^TtaW(`IzW95}|DedGu}ORuERxw!K*z za$1mmq1`eW=f`s1kgs9sl|B@cte;=U>Q}V|ZykClbrgp{=2VEh=;U79goVCJr&@Ox zhIFfG?ML~rqSLdFOT_#iRJtX-uMo?Z>b}#}0Qr1putJ`}c3|pJWJbGSPU8V9RCLnv zJL`ar@w6!|-p0iS38iOYp!>o#{E?Zx5i-ez;UTeC`mbPLrt3QTcWEoQ(jK>}MqJ0( zn7mYQwW8Tj>-5aE@bvPk6|^@uJTF7gnOnR0A8JdZNx{bg%t&n9kN4Wc0`3wNw)~Yh2_H?UWi0 zy}v!Vy0OgyvHtF;W^+|HJn!#;MzU#9`1{T2;hi2TW4i3uHt)@_KfLn=xKKksh zo}V60*mhbQVIxH*_JtX6=>T=`es457FIYW`09+qBDS$Y0zxVwA z*@t&c}U{udT%D~lN%9t4iKCO{_J{O_LVQ-xe7FJUYi2e=7hgWuk4T+VQ}g?u2|9xwAh3zqh;t3zxvH|C5R5HE zU9N;XI;`xx4m>;rBpwG9-f?pysl5!yKy69r7hQohLqX}a7I?YEdi&T7e%)OKpzrFb7~?lMMu6%Z z|9+M?BJGajb(pL+<|d)T@4V>%vPHy6K=?LpD8OPn=(gWV+1B0!KdBA0V@LDQ3}A&t^BI1OAYqTj!|iMim&~TyP_I|0VwTRoAY^U;1lPV3w>|0 z{T+bl8hIT4dMMrJQVb5qNzpOK`AuvSrbg4GE_b-i&c}Jr>w)7w8ugQ-E@yweK;EZ* zgWvWdp1)}F2ZYP%k=s`c7Gy9|fCLX{Nxf#JANnu?@wGG$EacOP`vF;$i61fIb+yo; zR*U7(gcj4>Qqaq{J1MLjVD2;3v7q%3osBt>SWSaQ>zH;;CPvM#P1wFBTtguP%kH3; z(Q-soE|*V6o5S`&0}}H2KOMfqN#D7X6hM2(T-W+(`y8En;>I}DFXQwCEgmS?7J3f~ zec3O5z9zXET68xO@y1=w?a8M_ZP2&t8zWE3{M5ecIZGtIDncPz9-3PE`L3_Z_&+Z9 zlV{|ah>T5oBOUF&9K}fS6(u~55yr#erwWU<7^YGYcJY(*4VlcBLN4IkI$p6!V@$I$ z^lebk=e~c(HcJSvzmWqd^)kGg-!lg-C%y`Xrq)VHJ-L||bkVvOPF|8Pxp=@A3Lowd z(aI@Q6p=QQ=H{xH+XfGUFdu zxy7NfR3V+PNj$z(AMwlF7xB zN_|$ca-ZWAKTW~wX2qOVYvD5p&W-r@ZP=zc3fNH_gY15v7#rJs4rfR(2eS;i(C)d|*eyQAPn1h`v8)d6H*k zJufnxhQc$k4>`CuU>1Lvw)>XTvR1LvS3Ebe1FtOS2@;!hpQe0zO*c4AtS1$>&{W%w|jje9OICd1xEIze&L~anSPT==6YiFS8QD=HB7fHz}x6yIb8 zl^8B8AOfWIok+r8wYqmf{@9#jf;Nc)4X$sgqE@(_yU-{r7Pqfwmw2k%68hQsw#e|* zN@Ncd1k+t%_|+dU!(=j&qvbj6{d&-ZazC?OaoBfe^O>$?L6ozi|Ev2}A>E?($y|2I zlHi>KbS;mMvW@msQ`=x)AKLcZ=@u$w%EZngi{8xC>Q$$2v(JllBbvverd*r~-Bs-; zx!=RV%8adT0!L9$ggCj6(`lTWDj7fFf{Yn1vL<$38|2NiSs~&qo*%JA)Su2vBeGqA zOWL*!nOXN7P`jPf%C@2q-4-mko}iIby_LpCUpiJ$cY4zegw!n65JQPPEEX7O%XupU z-j7>X7kXsv%fpF`(-@vUGLSoo@OkiRavuPeu}>WaUzLh0rQFV2_6IPwq4|Z@5Tmed z=26=mPk>*CSmfSUIHoZqhgeUpfRT>R3ghr@-X-7{Cx;bu`tFoeN<4P3PwO6|icaSb z!k|LDaX@2BmU1V#Jx`;y$Y+-dULQC4S}owSO_PwAH-G#VbKn#-E%3$!b&bx$)aIy^ zRRO1fr9(nCaqMUD7%5nl1a;HFE5HXSZkS+dJii*T$aCpFz;9n#f*khPe@c&v%60=+ zKTY?}o;LzR^2fzW8H6zTEbPw^li|ik>*?sC^ z>W(*vf@W23S?}%fm9Tud4tA9|^q6?hbwp)7#$Z?=8L%rkHxS<;%IT?-Gzp?kB4rGWPA2c-KY4zs!ksK6Z zaCI0Mn}md;O#v=wz*^#Ir5Y~=PF7Z$M?(Qg>mTeLEc5Rb2EDt|1&70OS95(9f-pX( zZ@&Nju!kJXRR~adM?o!e!a?9KF8k*FHxc=Q`2XmZw!pVb*O6CDfv$=)ITT0h>L`$I zTl-wwnE|ftJQFSU`(X1Qrcj|~%_S4;1JHuUksqg{1$2I(ZMoRPLvV`#-UT+D&F@1P$S$>iRMc61by_{woKAEgS49y<5{0JQUITpVkyDY Kr206Pi)|hK6){`;D;>yvZ$eE|WkwMIJ$XIKiVGX^&L|g~T zSc5$$3rdKlY3K$u-8%K}g!;%zs&#ALoSdjB5 zoFHe&1#*Slf-5gOocE9u=B^L2;w9&&=5As5IMa>{3kPGArxdjw1JDm5B6XXoJK(3Hmz~s8ac@H^3&X5b_ z3b`3V=i3hFJ>&#ALoSdj>($}8FGQ}-z}iE+u^*2oFHe&1#*Sl0(Scy z&U?rSa)w+WSI8|OdD`K;hnyg1$OUqR+ybuW9nO2m337&9AXmsOpnTckyoa11XUGL| zh1>$>*B#D#$O&?WT#`TjuTBc+onbFYYWqv-nmGvmu?mL_C-2neh-KUS{A@DZYpo@iHU4)Z#_Fh?hAG z%+b|;r1&CU6kp~rFh^JMMe#+vD89^LV2-Zhi{guTQGA)hz#Lu07sVIxqWCh0fjPR0 zFN!bXMe$`019Nm0Uld=yix-#9x$+9SKjQs$j_FgAPuVm0n7Icd4~0)zpVn!~_>xb% z_%6S>D?1upwUH z3=E0mhwCtSI)r}1^en+^ETMRJh$|faf&+0hUqPJ?#;n7{%_yB=iC$>x=?b{ENbMgx ztrBwH<%QRG91iEnYv)yt85l-%1rp*(Xn+?AtR1xJ4u%;>qeL5xn^1|r5J#<+Sx&c| z8GFMQzI0V)|EjcY%9ye7SkF8-KRS-rfUOO^-#f#2Y{D2X)(~0TRuyJt31v(imGIKt zA*LT3h&IfaO}M?V2C!liXYa;FW53}g2YJxQT!yYN6t%+zmpZ<~OObLZH~?H4gTNuT zadHD?Rg?O>G(B7%w^!B#UYO(kL}Ot(%;G+=;LQs>ltK%^ZH^In1AKLL=Kvhh=Nx@G|<# zYFHZwj7-eua0NQjZ{NX77%q-sxEPBExlDzRW5f-O3XC$wmzEcFv{_@y0H2*2_c277 z6&}oMD7K!+8Ix$=`4Xn@*Fk7&`DH%~V{BzS?xc>shZ&%~x zag*NIe#GHIayTXM;@a>+C(%I`tM3khlY{dxNt-IC2efcPz-}jRGp8F^69N~#;jA+t zv>oYAmpN>)!+ZNt$s2(KGG4-SXW%+K`f>oFjB(-?!9Ih%*k0{L6l{=YBSjOZPCo2m z2o*@dQ}JbZX_Ke@4licJ_VO?uD|0-!y1)D1syE0>QHJ=6nIm;Vv*T{nb4Y2AYjkK8 zx>>Ij4&qB`v%o{}JLA?p@9a^JN~KFv+_kX2MtX-A3ot~w#N!rTtYI7>cyKM-*RcS@ zc8T7&jF(u~GIy^i*~@Hne8A>lkM_aK<9-x+-(N1}_Hd9J)zR{Xo_84$5fnHl9I)bH zZUs&;wJQofT8D%-BZHoOC$+o;`|l{V*57IVZ1p?5V2{9biyX8RTqPVZ0UR-xI9$9E z8Oh#5UdCVw15j6x!|%z3a5SaK_ElB)kfM{lU~*g+ZOqRKCYcYEkhs z7N6G#o805Yw!_QgxPDRTJzjp~6vfNx%O+m*{~PB(CSJsgc+vY`<}ffvSMf#hMZ74! z%wb@TuHuX0i+E9dnZv*wUBws07xAL_GKYaVx{5D~FXBbz%Nz#g z=qkP_zK9pampKf~(N%m=eEA$NhwR6v!>2y4maI1K|60xRmkb}ivefPGli)J!ofq*yQSftWil=3jCgsw;9sl3qJWorYrp^(^72(+#LL&{c+;C}LS8lo3~@1D zz6gwXd9&hQs_?|ccmXh;_wW)XVzKYD za|->$%h&uj+*`a1`$e_G9uP0Xeo^hP2gJ*;UsOBn0r4{I7u61XK)ek5MYY2o5HG`i zQSGn?#LKW>R6Fbe@iOce)ed_=ybSwAwZk3|FT;LO?XU;L%dlTmJM01RGVB-C4twA? z^O7Y$KYixy-gWJN;>3pmomRWZ|DS&I<;ZhBWv~t1Pko&#-wv{k;m;XGGL4L3E%6du zEnbHC=+}xD@zQ5vtSnx{%NQU1Ht`}}`b>3#xbLu^gNgx;Ca*;EbCIGTNAPixmGb09x&&P4iOPB=X8tSo9*T zF!UVX;sKgeJCHzO4f)h6#Ob8O++w(DFVvdoYo6LC~{xzby^)a2@O4Y0uL~ zzlCcz$3=MIoH)pw2k%lIIWkr=5u|1|VREdbA4nADX}5tLgC@;T-|i0BDmhuR&w8ZR zFq<$_^g<$jH0mDCX-f;%gTBqMrBe%d!f4wb&}}Z+KmGH-Ak|6jH$eJM9kY-18E1A+ zm=NyhFbHpPfrOA7OKb|xu))Pj+(9!q#AzoslfqqsB}k@^stt^8Em_ z7%v=SxG$RUS=c@t2G`*wMnoGaM$F9>qeX8VVT5xNz?4q_ zaPAM}1veQd#0hd&rWa6SyNUV9?%oQYUqZ<=84OC^#|*2idE~|PQ(FSG=PeJmDWMZ~ z{oJ88MU(Y!cwswC@!o$YEw&$V!dS8lr?9o!wiK?K<2kKyMwlF{b1K+m8eZTiVo#q@ z!hycP?S{7CEH(`DlBdu$=Y}2WXYEJ!Ac~((z~t_CPsoNcr(LFKcW@kz_Qy(;*sIG6 zcwpj7$P}$`KA$bI`$x~=5rt+=*uUGJvhZG7l$WBk8^0NP45J)3#)iA4ot%xvfpE+T z!Y5s{K`;$EgY)e;FJ+}U%R0tcTc&YN<3V1jgqLWA20Llf&o3ds+@CKxKJ2V!Bz@cOwO5bk$>pOe)xzJz3>?S#R|1ENx^(>Zr4-#Vw&D|=U~HXUDZ z!yqJXA>qGIj0|H5UPjDsscGB1Y{^q2V-YX?|5G$v*8e{W5Q&#zKKixdMZENx7%Phx z@iN9ozfHV|mp&6?W$_|j#`x&Bi5KzGXJV`@Uc}27AN@A*B3}ATjFrWUcp2lP-zHwf zOP`6cvUm|MV|?`6#EW?8Gci^cFXCm4kA9nY5iflv#>(PFyo~YDZxb)#rO(7zc^O^~ z*-uZ0&;6cFvD(a&^(>F^@KM_$yx=Y9KR#6-d1|PjCfgn^=Dte)`Y=j zgTRQF*~__h2ao7t@rA&A@-ck1F^ZSfT>CY{TYPxIjKs^=mUXq>;$=10{z}8*fKlz3UqwZGD^c=?sfy4s|~%WAIum4?O3uUyvECM8~0bM3D* zEM9))vaU8M@v@q0f2CpZ@++5hwMmJWQP<*odPmz|u2H;;(`9o@l{@`95CQ}-)npkIz9!2w>np~$A=z{yu0ndBj0s~pZ%!ogTuK-G-5Be7rae1&n#vfQ>=eRUKlPOdGWq>2tlss@?!A_b&4-r1f?0%;=B}@2O&pyq75>?ja#ifs{Vc*C5SXG6uKJHh}DZ4q!pV8Ip=_m1$e`a;&_Q9J&=60E> zFJ4ySrSQJ2suBxW`Vy%qJ=PNM?Li2@y9mQFIlim8L_Jh}frBN7zErYGxv=!Qysp*Yl=KGv|%LABY+`h&&iwmKT>pfJI)>h63Z1L0yxXgs74Tsm*no!hZ!WgP zN&8V`W?5cByh!m>kz)68cw(_v)V6+cJK`>s;eE{vF`dh48{56?J0=is$>fo$8t_!5%G=S1MMy#EW>DfJsylFXAP_Fd-ve#LEOsqKbGCFA;_b8Sx@s zCSVd(#EW=|FigmZ7x6Lylc*wI#7l%>LPorZmkF3e74afoA`BBU;zhhnz$B{pB->ir z-iQvp-vasS?~_FD|G*4CCbX%PB^f?xvaQrx*H`AH=Zfzx;!|u%ntlKGo{#!Lyo|c% ziH*RePU@`#BVL|}#Mq^X3wYT&Fyduw5uev)xR95P10!CZ$Hdr`!Y|O-k7=euzuz&| z_nB?t<(c08=vrU>@zsy)f4yD2eBFo3Sr9MF`SKMkiI-Pc<>lrmUY7IaD_9aQudvF? z%~8B8=gU{HBwk)&m6w~Ncv;SuuV6{MyuvCkH%IZZoG)L&l6ZNARbFn6;$=BszJew3 z@(QcG+#JQra=v^8OXB4fR(ZKOikIbl`3jcA%PXw%a&r_f%lYyZEQyy_SmovBC|;KH z<0Y0Dali}X4jy*jPvRvm z;ZrkD@~fme#1+OM;Lq5#V&=v;nXuSth7|E;!9-miM&*44-H$+l$%s1*{dIf zAwJ+*zSDNkx?Zn)%NjZH@-4iqv6N4-DPF|O9MHszco8p=fjOCHKEKRaqD|>4zC@(N z%LFpTi+GuUNmLOp;w8c`AtPSI%LGiKig*z(5rzpF@giO(U=mfti+G7JOvs2A@iGCE zs3Km(ON3!UM!blZ37A9`@giO#3==ZqMZ8SFB&vuP@e*N}kP$C;Ub0f@BM%()dDs@1 zG*kN61Fm&fIKS}kA3ZukrAZzTFO%FPrN#r|MJUYifOwhXE$NCEF)+si;$@Dvq$^&; zz#I>VmpR^&u6Pjxb37nk=6FlG;zbP1@ql=l<1Oim7cnr$1L9?lx1=jx#K0U6h?hCu zlCF3W19LneUgmg9y5i-BFi;)y2_vnJz4uQ}=rc=2yv%afm~z!?d{gdMboB2{X{VN1 zD_3YQoMk)h)`?9`VpH0Ce|Fop)LFbN<;gm$Ylokp$sF!+SJX#*@w?fski#nGJQi7j z0DvRD$J^l#zbn86X00oZ9tW4#p{ebgXI1EWbjONToy$D`@&X};O`&W}#A>k#4H*(I zLtgnzU3vf>hni5-4J^&QjwLL7N}SMOrg?-kC(?x`9F4iWZGsYzb4BP%q;d}(7uvIw zA;+wmDK_D6(zf-P`Gr2><@3IK>{`$@@CT7s=DuT1mVt zGh15G>yi?8o;-z)t4?SZ~;VOU_UK}*sZkRZ+e~An nEq2aT(Nfr{Tsf=wva*AJnR)T@%NBIy>4=w=9sJA8C&~W<9!01> literal 0 HcmV?d00001 diff --git a/docs/tosca2heat/simple_rnc_definition/vRNC_tosca_intro.rst b/docs/tosca2heat/simple_rnc_definition/vRNC_tosca_intro.rst index 7dde943..d81e530 100644 --- a/docs/tosca2heat/simple_rnc_definition/vRNC_tosca_intro.rst +++ b/docs/tosca2heat/simple_rnc_definition/vRNC_tosca_intro.rst @@ -8,30 +8,30 @@ The simple vRNC topology is shown below: |vRNC Topology| - vRNC includes four node types: MM, LB, CM and DM; - MM: Stands for Maintain Module, which links to EMS\_network, CTRL\_network and extermedia\_network. It composes of active vdu and - standby vds. + standby vdu. - CM: Stands for Control Module, which links to CTRL\_network and intermedia\_network. All CM nodes form resource pool and each node - composes of active vdu and standby vds. + composes of active vdu and standby vdu. - DM: Stands for Data Module, which links to CTRL\_network and intermedia\_network. All DM nodes form resource pool and each node is - a vds. + a vdu. - LB: Stands for LineCard Module, which links to CTRL\_network and intermedia\_network and extermedia\_network. All LB nodes form - resource pool and each node is a vds. + resource pool and each node is a vdu. 2. vRNC Definition ================== The files dependency and correspoding specificaiton of vRNC definition -are shown below: |vRNC Definition| +are shown below: |vRNC Definition| - TOSCA\_definition\_1.0.yaml should be the lastest version, which is - updated by tosca-parser community, but some keynames (such as + updated by tosca-parser community, but some keywords (such as substitution\_mappings) in the correspoding standard of - 《TOSCA-simple-profile-YAML-v1.0》 is not supported. + "TOSCA-simple-profile-YAML-v1.0" is not supported. - TOSCA\_nfv\_definition\_1.0.yaml is a new file, and not implemented in code, and the correspoding standard of - 《tosca-nfv-v1.0-wd02-rev02》 is not complete now. + "tosca-nfv-v1.0-wd02-rev02" is not complete now. .. |vRNC Topology| image:: image/vRNC_Topology.bmp -.. |vRNC Definition| image:: image/vRNC_Definition.png +.. |vRNC Definition| image:: image/vRNC_Definition.bmp -- 2.16.6