merge
authorManuel Requena <manuel.requena@cttc.es>
Tue, 29 May 2012 10:42:17 +0200
changeset 8821 09aadc95a3ee
parent 8820 1a0fbd940a0d (current diff)
parent 8817 9df898a16370 (diff)
child 8823 c49104e07bcb
merge
src/lte/doc/source/figures/MCS_14_test.eps
src/lte/doc/source/figures/MCS_25_27.pdf
src/lte/doc/source/figures/MCS_25_27.png
--- a/doc/tutorial-pt-br/source/tracing.rst	Fri May 18 10:30:14 2012 +0200
+++ b/doc/tutorial-pt-br/source/tracing.rst	Tue May 29 10:42:17 2012 +0200
@@ -2996,10 +2996,10 @@
 Mas os objetos internos são inteiramente diferentes. Por exemplo, o Ptr<PcapFileWrapper> é um ponteiro para um objeto |ns3| que suporta ``Attributes`` e é integrado dentro do sistema de configuração. O Ptr<OutputStreamWrapper>, por outro lado, é um ponteiro para uma referência para um simples objeto contado. Lembre-se sempre de analisar o objeto que você está referenciando antes de fazer suposições sobre os "poderes" que o objeto pode ter.
 
 ..
-	For example, take a look at ``src/network/model/pcap-file-object.h`` in the 
+	For example, take a look at ``src/network/utils/pcap-file-wrapper.h`` in the 
 	distribution and notice, 
 
-Por exemplo, acesse o arquivo ``src/network/model/pcap-file-object.h`` e observe,
+Por exemplo, acesse o arquivo ``src/network/utils/pcap-file-wrapper.h`` e observe,
 
 ::
 
@@ -3562,10 +3562,10 @@
   		uint32_t deviceid);
 
 ..
-	You are encouraged to peruse the Doxygen for class ``TraceHelperForDevice``
+	You are encouraged to peruse the Doxygen for class ``AsciiTraceHelperForDevice``
 	to find the details of these methods; but to summarize ...
 
-Para maiores detalhes sobre os métodos é interessante consultar a documentação para a classe ``TraceHelperForDevice``; mas para resumir ...
+Para maiores detalhes sobre os métodos é interessante consultar a documentação para a classe ``AsciiTraceHelperForDevice``; mas para resumir ...
 
 ..
 	There are twice as many methods available for ascii tracing as there were for
--- a/doc/tutorial/source/tracing.rst	Fri May 18 10:30:14 2012 +0200
+++ b/doc/tutorial/source/tracing.rst	Tue May 29 10:42:17 2012 +0200
@@ -2168,7 +2168,7 @@
 Remember to always look at the object you are referencing before making any
 assumptions about the "powers" that object may have.  
 
-For example, take a look at ``src/network/model/pcap-file-object.h`` in the 
+For example, take a look at ``src/network/utils/pcap-file-wrapper.h`` in the 
 distribution and notice, 
 
 ::
@@ -2566,7 +2566,7 @@
   void EnableAscii (std::string prefix, uint32_t nodeid, uint32_t deviceid, bool explicitFilename);
   void EnableAscii (Ptr<OutputStreamWrapper> stream, uint32_t nodeid, uint32_t deviceid);
 
-You are encouraged to peruse the Doxygen for class ``TraceHelperForDevice``
+You are encouraged to peruse the Doxygen for class ``AsciiTraceHelperForDevice``
 to find the details of these methods; but to summarize ...
 
 There are twice as many methods available for ascii tracing as there were for
--- a/src/buildings/bindings/modulegen__gcc_ILP32.py	Fri May 18 10:30:14 2012 +0200
+++ b/src/buildings/bindings/modulegen__gcc_ILP32.py	Tue May 29 10:42:17 2012 +0200
@@ -3989,14 +3989,6 @@
     cls.add_method('IsOutdoor', 
                    'bool', 
                    [])
-    ## buildings-mobility-model.h (module 'buildings'): void ns3::BuildingsMobilityModel::SetFloorNumber(uint8_t nfloor) [member function]
-    cls.add_method('SetFloorNumber', 
-                   'void', 
-                   [param('uint8_t', 'nfloor')])
-    ## buildings-mobility-model.h (module 'buildings'): void ns3::BuildingsMobilityModel::SetIndoor(ns3::Ptr<ns3::Building> building) [member function]
-    cls.add_method('SetIndoor', 
-                   'void', 
-                   [param('ns3::Ptr< ns3::Building >', 'building')])
     ## buildings-mobility-model.h (module 'buildings'): void ns3::BuildingsMobilityModel::SetIndoor(ns3::Ptr<ns3::Building> building, uint8_t nfloor, uint8_t nroomx, uint8_t nroomy) [member function]
     cls.add_method('SetIndoor', 
                    'void', 
@@ -4005,14 +3997,6 @@
     cls.add_method('SetOutdoor', 
                    'void', 
                    [])
-    ## buildings-mobility-model.h (module 'buildings'): void ns3::BuildingsMobilityModel::SetRoomNumberX(uint8_t nroomx) [member function]
-    cls.add_method('SetRoomNumberX', 
-                   'void', 
-                   [param('uint8_t', 'nroomx')])
-    ## buildings-mobility-model.h (module 'buildings'): void ns3::BuildingsMobilityModel::SetRoomNumberY(uint8_t nroomy) [member function]
-    cls.add_method('SetRoomNumberY', 
-                   'void', 
-                   [param('uint8_t', 'nroomy')])
     ## buildings-mobility-model.h (module 'buildings'): void ns3::BuildingsMobilityModel::DoDispose() [member function]
     cls.add_method('DoDispose', 
                    'void', 
--- a/src/buildings/bindings/modulegen__gcc_LP64.py	Fri May 18 10:30:14 2012 +0200
+++ b/src/buildings/bindings/modulegen__gcc_LP64.py	Tue May 29 10:42:17 2012 +0200
@@ -3989,14 +3989,6 @@
     cls.add_method('IsOutdoor', 
                    'bool', 
                    [])
-    ## buildings-mobility-model.h (module 'buildings'): void ns3::BuildingsMobilityModel::SetFloorNumber(uint8_t nfloor) [member function]
-    cls.add_method('SetFloorNumber', 
-                   'void', 
-                   [param('uint8_t', 'nfloor')])
-    ## buildings-mobility-model.h (module 'buildings'): void ns3::BuildingsMobilityModel::SetIndoor(ns3::Ptr<ns3::Building> building) [member function]
-    cls.add_method('SetIndoor', 
-                   'void', 
-                   [param('ns3::Ptr< ns3::Building >', 'building')])
     ## buildings-mobility-model.h (module 'buildings'): void ns3::BuildingsMobilityModel::SetIndoor(ns3::Ptr<ns3::Building> building, uint8_t nfloor, uint8_t nroomx, uint8_t nroomy) [member function]
     cls.add_method('SetIndoor', 
                    'void', 
@@ -4005,14 +3997,6 @@
     cls.add_method('SetOutdoor', 
                    'void', 
                    [])
-    ## buildings-mobility-model.h (module 'buildings'): void ns3::BuildingsMobilityModel::SetRoomNumberX(uint8_t nroomx) [member function]
-    cls.add_method('SetRoomNumberX', 
-                   'void', 
-                   [param('uint8_t', 'nroomx')])
-    ## buildings-mobility-model.h (module 'buildings'): void ns3::BuildingsMobilityModel::SetRoomNumberY(uint8_t nroomy) [member function]
-    cls.add_method('SetRoomNumberY', 
-                   'void', 
-                   [param('uint8_t', 'nroomy')])
     ## buildings-mobility-model.h (module 'buildings'): void ns3::BuildingsMobilityModel::DoDispose() [member function]
     cls.add_method('DoDispose', 
                    'void', 
--- a/src/dsr/bindings/modulegen__gcc_ILP32.py	Fri May 18 10:30:14 2012 +0200
+++ b/src/dsr/bindings/modulegen__gcc_ILP32.py	Tue May 29 10:42:17 2012 +0200
@@ -10281,6 +10281,8 @@
     cls.add_constructor([param('ns3::dsr::RouteCache::Neighbor const &', 'arg0')])
     ## dsr-rcache.h (module 'dsr'): ns3::dsr::RouteCache::Neighbor::Neighbor(ns3::Ipv4Address ip, ns3::Mac48Address mac, ns3::Time t) [constructor]
     cls.add_constructor([param('ns3::Ipv4Address', 'ip'), param('ns3::Mac48Address', 'mac'), param('ns3::Time', 't')])
+    ## dsr-rcache.h (module 'dsr'): ns3::dsr::RouteCache::Neighbor::Neighbor() [constructor]
+    cls.add_constructor([])
     ## dsr-rcache.h (module 'dsr'): ns3::dsr::RouteCache::Neighbor::close [variable]
     cls.add_instance_attribute('close', 'bool', is_const=False)
     ## dsr-rcache.h (module 'dsr'): ns3::dsr::RouteCache::Neighbor::m_expireTime [variable]
--- a/src/dsr/bindings/modulegen__gcc_LP64.py	Fri May 18 10:30:14 2012 +0200
+++ b/src/dsr/bindings/modulegen__gcc_LP64.py	Tue May 29 10:42:17 2012 +0200
@@ -10281,6 +10281,8 @@
     cls.add_constructor([param('ns3::dsr::RouteCache::Neighbor const &', 'arg0')])
     ## dsr-rcache.h (module 'dsr'): ns3::dsr::RouteCache::Neighbor::Neighbor(ns3::Ipv4Address ip, ns3::Mac48Address mac, ns3::Time t) [constructor]
     cls.add_constructor([param('ns3::Ipv4Address', 'ip'), param('ns3::Mac48Address', 'mac'), param('ns3::Time', 't')])
+    ## dsr-rcache.h (module 'dsr'): ns3::dsr::RouteCache::Neighbor::Neighbor() [constructor]
+    cls.add_constructor([])
     ## dsr-rcache.h (module 'dsr'): ns3::dsr::RouteCache::Neighbor::close [variable]
     cls.add_instance_attribute('close', 'bool', is_const=False)
     ## dsr-rcache.h (module 'dsr'): ns3::dsr::RouteCache::Neighbor::m_expireTime [variable]
--- a/src/dsr/model/dsr-options.cc	Fri May 18 10:30:14 2012 +0200
+++ b/src/dsr/model/dsr-options.cc	Tue May 29 10:42:17 2012 +0200
@@ -802,9 +802,8 @@
               rrep.SetNodesAddress (m_finalRoute);     // Set the node addresses in the route reply header
               // Get the real source of the reply
               Ipv4Address realSource = m_finalRoute.back ();
-              Ipv4Address realDst = m_finalRoute.front ();
               PrintVector (m_finalRoute);
-              NS_LOG_DEBUG ("This is the full route from " << realSource << " to " << realDst);
+              NS_LOG_DEBUG ("This is the full route from " << realSource << " to " << m_finalRoute.front ());
               /*
                * This part add dsr header to the packet and send route reply packet
                */
@@ -1355,11 +1354,10 @@
       /*
        * Get the error destination address
        */
-      Ipv4Address targetAddress = rerrUnreach.GetErrorDst ();
       Ipv4Address unreachAddress = rerrUnreach.GetUnreachNode ();
       Ipv4Address errorSource = rerrUnreach.GetErrorSrc ();
 
-      NS_LOG_DEBUG ("The destination address and the unreachable node " << targetAddress << " " << unreachAddress);
+      NS_LOG_DEBUG ("The destination address and the unreachable node " << rerrUnreach.GetErrorDst () << " " << unreachAddress);
       /*
        * Get the serialized size of the rerr header
        */
--- a/src/dsr/model/dsr-rcache.h	Fri May 18 10:30:14 2012 +0200
+++ b/src/dsr/model/dsr-rcache.h	Tue May 29 10:42:17 2012 +0200
@@ -493,6 +493,8 @@
         close (false)
     {
     }
+
+    Neighbor () {} // For Python bindings
   };
   // / Return expire time for neighbor node with address addr, if exists, else return 0.
   Time GetExpireTime (Ipv4Address addr);
--- a/src/dsr/model/dsr-routing.cc	Fri May 18 10:30:14 2012 +0200
+++ b/src/dsr/model/dsr-routing.cc	Tue May 29 10:42:17 2012 +0200
@@ -1034,12 +1034,11 @@
           if (optionType == 96)        // This is the source route option
             {
               dsrOption = GetOption (optionType);       // Get the relative DSR option and demux to the process function
-              Ipv4Address fromAddr = GetIPfromMAC (Mac48Address::ConvertFrom (from));
-              Ipv4Address toAddr = GetIPfromMAC (Mac48Address::ConvertFrom (to));
-
-              NS_LOG_DEBUG (Simulator::Now ().GetSeconds ()
-                            << " DSR node " << m_mainAddress <<
-                            " overhearing packet PID: " << p->GetUid () << " from " << fromAddr << " to " << toAddr <<
+              NS_LOG_DEBUG (Simulator::Now ().GetSeconds () << 
+                            " DSR node " << m_mainAddress <<
+                            " overhearing packet PID: " << p->GetUid () <<
+                            " from " << GetIPfromMAC (Mac48Address::ConvertFrom (from)) <<
+                            " to " << GetIPfromMAC (Mac48Address::ConvertFrom (to)) <<
                             " with source IP " << ipv4Header.GetSource () <<
                             " and destination IP " << ipv4Header.GetDestination () <<
                             " and packet : " << *dsrPacket);
@@ -1527,7 +1526,7 @@
         }
       else
         {
-          uint32_t totalQueueSize;
+          uint32_t totalQueueSize = 0;
           for (std::map<uint32_t, Ptr<dsr::DsrNetworkQueue> >::iterator j = m_priorityQueue.begin (); j != m_priorityQueue.end (); j++)
             {
               NS_LOG_DEBUG ("The size of the network queue for " << j->first << " is " << j->second->GetSize ());
--- a/src/internet/model/ipv4-l3-protocol.h	Fri May 18 10:30:14 2012 +0200
+++ b/src/internet/model/ipv4-l3-protocol.h	Tue May 29 10:42:17 2012 +0200
@@ -370,10 +370,6 @@
      */
     std::list<std::pair<Ptr<Packet>, uint16_t> > m_fragments;
 
-    /**
-     * \brief Number of references.
-     */
-    mutable uint32_t m_refCount;
   };
 
   typedef std::map< std::pair<uint64_t, uint32_t>, Ptr<Fragments> > MapFragments_t;
--- a/src/internet/model/ipv6-extension.cc	Fri May 18 10:30:14 2012 +0200
+++ b/src/internet/model/ipv6-extension.cc	Tue May 29 10:42:17 2012 +0200
@@ -347,7 +347,7 @@
       m_fragments.insert (std::make_pair (fragmentsId, fragments));
       EventId timeout = Simulator::Schedule (Seconds (60),
                                              &Ipv6ExtensionFragment::HandleFragmentsTimeout, this,
-                                             fragmentsId, fragments, ipHeader);
+                                             fragmentsId, ipHeader);
       fragments->SetTimeoutEventId (timeout);
     }
   else
@@ -548,8 +548,15 @@
 }
 
 
-void Ipv6ExtensionFragment::HandleFragmentsTimeout (std::pair<Ipv6Address, uint32_t> fragmentsId, Ptr<Fragments> fragments, Ipv6Header & ipHeader)
+void Ipv6ExtensionFragment::HandleFragmentsTimeout (std::pair<Ipv6Address, uint32_t> fragmentsId,
+                                                    Ipv6Header & ipHeader)
 {
+  Ptr<Fragments> fragments;
+
+  MapFragments_t::iterator it = m_fragments.find (fragmentsId);
+  NS_ASSERT_MSG(it != m_fragments.end (), "IPv6 Fragment timeout reached for non-existent fragment");
+  fragments = it->second;
+
   Ptr<Packet> packet = fragments->GetPartialPacket ();
 
   packet->AddHeader (ipHeader);
@@ -557,7 +564,6 @@
   // if we have at least 8 bytes, we can send an ICMP.
   if ( packet->GetSize () > 8 )
     {
-
       Ptr<Icmpv6L4Protocol> icmp = GetNode ()->GetObject<Icmpv6L4Protocol> ();
       icmp->SendErrorTimeExceeded (packet, ipHeader.GetSourceAddress (), Icmpv6Header::ICMPV6_FRAGTIME);
     }
@@ -580,7 +586,7 @@
 {
   std::list<std::pair<Ptr<Packet>, uint16_t> >::iterator it;
 
-  for (it = m_fragments.begin (); it != m_fragments.end (); it++)
+  for (it = m_packetFragments.begin (); it != m_packetFragments.end (); it++)
     {
       if (it->second > fragmentOffset)
         {
@@ -588,12 +594,12 @@
         }
     }
 
-  if (it == m_fragments.end ())
+  if (it == m_packetFragments.end ())
     {
       m_moreFragment = moreFragment;
     }
 
-  m_fragments.insert (it, std::make_pair<Ptr<Packet>, uint16_t> (fragment, fragmentOffset));
+  m_packetFragments.insert (it, std::make_pair<Ptr<Packet>, uint16_t> (fragment, fragmentOffset));
 }
 
 void Ipv6ExtensionFragment::Fragments::SetUnfragmentablePart (Ptr<Packet> unfragmentablePart)
@@ -603,13 +609,13 @@
 
 bool Ipv6ExtensionFragment::Fragments::IsEntire () const
 {
-  bool ret = !m_moreFragment && m_fragments.size () > 0;
+  bool ret = !m_moreFragment && m_packetFragments.size () > 0;
 
   if (ret)
     {
       uint16_t lastEndOffset = 0;
 
-      for (std::list<std::pair<Ptr<Packet>, uint16_t> >::const_iterator it = m_fragments.begin (); it != m_fragments.end (); it++)
+      for (std::list<std::pair<Ptr<Packet>, uint16_t> >::const_iterator it = m_packetFragments.begin (); it != m_packetFragments.end (); it++)
         {
           if (lastEndOffset != it->second)
             {
@@ -628,7 +634,7 @@
 {
   Ptr<Packet> p =  m_unfragmentable->Copy ();
 
-  for (std::list<std::pair<Ptr<Packet>, uint16_t> >::const_iterator it = m_fragments.begin (); it != m_fragments.end (); it++)
+  for (std::list<std::pair<Ptr<Packet>, uint16_t> >::const_iterator it = m_packetFragments.begin (); it != m_packetFragments.end (); it++)
     {
       p->AddAtEnd (it->first);
     }
@@ -651,7 +657,7 @@
 
   uint16_t lastEndOffset = 0;
 
-  for (std::list<std::pair<Ptr<Packet>, uint16_t> >::const_iterator it = m_fragments.begin (); it != m_fragments.end (); it++)
+  for (std::list<std::pair<Ptr<Packet>, uint16_t> >::const_iterator it = m_packetFragments.begin (); it != m_packetFragments.end (); it++)
     {
       if (lastEndOffset != it->second)
         {
--- a/src/internet/model/ipv6-extension.h	Fri May 18 10:30:14 2012 +0200
+++ b/src/internet/model/ipv6-extension.h	Tue May 29 10:42:17 2012 +0200
@@ -343,7 +343,7 @@
     /**
      * \brief The current fragments.
      */
-    std::list<std::pair<Ptr<Packet>, uint16_t> > m_fragments;
+    std::list<std::pair<Ptr<Packet>, uint16_t> > m_packetFragments;
 
     /**
      * \brief The unfragmentable part.
@@ -351,11 +351,6 @@
     Ptr<Packet> m_unfragmentable;
 
     /**
-     * \brief Number of references.
-     */
-    mutable uint32_t m_refCount;
-
-    /**
      * \brief Timeout handler event
      */
     EventId m_timeoutEventId;
@@ -367,7 +362,7 @@
    * \param ipHeader the IP header of the original packet
    * \param iif Input Interface
    */
-  void HandleFragmentsTimeout (std::pair<Ipv6Address, uint32_t> key, Ptr<Fragments> fragments, Ipv6Header & ipHeader);
+  void HandleFragmentsTimeout (std::pair<Ipv6Address, uint32_t> key, Ipv6Header & ipHeader);
 
   /**
    * \brief Get the packet parts so far received.
--- a/src/lte/bindings/modulegen__gcc_ILP32.py	Fri May 18 10:30:14 2012 +0200
+++ b/src/lte/bindings/modulegen__gcc_ILP32.py	Tue May 29 10:42:17 2012 +0200
@@ -12574,14 +12574,6 @@
     cls.add_method('IsOutdoor', 
                    'bool', 
                    [])
-    ## buildings-mobility-model.h (module 'buildings'): void ns3::BuildingsMobilityModel::SetFloorNumber(uint8_t nfloor) [member function]
-    cls.add_method('SetFloorNumber', 
-                   'void', 
-                   [param('uint8_t', 'nfloor')])
-    ## buildings-mobility-model.h (module 'buildings'): void ns3::BuildingsMobilityModel::SetIndoor(ns3::Ptr<ns3::Building> building) [member function]
-    cls.add_method('SetIndoor', 
-                   'void', 
-                   [param('ns3::Ptr< ns3::Building >', 'building')])
     ## buildings-mobility-model.h (module 'buildings'): void ns3::BuildingsMobilityModel::SetIndoor(ns3::Ptr<ns3::Building> building, uint8_t nfloor, uint8_t nroomx, uint8_t nroomy) [member function]
     cls.add_method('SetIndoor', 
                    'void', 
@@ -12590,14 +12582,6 @@
     cls.add_method('SetOutdoor', 
                    'void', 
                    [])
-    ## buildings-mobility-model.h (module 'buildings'): void ns3::BuildingsMobilityModel::SetRoomNumberX(uint8_t nroomx) [member function]
-    cls.add_method('SetRoomNumberX', 
-                   'void', 
-                   [param('uint8_t', 'nroomx')])
-    ## buildings-mobility-model.h (module 'buildings'): void ns3::BuildingsMobilityModel::SetRoomNumberY(uint8_t nroomy) [member function]
-    cls.add_method('SetRoomNumberY', 
-                   'void', 
-                   [param('uint8_t', 'nroomy')])
     ## buildings-mobility-model.h (module 'buildings'): void ns3::BuildingsMobilityModel::DoDispose() [member function]
     cls.add_method('DoDispose', 
                    'void', 
--- a/src/lte/bindings/modulegen__gcc_LP64.py	Fri May 18 10:30:14 2012 +0200
+++ b/src/lte/bindings/modulegen__gcc_LP64.py	Tue May 29 10:42:17 2012 +0200
@@ -12574,14 +12574,6 @@
     cls.add_method('IsOutdoor', 
                    'bool', 
                    [])
-    ## buildings-mobility-model.h (module 'buildings'): void ns3::BuildingsMobilityModel::SetFloorNumber(uint8_t nfloor) [member function]
-    cls.add_method('SetFloorNumber', 
-                   'void', 
-                   [param('uint8_t', 'nfloor')])
-    ## buildings-mobility-model.h (module 'buildings'): void ns3::BuildingsMobilityModel::SetIndoor(ns3::Ptr<ns3::Building> building) [member function]
-    cls.add_method('SetIndoor', 
-                   'void', 
-                   [param('ns3::Ptr< ns3::Building >', 'building')])
     ## buildings-mobility-model.h (module 'buildings'): void ns3::BuildingsMobilityModel::SetIndoor(ns3::Ptr<ns3::Building> building, uint8_t nfloor, uint8_t nroomx, uint8_t nroomy) [member function]
     cls.add_method('SetIndoor', 
                    'void', 
@@ -12590,14 +12582,6 @@
     cls.add_method('SetOutdoor', 
                    'void', 
                    [])
-    ## buildings-mobility-model.h (module 'buildings'): void ns3::BuildingsMobilityModel::SetRoomNumberX(uint8_t nroomx) [member function]
-    cls.add_method('SetRoomNumberX', 
-                   'void', 
-                   [param('uint8_t', 'nroomx')])
-    ## buildings-mobility-model.h (module 'buildings'): void ns3::BuildingsMobilityModel::SetRoomNumberY(uint8_t nroomy) [member function]
-    cls.add_method('SetRoomNumberY', 
-                   'void', 
-                   [param('uint8_t', 'nroomy')])
     ## buildings-mobility-model.h (module 'buildings'): void ns3::BuildingsMobilityModel::DoDispose() [member function]
     cls.add_method('DoDispose', 
                    'void', 
--- a/src/lte/doc/Makefile	Fri May 18 10:30:14 2012 +0200
+++ b/src/lte/doc/Makefile	Tue May 29 10:42:17 2012 +0200
@@ -27,9 +27,6 @@
 # specify eps figures from which .png and .pdf figures need to be built
 
 IMAGES_EPS = \
-	$(FIGURES)/MCS_2_test.eps \
-	$(FIGURES)/MCS_12_test.eps \
-	$(FIGURES)/MCS_14_test.eps \
 	$(FIGURES)/lena-dual-stripe.eps \
 	$(FIGURES)/lte-mcs-index.eps \
 	$(FIGURES)/lenaThrTestCase1.eps \
@@ -96,8 +93,15 @@
 	$(FIGURES)/MCS_17_20.png \
 	$(FIGURES)/MCS_21_24.pdf \
 	$(FIGURES)/MCS_21_24.png \
-	$(FIGURES)/MCS_25_27.pdf \
-	$(FIGURES)/MCS_25_27.png \
+	$(FIGURES)/MCS_25_28.pdf \
+	$(FIGURES)/MCS_29_29.pdf \
+	$(FIGURES)/MCS_29_29.png \
+	$(FIGURES)/MCS_2_test.png \
+	$(FIGURES)/MCS_2_test.pdf \
+	$(FIGURES)/MCS_12_test.png \
+	$(FIGURES)/MCS_12_test.pdf \
+	$(FIGURES)/MCS_16_test.png \
+	$(FIGURES)/MCS_16_test.pdf \
 	$(FIGURES)/lte-phy-interference.png \
 	$(FIGURES)/lte-phy-interference.pdf \
 	$(FIGURES)/helpers.png \
--- a/src/lte/doc/source/figures/MCS_12_test.eps	Fri May 18 10:30:14 2012 +0200
+++ b/src/lte/doc/source/figures/MCS_12_test.eps	Tue May 29 10:42:17 2012 +0200
@@ -1,7 +1,7 @@
 %!PS-Adobe-2.0 EPSF-2.0
-%%Title: /home/mmiozzo/ns3/lena/ns-3-lena-pem/src/lte/doc/source/figures/MCS_12_test.fig
+%%Title: MCS_12_test.fig
 %%Creator: fig2dev Version 3.2 Patchlevel 5a
-%%CreationDate: Tue Jan 10 17:47:39 2012
+%%CreationDate: Tue May 22 11:38:22 2012
 %%BoundingBox: 0 0 1095 718
 %Magnification: 1.0000
 %%EndComments
@@ -117,29 +117,29 @@
 %
 % pen to black in case this eps object doesn't set color first
 0 0 0 setrgbcolor
-% Begin Imported EPS File: /home/mmiozzo/ns3/lena/ns-3-lena-pem/src/lte/doc/source/figures/MCS_12.eps
-%%BeginDocument: /home/mmiozzo/ns3/lena/ns-3-lena-pem/src/lte/doc/source/figures/MCS_12.eps
+% Begin Imported EPS File: /home/mmiozzo/sandbox/lena/ns-3-lena-dev/src/lte/doc/source/figures/MCS_13.eps
+%%BeginDocument: /home/mmiozzo/sandbox/lena/ns-3-lena-dev/src/lte/doc/source/figures/MCS_13.eps
 %
 n gs
 45 495 tr
-17.335329 -18.100159 sc
+17.439759 -18.100159 sc
 0 -629 tr
-203 -106 tr
+200 -106 tr
 sa
-n -203 106 m 799 106 l 799 735 l -203 735 l cp clip n
+n -200 106 m 796 106 l 796 735 l -200 735 l cp clip n
 countdictstack
 mark
 /showpage {} def
 % EPS file follows:
 %!PS-Adobe-3.0 EPSF-3.0
 %%Creator: MATLAB, The Mathworks, Inc. Version 7.8.0.347 (R2009a). Operating System: Microsoft Windows XP.
-%%Title: C:\Documents and Settings\Marco Miozzo\My Documents\MATLAB\Final\MCS_27_allTBsizes\MCS_12.eps
-%%CreationDate: 01/10/2012  17:32:09
+%%Title: \\Hercules.cttc.es\mmiozzo\Ubiquisys\ErrorModel\29_MCS_PLOTS\MCS_PLOTS\MCS_13.eps
+%%CreationDate: 05/17/2012  17:17:55
 %%DocumentNeededFonts: Helvetica
 %%DocumentProcessColors: Cyan Magenta Yellow Black
 %%LanguageLevel: 2
 %%Pages: 1
-%%BoundingBox:  -203   106   799   735
+%%BoundingBox:  -200   106   796   735
 %%EndComments
 
 %%BeginProlog
@@ -302,7 +302,7 @@
 
 %%Page: 1 1
 %%BeginPageSetup
-%%PageBoundingBox:  -203   106   799   735
+%%PageBoundingBox:  -200   106   796   735
 MathWorks begin
 bpage
 %%EndPageSetup
@@ -311,9 +311,9 @@
 bplot
 
 /dpi2point 12 def
-portraitMode -2436 8820 csm
+portraitMode -2400 8820 csm
 
-    0     0 12034  7546 rc
+    0     0 11962  7546 rc
 85 dict begin %Colortable dictionary
 /c0 { 0.000000 0.000000 0.000000 sr} bdef
 /c1 { 1.000000 1.000000 1.000000 sr} bdef
@@ -326,1002 +326,711 @@
 c0
 1 j
 1 sg
-   0    0 12035 7547 rf
+   0    0 11963 7547 rf
 6 w
-0 6150 9327 0 0 -6150 1564 6716 4 MP
+0 6150 9271 0 0 -6150 1555 6716 4 MP
 PP
--9327 0 0 6150 9327 0 0 -6150 1564 6716 5 MP stroke
+-9271 0 0 6150 9271 0 0 -6150 1555 6716 5 MP stroke
 4 w
 DO
 0 sg
-1564 6716 mt 1564  566 L
-1564  566 mt 1564  566 L
-2729 6716 mt 2729  566 L
-2729  566 mt 2729  566 L
-3895 6716 mt 3895  566 L
-3895  566 mt 3895  566 L
-5061 6716 mt 5061  566 L
-5061  566 mt 5061  566 L
-6227 6716 mt 6227  566 L
-6227  566 mt 6227  566 L
-7393 6716 mt 7393  566 L
-7393  566 mt 7393  566 L
-8559 6716 mt 8559  566 L
-8559  566 mt 8559  566 L
-9725 6716 mt 9725  566 L
-9725  566 mt 9725  566 L
-10891 6716 mt 10891  566 L
-10891  566 mt 10891  566 L
-1564 6716 mt 10891 6716 L
-10891 6716 mt 10891 6716 L
-1564 5178 mt 10891 5178 L
-10891 5178 mt 10891 5178 L
-1564 3641 mt 10891 3641 L
-10891 3641 mt 10891 3641 L
-1564 2103 mt 10891 2103 L
-10891 2103 mt 10891 2103 L
-1564  566 mt 10891  566 L
-10891  566 mt 10891  566 L
+1555 6716 mt 1555  566 L
+1555  566 mt 1555  566 L
+2879 6716 mt 2879  566 L
+2879  566 mt 2879  566 L
+4203 6716 mt 4203  566 L
+4203  566 mt 4203  566 L
+5528 6716 mt 5528  566 L
+5528  566 mt 5528  566 L
+6852 6716 mt 6852  566 L
+6852  566 mt 6852  566 L
+8177 6716 mt 8177  566 L
+8177  566 mt 8177  566 L
+9501 6716 mt 9501  566 L
+9501  566 mt 9501  566 L
+10826 6716 mt 10826  566 L
+10826  566 mt 10826  566 L
+1555 6716 mt 10826 6716 L
+10826 6716 mt 10826 6716 L
+1555 3641 mt 10826 3641 L
+10826 3641 mt 10826 3641 L
+1555  566 mt 10826  566 L
+10826  566 mt 10826  566 L
 SO
 6 w
-1564  566 mt 10891  566 L
-1564 6716 mt 10891 6716 L
-10891 6716 mt 10891  566 L
-1564 6716 mt 1564  566 L
-1564 6716 mt 10891 6716 L
-1564 6716 mt 1564  566 L
-1564 6716 mt 1564 6622 L
-1564  566 mt 1564  659 L
+1555  566 mt 10826  566 L
+1555 6716 mt 10826 6716 L
+10826 6716 mt 10826  566 L
+1555 6716 mt 1555  566 L
+1555 6716 mt 10826 6716 L
+1555 6716 mt 1555  566 L
+1555 6716 mt 1555 6623 L
+1555  566 mt 1555  658 L
 %%IncludeResource: font Helvetica
 /Helvetica /WindowsLatin1Encoding 120 FMSR
 
-1531 6861 mt 
+1522 6861 mt 
+(2) s
+2879 6716 mt 2879 6623 L
+2879  566 mt 2879  658 L
+2796 6861 mt 
+(2.5) s
+4203 6716 mt 4203 6623 L
+4203  566 mt 4203  658 L
+4170 6861 mt 
+(3) s
+5528 6716 mt 5528 6623 L
+5528  566 mt 5528  658 L
+5445 6861 mt 
+(3.5) s
+6852 6716 mt 6852 6623 L
+6852  566 mt 6852  658 L
+6819 6861 mt 
 (4) s
-2729 6716 mt 2729 6622 L
-2729  566 mt 2729  659 L
-2646 6861 mt 
+8177 6716 mt 8177 6623 L
+8177  566 mt 8177  658 L
+8094 6861 mt 
 (4.5) s
-3895 6716 mt 3895 6622 L
-3895  566 mt 3895  659 L
-3862 6861 mt 
+9501 6716 mt 9501 6623 L
+9501  566 mt 9501  658 L
+9468 6861 mt 
 (5) s
-5061 6716 mt 5061 6622 L
-5061  566 mt 5061  659 L
-4978 6861 mt 
+10826 6716 mt 10826 6623 L
+10826  566 mt 10826  658 L
+10743 6861 mt 
 (5.5) s
-6227 6716 mt 6227 6622 L
-6227  566 mt 6227  659 L
-6194 6861 mt 
-(6) s
-7393 6716 mt 7393 6622 L
-7393  566 mt 7393  659 L
-7310 6861 mt 
-(6.5) s
-8559 6716 mt 8559 6622 L
-8559  566 mt 8559  659 L
-8526 6861 mt 
-(7) s
-9725 6716 mt 9725 6622 L
-9725  566 mt 9725  659 L
-9642 6861 mt 
-(7.5) s
-10891 6716 mt 10891 6622 L
-10891  566 mt 10891  659 L
-10858 6861 mt 
-(8) s
-1564 6716 mt 1610 6716 L
-10891 6716 mt 10844 6716 L
+1555 6716 mt 1601 6716 L
+10826 6716 mt 10779 6716 L
 DO
-1564 6716 mt 10891 6716 L
-10891 6716 mt 10891 6716 L
-SO
-1564 6716 mt 1657 6716 L
-10891 6716 mt 10797 6716 L
-1305 6760 mt 
-(10) s
-%%IncludeResource: font Helvetica
-/Helvetica /WindowsLatin1Encoding 80 FMSR
-
-1438 6686 mt 
-(-4) s
-1564 6253 mt 1610 6253 L
-10891 6253 mt 10844 6253 L
-DO
-1564 6253 mt 10891 6253 L
-10891 6253 mt 10891 6253 L
+1555 6716 mt 10826 6716 L
+10826 6716 mt 10826 6716 L
 SO
-1564 5982 mt 1610 5982 L
-10891 5982 mt 10844 5982 L
-DO
-1564 5982 mt 10891 5982 L
-10891 5982 mt 10891 5982 L
-SO
-1564 5790 mt 1610 5790 L
-10891 5790 mt 10844 5790 L
-DO
-1564 5790 mt 10891 5790 L
-10891 5790 mt 10891 5790 L
-SO
-1564 5641 mt 1610 5641 L
-10891 5641 mt 10844 5641 L
-DO
-1564 5641 mt 10891 5641 L
-10891 5641 mt 10891 5641 L
-SO
-1564 5519 mt 1610 5519 L
-10891 5519 mt 10844 5519 L
-DO
-1564 5519 mt 10891 5519 L
-10891 5519 mt 10891 5519 L
-SO
-1564 5416 mt 1610 5416 L
-10891 5416 mt 10844 5416 L
-DO
-1564 5416 mt 10891 5416 L
-10891 5416 mt 10891 5416 L
-SO
-1564 5327 mt 1610 5327 L
-10891 5327 mt 10844 5327 L
-DO
-1564 5327 mt 10891 5327 L
-10891 5327 mt 10891 5327 L
-SO
-1564 5248 mt 1610 5248 L
-10891 5248 mt 10844 5248 L
-DO
-1564 5248 mt 10891 5248 L
-10891 5248 mt 10891 5248 L
-SO
-1564 5178 mt 1610 5178 L
-10891 5178 mt 10844 5178 L
-DO
-1564 5178 mt 10891 5178 L
-10891 5178 mt 10891 5178 L
-SO
-1564 5178 mt 1657 5178 L
-10891 5178 mt 10797 5178 L
-%%IncludeResource: font Helvetica
-/Helvetica /WindowsLatin1Encoding 120 FMSR
-
-1305 5222 mt 
+1555 6716 mt 1647 6716 L
+10826 6716 mt 10733 6716 L
+1296 6760 mt 
 (10) s
 %%IncludeResource: font Helvetica
 /Helvetica /WindowsLatin1Encoding 80 FMSR
 
-1438 5148 mt 
-(-3) s
-1564 4715 mt 1610 4715 L
-10891 4715 mt 10844 4715 L
+1429 6686 mt 
+(-2) s
+1555 5790 mt 1601 5790 L
+10826 5790 mt 10779 5790 L
 DO
-1564 4715 mt 10891 4715 L
-10891 4715 mt 10891 4715 L
+1555 5790 mt 10826 5790 L
+10826 5790 mt 10826 5790 L
 SO
-1564 4444 mt 1610 4444 L
-10891 4444 mt 10844 4444 L
+1555 5248 mt 1601 5248 L
+10826 5248 mt 10779 5248 L
 DO
-1564 4444 mt 10891 4444 L
-10891 4444 mt 10891 4444 L
+1555 5248 mt 10826 5248 L
+10826 5248 mt 10826 5248 L
 SO
-1564 4252 mt 1610 4252 L
-10891 4252 mt 10844 4252 L
+1555 4864 mt 1601 4864 L
+10826 4864 mt 10779 4864 L
 DO
-1564 4252 mt 10891 4252 L
-10891 4252 mt 10891 4252 L
+1555 4864 mt 10826 4864 L
+10826 4864 mt 10826 4864 L
 SO
-1564 4103 mt 1610 4103 L
-10891 4103 mt 10844 4103 L
+1555 4566 mt 1601 4566 L
+10826 4566 mt 10779 4566 L
 DO
-1564 4103 mt 10891 4103 L
-10891 4103 mt 10891 4103 L
+1555 4566 mt 10826 4566 L
+10826 4566 mt 10826 4566 L
 SO
-1564 3982 mt 1610 3982 L
-10891 3982 mt 10844 3982 L
+1555 4323 mt 1601 4323 L
+10826 4323 mt 10779 4323 L
 DO
-1564 3982 mt 10891 3982 L
-10891 3982 mt 10891 3982 L
+1555 4323 mt 10826 4323 L
+10826 4323 mt 10826 4323 L
 SO
-1564 3879 mt 1610 3879 L
-10891 3879 mt 10844 3879 L
+1555 4117 mt 1601 4117 L
+10826 4117 mt 10779 4117 L
 DO
-1564 3879 mt 10891 3879 L
-10891 3879 mt 10891 3879 L
+1555 4117 mt 10826 4117 L
+10826 4117 mt 10826 4117 L
 SO
-1564 3789 mt 1610 3789 L
-10891 3789 mt 10844 3789 L
+1555 3938 mt 1601 3938 L
+10826 3938 mt 10779 3938 L
 DO
-1564 3789 mt 10891 3789 L
-10891 3789 mt 10891 3789 L
+1555 3938 mt 10826 3938 L
+10826 3938 mt 10826 3938 L
 SO
-1564 3711 mt 1610 3711 L
-10891 3711 mt 10844 3711 L
+1555 3781 mt 1601 3781 L
+10826 3781 mt 10779 3781 L
 DO
-1564 3711 mt 10891 3711 L
-10891 3711 mt 10891 3711 L
+1555 3781 mt 10826 3781 L
+10826 3781 mt 10826 3781 L
 SO
-1564 3641 mt 1610 3641 L
-10891 3641 mt 10844 3641 L
+1555 3641 mt 1601 3641 L
+10826 3641 mt 10779 3641 L
 DO
-1564 3641 mt 10891 3641 L
-10891 3641 mt 10891 3641 L
+1555 3641 mt 10826 3641 L
+10826 3641 mt 10826 3641 L
 SO
-1564 3641 mt 1657 3641 L
-10891 3641 mt 10797 3641 L
+1555 3641 mt 1647 3641 L
+10826 3641 mt 10733 3641 L
 %%IncludeResource: font Helvetica
 /Helvetica /WindowsLatin1Encoding 120 FMSR
 
-1305 3685 mt 
+1296 3685 mt 
 (10) s
 %%IncludeResource: font Helvetica
 /Helvetica /WindowsLatin1Encoding 80 FMSR
 
-1438 3611 mt 
-(-2) s
-1564 3178 mt 1610 3178 L
-10891 3178 mt 10844 3178 L
+1429 3611 mt 
+(-1) s
+1555 2715 mt 1601 2715 L
+10826 2715 mt 10779 2715 L
 DO
-1564 3178 mt 10891 3178 L
-10891 3178 mt 10891 3178 L
+1555 2715 mt 10826 2715 L
+10826 2715 mt 10826 2715 L
 SO
-1564 2907 mt 1610 2907 L
-10891 2907 mt 10844 2907 L
+1555 2173 mt 1601 2173 L
+10826 2173 mt 10779 2173 L
 DO
-1564 2907 mt 10891 2907 L
-10891 2907 mt 10891 2907 L
+1555 2173 mt 10826 2173 L
+10826 2173 mt 10826 2173 L
 SO
-1564 2715 mt 1610 2715 L
-10891 2715 mt 10844 2715 L
+1555 1789 mt 1601 1789 L
+10826 1789 mt 10779 1789 L
 DO
-1564 2715 mt 10891 2715 L
-10891 2715 mt 10891 2715 L
+1555 1789 mt 10826 1789 L
+10826 1789 mt 10826 1789 L
 SO
-1564 2566 mt 1610 2566 L
-10891 2566 mt 10844 2566 L
+1555 1491 mt 1601 1491 L
+10826 1491 mt 10779 1491 L
 DO
-1564 2566 mt 10891 2566 L
-10891 2566 mt 10891 2566 L
+1555 1491 mt 10826 1491 L
+10826 1491 mt 10826 1491 L
 SO
-1564 2444 mt 1610 2444 L
-10891 2444 mt 10844 2444 L
+1555 1248 mt 1601 1248 L
+10826 1248 mt 10779 1248 L
 DO
-1564 2444 mt 10891 2444 L
-10891 2444 mt 10891 2444 L
+1555 1248 mt 10826 1248 L
+10826 1248 mt 10826 1248 L
 SO
-1564 2341 mt 1610 2341 L
-10891 2341 mt 10844 2341 L
+1555 1042 mt 1601 1042 L
+10826 1042 mt 10779 1042 L
 DO
-1564 2341 mt 10891 2341 L
-10891 2341 mt 10891 2341 L
+1555 1042 mt 10826 1042 L
+10826 1042 mt 10826 1042 L
 SO
-1564 2252 mt 1610 2252 L
-10891 2252 mt 10844 2252 L
+1555  863 mt 1601  863 L
+10826  863 mt 10779  863 L
 DO
-1564 2252 mt 10891 2252 L
-10891 2252 mt 10891 2252 L
+1555  863 mt 10826  863 L
+10826  863 mt 10826  863 L
 SO
-1564 2173 mt 1610 2173 L
-10891 2173 mt 10844 2173 L
+1555  706 mt 1601  706 L
+10826  706 mt 10779  706 L
 DO
-1564 2173 mt 10891 2173 L
-10891 2173 mt 10891 2173 L
+1555  706 mt 10826  706 L
+10826  706 mt 10826  706 L
 SO
-1564 2103 mt 1610 2103 L
-10891 2103 mt 10844 2103 L
+1555  566 mt 1601  566 L
+10826  566 mt 10779  566 L
 DO
-1564 2103 mt 10891 2103 L
-10891 2103 mt 10891 2103 L
+1555  566 mt 10826  566 L
+10826  566 mt 10826  566 L
 SO
-1564 2103 mt 1657 2103 L
-10891 2103 mt 10797 2103 L
+1555  566 mt 1647  566 L
+10826  566 mt 10733  566 L
 %%IncludeResource: font Helvetica
 /Helvetica /WindowsLatin1Encoding 120 FMSR
 
-1305 2147 mt 
+1296  610 mt 
 (10) s
 %%IncludeResource: font Helvetica
 /Helvetica /WindowsLatin1Encoding 80 FMSR
 
-1438 2073 mt 
-(-1) s
-1564 1640 mt 1610 1640 L
-10891 1640 mt 10844 1640 L
-DO
-1564 1640 mt 10891 1640 L
-10891 1640 mt 10891 1640 L
-SO
-1564 1369 mt 1610 1369 L
-10891 1369 mt 10844 1369 L
-DO
-1564 1369 mt 10891 1369 L
-10891 1369 mt 10891 1369 L
-SO
-1564 1177 mt 1610 1177 L
-10891 1177 mt 10844 1177 L
-DO
-1564 1177 mt 10891 1177 L
-10891 1177 mt 10891 1177 L
-SO
-1564 1028 mt 1610 1028 L
-10891 1028 mt 10844 1028 L
-DO
-1564 1028 mt 10891 1028 L
-10891 1028 mt 10891 1028 L
-SO
-1564  907 mt 1610  907 L
-10891  907 mt 10844  907 L
-DO
-1564  907 mt 10891  907 L
-10891  907 mt 10891  907 L
-SO
-1564  804 mt 1610  804 L
-10891  804 mt 10844  804 L
-DO
-1564  804 mt 10891  804 L
-10891  804 mt 10891  804 L
-SO
-1564  714 mt 1610  714 L
-10891  714 mt 10844  714 L
-DO
-1564  714 mt 10891  714 L
-10891  714 mt 10891  714 L
-SO
-1564  636 mt 1610  636 L
-10891  636 mt 10844  636 L
-DO
-1564  636 mt 10891  636 L
-10891  636 mt 10891  636 L
-SO
-1564  566 mt 1610  566 L
-10891  566 mt 10844  566 L
-DO
-1564  566 mt 10891  566 L
-10891  566 mt 10891  566 L
-SO
-1564  566 mt 1657  566 L
-10891  566 mt 10797  566 L
-%%IncludeResource: font Helvetica
-/Helvetica /WindowsLatin1Encoding 120 FMSR
-
-1305  610 mt 
-(10) s
-%%IncludeResource: font Helvetica
-/Helvetica /WindowsLatin1Encoding 80 FMSR
-
-1438  536 mt 
+1429  536 mt 
 (0) s
-1564  566 mt 10891  566 L
-1564 6716 mt 10891 6716 L
-10891 6716 mt 10891  566 L
-1564 6716 mt 1564  566 L
-gs 1564 566 9328 6151 rc
+1555  566 mt 10826  566 L
+1555 6716 mt 10826 6716 L
+10826 6716 mt 10826  566 L
+1555 6716 mt 1555  566 L
+gs 1555 566 9272 6151 rc
 DA
 24 w
 /c8 { 1.000000 0.000000 0.000000 sr} bdef
 c8
-234 1611 233 1104 233 888 233 536 233 245 234 88 233 16 233 2 
-233 0 233 0 233 0 234 0 233 0 233 0 233 0 233 0 
-233 0 234 0 233 0 233 0 233 0 233 0 233 0 1564 566 24 MP stroke
+265 2767 265 1498 265 813 265 343 265 87 265 14 265 0 265 0 
+264 0 265 0 265 0 265 0 265 0 265 0 265 0 265 0 
+265 0 264 0 265 0 265 0 265 0 265 0 265 0 265 0 
+265 0 264 0 1555 566 27 MP stroke
 SO
 /c9 { 0.000000 0.000000 1.000000 sr} bdef
 c9
-234 1632 233 1300 233 889 233 530 233 251 234 84 233 17 233 2 
-233 0 233 0 233 0 234 0 233 0 233 0 233 0 233 0 
-233 0 234 0 233 0 233 0 233 0 233 0 233 0 1564 566 24 MP stroke
+265 2263 265 1515 265 822 265 337 265 90 265 13 265 1 265 0 
+264 0 265 0 265 0 265 0 265 0 265 0 265 0 265 0 
+265 0 264 0 265 0 265 0 265 0 265 0 265 0 265 0 
+265 0 264 0 1555 566 27 MP stroke
 gr
 
 24 w
 c9
-gs 1418 420 5656 4998 rc
+gs 1409 420 7180 5334 rc
 0 j
-69 119 -138 0 69 -119 1564 645 4 MP
+69 119 -138 0 69 -119 1555 645 4 MP
 DP
-69 119 -138 0 69 -119 1797 645 4 MP
+69 119 -138 0 69 -119 1819 645 4 MP
 DP
-69 119 -138 0 69 -119 2030 645 4 MP
+69 119 -138 0 69 -119 2084 645 4 MP
+DP
+69 119 -138 0 69 -119 2349 645 4 MP
 DP
-69 119 -138 0 69 -119 2263 645 4 MP
+69 119 -138 0 69 -119 2614 645 4 MP
 DP
-69 119 -138 0 69 -119 2496 645 4 MP
+69 119 -138 0 69 -119 2879 645 4 MP
 DP
-69 119 -138 0 69 -119 2729 645 4 MP
+69 119 -138 0 69 -119 3144 645 4 MP
 DP
-69 119 -138 0 69 -119 2963 645 4 MP
+69 119 -138 0 69 -119 3409 645 4 MP
 DP
-69 119 -138 0 69 -119 3196 645 4 MP
+69 119 -138 0 69 -119 3674 645 4 MP
 DP
-69 119 -138 0 69 -119 3429 645 4 MP
+69 119 -138 0 69 -119 3938 645 4 MP
+DP
+69 119 -138 0 69 -119 4203 645 4 MP
 DP
-69 119 -138 0 69 -119 3662 645 4 MP
+69 119 -138 0 69 -119 4468 645 4 MP
 DP
-69 119 -138 0 69 -119 3895 645 4 MP
+69 119 -138 0 69 -119 4733 645 4 MP
 DP
-69 119 -138 0 69 -119 4128 645 4 MP
+69 119 -138 0 69 -119 4998 645 4 MP
 DP
-69 119 -138 0 69 -119 4362 645 4 MP
+69 119 -138 0 69 -119 5263 645 4 MP
 DP
-69 119 -138 0 69 -119 4595 645 4 MP
+69 119 -138 0 69 -119 5528 645 4 MP
 DP
-69 119 -138 0 69 -119 4828 645 4 MP
+69 119 -138 0 69 -119 5793 645 4 MP
+DP
+69 119 -138 0 69 -119 6058 645 4 MP
 DP
-69 119 -138 0 69 -119 5061 645 4 MP
+69 119 -138 0 69 -119 6322 645 4 MP
 DP
-69 119 -138 0 69 -119 5294 647 4 MP
+69 119 -138 0 69 -119 6587 645 4 MP
 DP
-69 119 -138 0 69 -119 5527 664 4 MP
+69 119 -138 0 69 -119 6852 646 4 MP
 DP
-69 119 -138 0 69 -119 5761 748 4 MP
+69 119 -138 0 69 -119 7117 659 4 MP
 DP
-69 119 -138 0 69 -119 5994 999 4 MP
+69 119 -138 0 69 -119 7382 749 4 MP
 DP
-69 119 -138 0 69 -119 6227 1529 4 MP
+69 119 -138 0 69 -119 7647 1086 4 MP
 DP
-69 119 -138 0 69 -119 6460 2418 4 MP
+69 119 -138 0 69 -119 7912 1908 4 MP
 DP
-69 119 -138 0 69 -119 6693 3718 4 MP
+69 119 -138 0 69 -119 8177 3423 4 MP
 DP
-69 119 -138 0 69 -119 6927 5350 4 MP
+69 119 -138 0 69 -119 8442 5686 4 MP
 DP
 gr
 
-gs 1564 566 9328 6151 rc
+gs 1555 566 9272 6151 rc
 DA
 c8
-234 1192 233 909 233 642 233 440 233 245 234 111 233 42 233 10 
-233 2 233 0 233 0 234 0 233 0 233 0 233 0 233 0 
-233 0 234 0 233 0 233 0 233 0 233 0 233 0 1564 566 24 MP stroke
+265 1632 265 1057 265 722 265 345 265 120 265 37 265 8 265 1 
+264 0 265 0 265 0 265 0 265 0 265 0 265 0 265 0 
+265 0 264 0 265 0 265 0 265 0 265 0 265 0 265 0 
+265 0 264 0 1555 566 27 MP stroke
 SO
 c9
-234 1109 233 911 233 657 233 431 233 246 234 114 233 41 233 10 
-233 1 233 0 233 0 234 0 233 0 233 0 233 0 233 0 
-233 0 234 0 233 0 233 0 233 0 233 0 233 0 1564 566 24 MP stroke
-gr
-
-gs 1418 420 5656 3813 rc
-0 j
--69 119 -69 -119 138 0 1495 606 4 MP
-DP
--69 119 -69 -119 138 0 1728 606 4 MP
-DP
--69 119 -69 -119 138 0 1961 606 4 MP
-DP
--69 119 -69 -119 138 0 2194 606 4 MP
-DP
--69 119 -69 -119 138 0 2427 606 4 MP
-DP
--69 119 -69 -119 138 0 2660 606 4 MP
-DP
--69 119 -69 -119 138 0 2894 606 4 MP
-DP
--69 119 -69 -119 138 0 3127 606 4 MP
-DP
--69 119 -69 -119 138 0 3360 606 4 MP
-DP
--69 119 -69 -119 138 0 3593 606 4 MP
-DP
--69 119 -69 -119 138 0 3826 606 4 MP
-DP
--69 119 -69 -119 138 0 4059 606 4 MP
-DP
--69 119 -69 -119 138 0 4293 606 4 MP
-DP
--69 119 -69 -119 138 0 4526 606 4 MP
-DP
--69 119 -69 -119 138 0 4759 606 4 MP
-DP
--69 119 -69 -119 138 0 4992 607 4 MP
-DP
--69 119 -69 -119 138 0 5225 617 4 MP
-DP
--69 119 -69 -119 138 0 5458 658 4 MP
-DP
--69 119 -69 -119 138 0 5692 772 4 MP
-DP
--69 119 -69 -119 138 0 5925 1018 4 MP
-DP
--69 119 -69 -119 138 0 6158 1449 4 MP
-DP
--69 119 -69 -119 138 0 6391 2106 4 MP
-DP
--69 119 -69 -119 138 0 6624 3017 4 MP
-DP
--69 119 -69 -119 138 0 6858 4126 4 MP
-DP
+265 1617 265 1140 265 685 265 343 265 131 265 35 265 7 265 0 
+264 0 265 0 265 0 265 0 265 0 265 0 265 0 265 0 
+265 0 264 0 265 0 265 0 265 0 265 0 265 0 265 0 
+265 0 264 0 1555 566 27 MP stroke
 gr
 
-gs 1564 566 9328 6151 rc
-DA
-c8
-233 958 234 779 233 567 233 455 233 297 233 179 234 97 233 41 
-233 17 233 4 233 0 233 0 234 0 233 0 233 0 233 0 
-233 0 233 0 234 0 233 0 233 0 233 0 233 0 233 0 
-1564 566 25 MP stroke
-SO
-c9
-233 942 234 724 233 598 233 439 233 298 233 182 234 96 233 43 
-233 14 233 5 233 0 233 0 234 0 233 0 233 0 233 0 
-233 0 233 0 234 0 233 0 233 0 233 0 233 0 233 0 
-1564 566 25 MP stroke
-gr
-
-gs 1418 420 5889 3634 rc
+gs 1409 420 7180 4251 rc
 0 j
-0 -94 -94 0 0 94 94 0 1517 519 5 MP
+-69 119 -69 -119 138 0 1486 606 4 MP
 DP
-0 -94 -94 0 0 94 94 0 1750 519 5 MP
+-69 119 -69 -119 138 0 1750 606 4 MP
+DP
+-69 119 -69 -119 138 0 2015 606 4 MP
 DP
-0 -94 -94 0 0 94 94 0 1983 519 5 MP
+-69 119 -69 -119 138 0 2280 606 4 MP
 DP
-0 -94 -94 0 0 94 94 0 2216 519 5 MP
+-69 119 -69 -119 138 0 2545 606 4 MP
+DP
+-69 119 -69 -119 138 0 2810 606 4 MP
 DP
-0 -94 -94 0 0 94 94 0 2449 519 5 MP
+-69 119 -69 -119 138 0 3075 606 4 MP
 DP
-0 -94 -94 0 0 94 94 0 2682 519 5 MP
+-69 119 -69 -119 138 0 3340 606 4 MP
+DP
+-69 119 -69 -119 138 0 3605 606 4 MP
 DP
-0 -94 -94 0 0 94 94 0 2916 519 5 MP
+-69 119 -69 -119 138 0 3869 606 4 MP
+DP
+-69 119 -69 -119 138 0 4134 606 4 MP
 DP
-0 -94 -94 0 0 94 94 0 3149 519 5 MP
+-69 119 -69 -119 138 0 4399 606 4 MP
+DP
+-69 119 -69 -119 138 0 4664 606 4 MP
 DP
-0 -94 -94 0 0 94 94 0 3382 519 5 MP
-DP
-0 -94 -94 0 0 94 94 0 3615 519 5 MP
+-69 119 -69 -119 138 0 4929 606 4 MP
 DP
-0 -94 -94 0 0 94 94 0 3848 519 5 MP
+-69 119 -69 -119 138 0 5194 606 4 MP
 DP
-0 -94 -94 0 0 94 94 0 4081 519 5 MP
+-69 119 -69 -119 138 0 5459 606 4 MP
 DP
-0 -94 -94 0 0 94 94 0 4315 519 5 MP
+-69 119 -69 -119 138 0 5724 606 4 MP
 DP
-0 -94 -94 0 0 94 94 0 4548 519 5 MP
+-69 119 -69 -119 138 0 5989 606 4 MP
 DP
-0 -94 -94 0 0 94 94 0 4781 519 5 MP
+-69 119 -69 -119 138 0 6253 606 4 MP
 DP
-0 -94 -94 0 0 94 94 0 5014 524 5 MP
+-69 119 -69 -119 138 0 6518 606 4 MP
 DP
-0 -94 -94 0 0 94 94 0 5247 538 5 MP
-DP
-0 -94 -94 0 0 94 94 0 5480 581 5 MP
+-69 119 -69 -119 138 0 6783 613 4 MP
 DP
-0 -94 -94 0 0 94 94 0 5714 677 5 MP
+-69 119 -69 -119 138 0 7048 648 4 MP
 DP
-0 -94 -94 0 0 94 94 0 5947 859 5 MP
+-69 119 -69 -119 138 0 7313 779 4 MP
 DP
-0 -94 -94 0 0 94 94 0 6180 1157 5 MP
+-69 119 -69 -119 138 0 7578 1122 4 MP
 DP
-0 -94 -94 0 0 94 94 0 6413 1596 5 MP
+-69 119 -69 -119 138 0 7843 1807 4 MP
 DP
-0 -94 -94 0 0 94 94 0 6646 2194 5 MP
+-69 119 -69 -119 138 0 8108 2947 4 MP
 DP
-0 -94 -94 0 0 94 94 0 6880 2918 5 MP
-DP
-0 -94 -94 0 0 94 94 0 7113 3860 5 MP
+-69 119 -69 -119 138 0 8373 4564 4 MP
 DP
 gr
 
-gs 1564 566 9328 6151 rc
+gs 1555 566 9272 6151 rc
 DA
 c8
-233 622 233 481 233 485 233 398 234 326 233 275 233 195 233 147 
-233 109 234 71 233 44 233 27 233 15 233 8 233 3 234 1 
-233 0 233 0 233 0 233 0 233 0 234 0 233 0 233 0 
-233 0 233 0 233 0 1564 566 28 MP stroke
+264 1333 265 1122 265 767 265 543 265 275 265 133 265 39 265 16 
+265 5 264 0 265 0 265 0 265 0 265 0 265 0 265 0 
+265 0 265 0 264 0 265 0 265 0 265 0 265 0 265 0 
+265 0 265 0 264 0 1555 566 28 MP stroke
 SO
 c9
-233 605 233 529 233 456 233 386 234 304 233 261 233 203 233 153 
-233 108 234 73 233 46 233 26 233 14 233 6 233 3 234 1 
-233 0 233 0 233 0 233 0 233 0 234 0 233 0 233 0 
-233 0 233 0 233 0 1564 566 28 MP stroke
-gr
-
-gs 1418 420 6588 3467 rc
-1504  566 mt 1624  566 L
-1564  506 mt 1564  626 L
-1737  566 mt 1857  566 L
-1797  506 mt 1797  626 L
-1970  566 mt 2090  566 L
-2030  506 mt 2030  626 L
-2203  566 mt 2323  566 L
-2263  506 mt 2263  626 L
-2436  566 mt 2556  566 L
-2496  506 mt 2496  626 L
-2669  566 mt 2789  566 L
-2729  506 mt 2729  626 L
-2903  566 mt 3023  566 L
-2963  506 mt 2963  626 L
-3136  566 mt 3256  566 L
-3196  506 mt 3196  626 L
-3369  566 mt 3489  566 L
-3429  506 mt 3429  626 L
-3602  566 mt 3722  566 L
-3662  506 mt 3662  626 L
-3835  566 mt 3955  566 L
-3895  506 mt 3895  626 L
-4068  566 mt 4188  566 L
-4128  506 mt 4128  626 L
-4302  567 mt 4422  567 L
-4362  507 mt 4362  627 L
-4535  570 mt 4655  570 L
-4595  510 mt 4595  630 L
-4768  576 mt 4888  576 L
-4828  516 mt 4828  636 L
-5001  590 mt 5121  590 L
-5061  530 mt 5061  650 L
-5234  616 mt 5354  616 L
-5294  556 mt 5294  676 L
-5467  662 mt 5587  662 L
-5527  602 mt 5527  722 L
-5701  735 mt 5821  735 L
-5761  675 mt 5761  795 L
-5934  843 mt 6054  843 L
-5994  783 mt 5994  903 L
-6167  996 mt 6287  996 L
-6227  936 mt 6227 1056 L
-6400 1199 mt 6520 1199 L
-6460 1139 mt 6460 1259 L
-6633 1460 mt 6753 1460 L
-6693 1400 mt 6693 1520 L
-6867 1764 mt 6987 1764 L
-6927 1704 mt 6927 1824 L
-7100 2150 mt 7220 2150 L
-7160 2090 mt 7160 2210 L
-7333 2606 mt 7453 2606 L
-7393 2546 mt 7393 2666 L
-7566 3135 mt 7686 3135 L
-7626 3075 mt 7626 3195 L
-7799 3740 mt 7919 3740 L
-7859 3680 mt 7859 3800 L
-gr
-
-gs 1564 566 9328 6151 rc
-DA
-c8
-233 462 233 467 234 305 233 362 233 277 233 250 233 219 233 185 
-234 168 233 125 233 112 233 87 233 62 234 46 233 38 233 19 
-233 16 233 10 233 5 234 4 233 3 233 1 233 0 233 0 
-233 0 234 0 233 0 233 0 233 0 233 0 233 0 1564 566 32 MP stroke
-SO
-c9
-233 442 233 404 234 365 233 328 233 291 233 257 233 222 233 190 
-234 152 233 134 233 108 233 85 233 65 234 49 233 34 233 23 
-233 16 233 9 233 6 234 3 233 2 233 1 233 0 233 0 
-233 0 234 0 233 0 233 0 233 0 233 0 233 0 1564 566 32 MP stroke
+264 1520 265 1110 265 803 265 510 265 282 265 130 265 48 265 13 
+265 3 264 0 265 0 265 0 265 0 265 0 265 0 265 0 
+265 0 265 0 264 0 265 0 265 0 265 0 265 0 265 0 
+265 0 265 0 264 0 1555 566 28 MP stroke
 gr
 
-gs 1418 420 7521 3479 rc
+gs 1409 420 7444 4712 rc
 0 j
--21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 
-34 0 17 30 17 -30 34 0 1513 536 13 MP
+0 -94 -94 0 0 94 94 0 1508 519 5 MP
 DP
--21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 
-34 0 17 30 17 -30 34 0 1746 536 13 MP
-DP
--21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 
-34 0 17 30 17 -30 34 0 1979 536 13 MP
+0 -94 -94 0 0 94 94 0 1772 519 5 MP
 DP
--21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 
-34 0 17 30 17 -30 34 0 2212 536 13 MP
+0 -94 -94 0 0 94 94 0 2037 519 5 MP
 DP
--21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 
-34 0 17 30 17 -30 34 0 2445 536 13 MP
+0 -94 -94 0 0 94 94 0 2302 519 5 MP
 DP
--21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 
-34 0 17 30 17 -30 34 0 2678 536 13 MP
+0 -94 -94 0 0 94 94 0 2567 519 5 MP
 DP
--21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 
-34 0 17 30 17 -30 34 0 2912 536 13 MP
+0 -94 -94 0 0 94 94 0 2832 519 5 MP
 DP
--21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 
-34 0 17 30 17 -30 34 0 3145 536 13 MP
-DP
--21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 
-34 0 17 30 17 -30 34 0 3378 536 13 MP
+0 -94 -94 0 0 94 94 0 3097 519 5 MP
 DP
--21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 
-34 0 17 30 17 -30 34 0 3611 536 13 MP
+0 -94 -94 0 0 94 94 0 3362 519 5 MP
 DP
--21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 
-34 0 17 30 17 -30 34 0 3844 537 13 MP
+0 -94 -94 0 0 94 94 0 3627 519 5 MP
 DP
--21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 
-34 0 17 30 17 -30 34 0 4077 539 13 MP
+0 -94 -94 0 0 94 94 0 3891 519 5 MP
 DP
--21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 
-34 0 17 30 17 -30 34 0 4311 542 13 MP
+0 -94 -94 0 0 94 94 0 4156 519 5 MP
 DP
--21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 
-34 0 17 30 17 -30 34 0 4544 548 13 MP
+0 -94 -94 0 0 94 94 0 4421 519 5 MP
 DP
--21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 
-34 0 17 30 17 -30 34 0 4777 557 13 MP
+0 -94 -94 0 0 94 94 0 4686 519 5 MP
 DP
--21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 
-34 0 17 30 17 -30 34 0 5010 573 13 MP
-DP
--21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 
-34 0 17 30 17 -30 34 0 5243 596 13 MP
+0 -94 -94 0 0 94 94 0 4951 519 5 MP
 DP
--21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 
-34 0 17 30 17 -30 34 0 5476 630 13 MP
+0 -94 -94 0 0 94 94 0 5216 519 5 MP
 DP
--21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 
-34 0 17 30 17 -30 34 0 5710 679 13 MP
+0 -94 -94 0 0 94 94 0 5481 519 5 MP
 DP
--21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 
-34 0 17 30 17 -30 34 0 5943 744 13 MP
+0 -94 -94 0 0 94 94 0 5746 519 5 MP
 DP
--21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 
-34 0 17 30 17 -30 34 0 6176 829 13 MP
+0 -94 -94 0 0 94 94 0 6011 519 5 MP
 DP
--21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 
-34 0 17 30 17 -30 34 0 6409 937 13 MP
+0 -94 -94 0 0 94 94 0 6275 519 5 MP
 DP
--21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 
-34 0 17 30 17 -30 34 0 6642 1071 13 MP
+0 -94 -94 0 0 94 94 0 6540 522 5 MP
 DP
--21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 
-34 0 17 30 17 -30 34 0 6876 1223 13 MP
+0 -94 -94 0 0 94 94 0 6805 535 5 MP
 DP
--21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 
-34 0 17 30 17 -30 34 0 7109 1413 13 MP
+0 -94 -94 0 0 94 94 0 7070 583 5 MP
 DP
--21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 
-34 0 17 30 17 -30 34 0 7342 1635 13 MP
+0 -94 -94 0 0 94 94 0 7335 713 5 MP
 DP
--21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 
-34 0 17 30 17 -30 34 0 7575 1892 13 MP
+0 -94 -94 0 0 94 94 0 7600 995 5 MP
 DP
--21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 
-34 0 17 30 17 -30 34 0 7808 2183 13 MP
+0 -94 -94 0 0 94 94 0 7865 1505 5 MP
 DP
--21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 
-34 0 17 30 17 -30 34 0 8041 2511 13 MP
+0 -94 -94 0 0 94 94 0 8130 2308 5 MP
 DP
--21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 
-34 0 17 30 17 -30 34 0 8275 2876 13 MP
+0 -94 -94 0 0 94 94 0 8395 3418 5 MP
 DP
--21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 
-34 0 17 30 17 -30 34 0 8508 3280 13 MP
-DP
--21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 
-34 0 17 30 17 -30 34 0 8741 3722 13 MP
+0 -94 -94 0 0 94 94 0 8659 4938 5 MP
 DP
 gr
 
-gs 1564 566 9328 6151 rc
+gs 1555 566 9272 6151 rc
 DA
 c8
-233 281 233 294 233 262 233 288 234 246 233 237 233 177 233 228 
-233 170 233 136 234 127 233 123 233 100 233 98 233 70 233 70 
-234 53 233 46 233 42 233 27 233 19 234 20 233 14 233 12 
-233 6 233 4 233 4 234 2 233 1 233 2 233 1 233 0 
-233 0 234 0 233 0 233 0 233 0 233 0 233 0 1564 566 40 MP stroke
+265 936 265 668 264 657 265 439 265 369 265 228 265 174 265 114 
+265 59 265 48 265 11 264 6 265 4 265 0 265 0 265 0 
+265 0 265 0 265 0 265 0 264 0 265 0 265 0 265 0 
+265 0 265 0 265 0 265 0 264 0 1555 566 30 MP stroke
 SO
 c9
-233 314 233 294 233 274 233 256 234 237 233 219 233 201 233 183 
-233 166 233 150 234 134 233 119 233 104 233 91 233 78 233 66 
-234 53 233 46 233 38 233 30 233 24 234 18 233 13 233 10 
-233 7 233 5 233 4 234 2 233 1 233 1 233 1 233 0 
-233 0 234 0 233 0 233 0 233 0 233 0 233 0 1564 566 40 MP stroke
+265 876 265 729 264 590 265 452 265 353 265 255 265 172 265 110 
+265 64 265 35 265 16 264 7 265 3 265 1 265 0 265 0 
+265 0 265 0 265 0 265 0 264 0 265 0 265 0 265 0 
+265 0 265 0 265 0 265 0 264 0 1555 566 30 MP stroke
+gr
+
+gs 1409 420 7974 3956 rc
+1495  566 mt 1615  566 L
+1555  506 mt 1555  626 L
+1759  566 mt 1879  566 L
+1819  506 mt 1819  626 L
+2024  566 mt 2144  566 L
+2084  506 mt 2084  626 L
+2289  566 mt 2409  566 L
+2349  506 mt 2349  626 L
+2554  566 mt 2674  566 L
+2614  506 mt 2614  626 L
+2819  566 mt 2939  566 L
+2879  506 mt 2879  626 L
+3084  566 mt 3204  566 L
+3144  506 mt 3144  626 L
+3349  566 mt 3469  566 L
+3409  506 mt 3409  626 L
+3614  566 mt 3734  566 L
+3674  506 mt 3674  626 L
+3878  566 mt 3998  566 L
+3938  506 mt 3938  626 L
+4143  566 mt 4263  566 L
+4203  506 mt 4203  626 L
+4408  566 mt 4528  566 L
+4468  506 mt 4468  626 L
+4673  566 mt 4793  566 L
+4733  506 mt 4733  626 L
+4938  566 mt 5058  566 L
+4998  506 mt 4998  626 L
+5203  566 mt 5323  566 L
+5263  506 mt 5263  626 L
+5468  566 mt 5588  566 L
+5528  506 mt 5528  626 L
+5733  567 mt 5853  567 L
+5793  507 mt 5793  627 L
+5998  570 mt 6118  570 L
+6058  510 mt 6058  630 L
+6262  577 mt 6382  577 L
+6322  517 mt 6322  637 L
+6527  593 mt 6647  593 L
+6587  533 mt 6587  653 L
+6792  628 mt 6912  628 L
+6852  568 mt 6852  688 L
+7057  692 mt 7177  692 L
+7117  632 mt 7117  752 L
+7322  802 mt 7442  802 L
+7382  742 mt 7382  862 L
+7587  974 mt 7707  974 L
+7647  914 mt 7647 1034 L
+7852 1229 mt 7972 1229 L
+7912 1169 mt 7912 1289 L
+8117 1582 mt 8237 1582 L
+8177 1522 mt 8177 1642 L
+8382 2034 mt 8502 2034 L
+8442 1974 mt 8442 2094 L
+8646 2624 mt 8766 2624 L
+8706 2564 mt 8706 2684 L
+8911 3353 mt 9031 3353 L
+8971 3293 mt 8971 3413 L
+9176 4229 mt 9296 4229 L
+9236 4169 mt 9236 4289 L
+gr
+
+gs 1555 566 9272 6151 rc
+DA
+c8
+265 504 265 562 265 461 265 401 265 395 264 322 265 239 265 153 
+265 140 265 105 265 77 265 66 265 30 265 32 264 10 265 7 
+265 3 265 5 265 1 265 0 265 0 265 0 265 0 264 0 
+265 0 265 0 265 0 265 0 265 0 265 0 265 0 264 0 
+1555 566 33 MP stroke
+SO
+c9
+265 632 265 556 265 484 265 416 265 350 264 291 265 231 265 188 
+265 145 265 109 265 78 265 54 265 36 265 23 264 14 265 8 
+265 4 265 2 265 2 265 0 265 0 265 0 265 0 264 0 
+265 0 265 0 265 0 265 0 265 0 265 0 265 0 264 0 
+1555 566 33 MP stroke
 gr
 
-gs 1418 420 9386 3432 rc
-1504  566 mt 1624  566 L
-1564  506 mt 1564  626 L
-1737  566 mt 1857  566 L
-1797  506 mt 1797  626 L
-1970  566 mt 2090  566 L
-2030  506 mt 2030  626 L
-2203  566 mt 2323  566 L
-2263  506 mt 2263  626 L
-2436  566 mt 2556  566 L
-2496  506 mt 2496  626 L
-2669  566 mt 2789  566 L
-2729  506 mt 2729  626 L
-2903  566 mt 3023  566 L
-2963  506 mt 2963  626 L
-3136  566 mt 3256  566 L
-3196  506 mt 3196  626 L
-3369  566 mt 3489  566 L
-3429  506 mt 3429  626 L
-3602  567 mt 3722  567 L
-3662  507 mt 3662  627 L
-3835  568 mt 3955  568 L
-3895  508 mt 3895  628 L
-4068  569 mt 4188  569 L
-4128  509 mt 4128  629 L
-4302  571 mt 4422  571 L
-4362  511 mt 4362  631 L
-4535  575 mt 4655  575 L
-4595  515 mt 4595  635 L
-4768  580 mt 4888  580 L
-4828  520 mt 4828  640 L
-5001  587 mt 5121  587 L
-5061  527 mt 5061  647 L
-5234  597 mt 5354  597 L
-5294  537 mt 5294  657 L
-5467  610 mt 5587  610 L
-5527  550 mt 5527  670 L
-5701  628 mt 5821  628 L
-5761  568 mt 5761  688 L
-5934  652 mt 6054  652 L
-5994  592 mt 5994  712 L
-6167  682 mt 6287  682 L
-6227  622 mt 6227  742 L
-6400  720 mt 6520  720 L
-6460  660 mt 6460  780 L
-6633  766 mt 6753  766 L
-6693  706 mt 6693  826 L
-6867  819 mt 6987  819 L
-6927  759 mt 6927  879 L
-7100  885 mt 7220  885 L
-7160  825 mt 7160  945 L
-7333  963 mt 7453  963 L
-7393  903 mt 7393 1023 L
-7566 1054 mt 7686 1054 L
-7626  994 mt 7626 1114 L
-7799 1158 mt 7919 1158 L
-7859 1098 mt 7859 1218 L
-8032 1277 mt 8152 1277 L
-8092 1217 mt 8092 1337 L
-8266 1411 mt 8386 1411 L
-8326 1351 mt 8326 1471 L
-8499 1561 mt 8619 1561 L
-8559 1501 mt 8559 1621 L
-8732 1727 mt 8852 1727 L
-8792 1667 mt 8792 1787 L
-8965 1910 mt 9085 1910 L
-9025 1850 mt 9025 1970 L
-9198 2111 mt 9318 2111 L
-9258 2051 mt 9258 2171 L
-9431 2330 mt 9551 2330 L
-9491 2270 mt 9491 2390 L
-9665 2567 mt 9785 2567 L
-9725 2507 mt 9725 2627 L
-9898 2823 mt 10018 2823 L
-9958 2763 mt 9958 2883 L
-10131 3097 mt 10251 3097 L
-10191 3037 mt 10191 3157 L
-10364 3391 mt 10484 3391 L
-10424 3331 mt 10424 3451 L
-10597 3705 mt 10717 3705 L
-10657 3645 mt 10657 3765 L
-1522  524 mt 1606  608 L
-1606  524 mt 1522  608 L
-1755  524 mt 1839  608 L
-1839  524 mt 1755  608 L
-1988  524 mt 2072  608 L
-2072  524 mt 1988  608 L
-2221  524 mt 2305  608 L
-2305  524 mt 2221  608 L
-2454  524 mt 2538  608 L
-2538  524 mt 2454  608 L
-2687  524 mt 2771  608 L
-2771  524 mt 2687  608 L
-2921  524 mt 3005  608 L
-3005  524 mt 2921  608 L
-3154  524 mt 3238  608 L
-3238  524 mt 3154  608 L
-3387  524 mt 3471  608 L
-3471  524 mt 3387  608 L
-3620  525 mt 3704  609 L
-3704  525 mt 3620  609 L
-3853  526 mt 3937  610 L
-3937  526 mt 3853  610 L
-4086  527 mt 4170  611 L
-4170  527 mt 4086  611 L
-4320  529 mt 4404  613 L
-4404  529 mt 4320  613 L
-4553  533 mt 4637  617 L
-4637  533 mt 4553  617 L
-4786  538 mt 4870  622 L
-4870  538 mt 4786  622 L
-5019  545 mt 5103  629 L
-5103  545 mt 5019  629 L
-5252  555 mt 5336  639 L
-5336  555 mt 5252  639 L
-5485  568 mt 5569  652 L
-5569  568 mt 5485  652 L
-5719  586 mt 5803  670 L
-5803  586 mt 5719  670 L
-5952  610 mt 6036  694 L
-6036  610 mt 5952  694 L
-6185  640 mt 6269  724 L
-6269  640 mt 6185  724 L
-6418  678 mt 6502  762 L
-6502  678 mt 6418  762 L
-6651  724 mt 6735  808 L
-6735  724 mt 6651  808 L
-6885  777 mt 6969  861 L
-6969  777 mt 6885  861 L
-7118  843 mt 7202  927 L
-7202  843 mt 7118  927 L
-7351  921 mt 7435 1005 L
-7435  921 mt 7351 1005 L
-7584 1012 mt 7668 1096 L
-7668 1012 mt 7584 1096 L
-7817 1116 mt 7901 1200 L
-7901 1116 mt 7817 1200 L
-8050 1235 mt 8134 1319 L
-8134 1235 mt 8050 1319 L
-8284 1369 mt 8368 1453 L
-8368 1369 mt 8284 1453 L
-8517 1519 mt 8601 1603 L
-8601 1519 mt 8517 1603 L
-8750 1685 mt 8834 1769 L
-8834 1685 mt 8750 1769 L
-8983 1868 mt 9067 1952 L
-9067 1868 mt 8983 1952 L
-9216 2069 mt 9300 2153 L
-9300 2069 mt 9216 2153 L
-9449 2288 mt 9533 2372 L
-9533 2288 mt 9449 2372 L
-9683 2525 mt 9767 2609 L
-9767 2525 mt 9683 2609 L
-9916 2781 mt 10000 2865 L
-10000 2781 mt 9916 2865 L
-10149 3055 mt 10233 3139 L
-10233 3055 mt 10149 3139 L
-10382 3349 mt 10466 3433 L
-10466 3349 mt 10382 3433 L
-10615 3663 mt 10699 3747 L
-10699 3663 mt 10615 3747 L
+gs 1409 420 8769 3916 rc
+0 j
+-21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 
+34 0 17 30 17 -30 34 0 1504 536 13 MP
+DP
+-21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 
+34 0 17 30 17 -30 34 0 1768 536 13 MP
+DP
+-21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 
+34 0 17 30 17 -30 34 0 2033 536 13 MP
+DP
+-21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 
+34 0 17 30 17 -30 34 0 2298 536 13 MP
+DP
+-21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 
+34 0 17 30 17 -30 34 0 2563 536 13 MP
+DP
+-21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 
+34 0 17 30 17 -30 34 0 2828 536 13 MP
+DP
+-21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 
+34 0 17 30 17 -30 34 0 3093 536 13 MP
+DP
+-21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 
+34 0 17 30 17 -30 34 0 3358 536 13 MP
+DP
+-21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 
+34 0 17 30 17 -30 34 0 3623 536 13 MP
+DP
+-21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 
+34 0 17 30 17 -30 34 0 3887 536 13 MP
+DP
+-21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 
+34 0 17 30 17 -30 34 0 4152 536 13 MP
+DP
+-21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 
+34 0 17 30 17 -30 34 0 4417 536 13 MP
+DP
+-21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 
+34 0 17 30 17 -30 34 0 4682 536 13 MP
+DP
+-21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 
+34 0 17 30 17 -30 34 0 4947 536 13 MP
+DP
+-21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 
+34 0 17 30 17 -30 34 0 5212 538 13 MP
+DP
+-21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 
+34 0 17 30 17 -30 34 0 5477 540 13 MP
+DP
+-21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 
+34 0 17 30 17 -30 34 0 5742 544 13 MP
+DP
+-21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 
+34 0 17 30 17 -30 34 0 6007 552 13 MP
+DP
+-21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 
+34 0 17 30 17 -30 34 0 6271 566 13 MP
+DP
+-21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 
+34 0 17 30 17 -30 34 0 6536 589 13 MP
+DP
+-21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 
+34 0 17 30 17 -30 34 0 6801 625 13 MP
+DP
+-21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 
+34 0 17 30 17 -30 34 0 7066 679 13 MP
+DP
+-21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 
+34 0 17 30 17 -30 34 0 7331 757 13 MP
+DP
+-21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 
+34 0 17 30 17 -30 34 0 7596 866 13 MP
+DP
+-21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 
+34 0 17 30 17 -30 34 0 7861 1011 13 MP
+DP
+-21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 
+34 0 17 30 17 -30 34 0 8126 1199 13 MP
+DP
+-21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 
+34 0 17 30 17 -30 34 0 8391 1430 13 MP
+DP
+-21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 
+34 0 17 30 17 -30 34 0 8655 1721 13 MP
+DP
+-21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 
+34 0 17 30 17 -30 34 0 8920 2071 13 MP
+DP
+-21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 
+34 0 17 30 17 -30 34 0 9185 2487 13 MP
+DP
+-21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 
+34 0 17 30 17 -30 34 0 9450 2971 13 MP
+DP
+-21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 
+34 0 17 30 17 -30 34 0 9715 3527 13 MP
+DP
+-21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 
+34 0 17 30 17 -30 34 0 9980 4159 13 MP
+DP
 gr
 
-gs 1564 566 9328 6151 rc
+gs 1555 566 9272 6151 rc
 gr
 
 0 sg
 %%IncludeResource: font Helvetica
 /Helvetica /WindowsLatin1Encoding 120 FMSR
 
-6083 7004 mt 
-(SINR) s
-1223 3799 mt  -90 rotate
+6062 7004 mt 
+(SNR) s
+1214 3799 mt  -90 rotate
 (BLER) s
 90 rotate
-1547 6759 mt 
+1538 6759 mt 
 ( ) s
-10875  608 mt 
+10810  608 mt 
 ( ) s
 6 w
 1 sg
-0 2058 1696 0 0 -2058 1601 6684 4 MP
+0 1722 1696 0 0 -1722 1601 6681 4 MP
 PP
--1696 0 0 2058 1696 0 0 -2058 1601 6684 5 MP stroke
+-1696 0 0 1722 1696 0 0 -1722 1601 6681 5 MP stroke
 4 w
 DO
 SO
 6 w
 0 sg
-1601 4626 mt 3297 4626 L
-1601 6684 mt 3297 6684 L
-3297 6684 mt 3297 4626 L
-1601 6684 mt 1601 4626 L
-1601 6684 mt 3297 6684 L
-1601 6684 mt 1601 4626 L
-1601 4626 mt 3297 4626 L
-1601 6684 mt 3297 6684 L
-3297 6684 mt 3297 4626 L
-1601 6684 mt 1601 4626 L
-2073 4773 mt 
+1601 4959 mt 3297 4959 L
+1601 6681 mt 3297 6681 L
+3297 6681 mt 3297 4959 L
+1601 6681 mt 1601 4959 L
+1601 6681 mt 3297 6681 L
+1601 6681 mt 1601 4959 L
+1601 4959 mt 3297 4959 L
+1601 6681 mt 3297 6681 L
+3297 6681 mt 3297 4959 L
+1601 6681 mt 1601 4959 L
+2073 5106 mt 
 (TB = 6000 \(AWGN\)) s
-gs 1601 4626 1697 2059 rc
+gs 1601 4959 1697 1723 rc
 DA
 24 w
 c8
-363 0 1673 4731 2 MP stroke
+363 0 1673 5064 2 MP stroke
 SO
 gr
 
 24 w
 c8
 0 sg
-2073 4941 mt 
+2073 5274 mt 
 (TB = 6000 \(estimated\)) s
-gs 1601 4626 1697 2059 rc
+gs 1601 4959 1697 1723 rc
 c9
-363 0 1673 4899 2 MP stroke
-gs 1708 4753 293 293 rc
+363 0 1673 5232 2 MP stroke
+gs 1708 5086 293 293 rc
 0 j
-69 119 -138 0 69 -119 1854 4978 4 MP
+69 119 -138 0 69 -119 1854 5311 4 MP
 DP
 gr
 
@@ -1329,25 +1038,25 @@
 
 c9
 0 sg
-2073 5109 mt 
+2073 5442 mt 
 (TB = 4000 \(AWGN\)) s
-gs 1601 4626 1697 2059 rc
+gs 1601 4959 1697 1723 rc
 DA
 c8
-363 0 1673 5067 2 MP stroke
+363 0 1673 5400 2 MP stroke
 SO
 gr
 
 c8
 0 sg
-2073 5277 mt 
+2073 5610 mt 
 (TB = 4000 \(estimated\)) s
-gs 1601 4626 1697 2059 rc
+gs 1601 4959 1697 1723 rc
 c9
-363 0 1673 5235 2 MP stroke
-gs 1708 5089 293 293 rc
+363 0 1673 5568 2 MP stroke
+gs 1708 5422 293 293 rc
 0 j
--69 119 -69 -119 138 0 1785 5275 4 MP
+-69 119 -69 -119 138 0 1785 5608 4 MP
 DP
 gr
 
@@ -1355,25 +1064,25 @@
 
 c9
 0 sg
-2073 5445 mt 
+2073 5778 mt 
 (TB = 2560 \(AWGN\)) s
-gs 1601 4626 1697 2059 rc
+gs 1601 4959 1697 1723 rc
 DA
 c8
-363 0 1673 5403 2 MP stroke
+363 0 1673 5736 2 MP stroke
 SO
 gr
 
 c8
 0 sg
-2073 5613 mt 
+2073 5947 mt 
 (TB = 2560 \(estimated\)) s
-gs 1601 4626 1697 2059 rc
+gs 1601 4959 1697 1723 rc
 c9
-363 0 1673 5571 2 MP stroke
-gs 1708 5425 293 293 rc
+363 0 1673 5904 2 MP stroke
+gs 1708 5758 293 293 rc
 0 j
-0 -94 -94 0 0 94 94 0 1807 5524 5 MP
+0 -94 -94 0 0 94 94 0 1807 5857 5 MP
 DP
 gr
 
@@ -1381,85 +1090,58 @@
 
 c9
 0 sg
-2073 5782 mt 
+2073 6115 mt 
 (TB = 1024 \(AWGN\)) s
-gs 1601 4626 1697 2059 rc
+gs 1601 4959 1697 1723 rc
 DA
 c8
-363 0 1673 5739 2 MP stroke
+363 0 1673 6072 2 MP stroke
 SO
 gr
 
 c8
 0 sg
-2073 5950 mt 
+2073 6283 mt 
 (TB = 1024 \(estimated\)) s
-gs 1601 4626 1697 2059 rc
+gs 1601 4959 1697 1723 rc
 c9
-363 0 1673 5907 2 MP stroke
-gs 1708 5761 293 293 rc
-1794 5907 mt 1914 5907 L
-1854 5847 mt 1854 5967 L
+363 0 1673 6240 2 MP stroke
+gs 1708 6094 293 293 rc
+1794 6240 mt 1914 6240 L
+1854 6180 mt 1854 6300 L
 gr
 
 gr
 
 c9
 0 sg
-2073 6118 mt 
+2073 6451 mt 
 (TB = 512 \(AWGN\)) s
-gs 1601 4626 1697 2059 rc
+gs 1601 4959 1697 1723 rc
 DA
 c8
-363 0 1673 6075 2 MP stroke
+363 0 1673 6408 2 MP stroke
 SO
 gr
 
 c8
 0 sg
-2073 6286 mt 
+2073 6619 mt 
 (TB = 512 \(estimated\)) s
-gs 1601 4626 1697 2059 rc
+gs 1601 4959 1697 1723 rc
 c9
-363 0 1673 6242 2 MP stroke
-gs 1708 6096 293 293 rc
-0 j
--21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 
-34 0 17 30 17 -30 34 0 1803 6212 13 MP
-DP
-gr
-
+363 0 1673 6575 2 MP stroke
 gr
 
 c9
-0 sg
-2073 6454 mt 
-(TB = 256 \(AWGN\)) s
-gs 1601 4626 1697 2059 rc
-DA
-c8
-363 0 1673 6410 2 MP stroke
-SO
+gs 1708 6429 293 293 rc
+0 j
+-21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 
+34 0 17 30 17 -30 34 0 1803 6545 13 MP
+DP
 gr
 
-c8
-0 sg
-2073 6622 mt 
-(TB = 256 \(estimated\)) s
-gs 1601 4626 1697 2059 rc
-c9
-363 0 1673 6578 2 MP stroke
-gr
-
-c9
-gs 1708 6432 293 293 rc
-1794 6578 mt 1914 6578 L
-1854 6518 mt 1854 6638 L
-1812 6536 mt 1896 6620 L
-1896 6536 mt 1812 6620 L
-gr
-
-gs 1601 4626 1697 2059 rc
+gs 1601 4959 1697 1723 rc
 6 w
 gr
 
@@ -1482,28 +1164,22 @@
 countdictstack exch sub { end } repeat
 restore grestore
 %
-% End Imported PIC File: /home/mmiozzo/ns3/lena/ns-3-lena-pem/src/lte/doc/source/figures/MCS_12.eps
+% End Imported PIC File: /home/mmiozzo/sandbox/lena/ns-3-lena-dev/src/lte/doc/source/figures/MCS_13.eps
 %%EndDocument
 %
 % Ellipse
 45.000 slw
-n 9585 3600 324 324 0 360 DrawEllipse gs col4 s gr
+n 11565 3735 324 324 0 360 DrawEllipse gs col4 s gr
 
 % Ellipse
-n 9540 1530 324 324 0 360 DrawEllipse gs col4 s gr
-
-% Ellipse
-n 9540 2160 324 324 0 360 DrawEllipse gs col4 s gr
+n 11610 2655 324 324 0 360 DrawEllipse gs col4 s gr
 
 /Helvetica-Bold ff 349.25 scf sf
-9855 1215 m
+10890 2790 m
 gs 1 -1 sc (E) col4 sh gr
 /Helvetica-Bold ff 349.25 scf sf
-9990 2205 m
-gs 1 -1 sc (F) col4 sh gr
-/Helvetica-Bold ff 349.25 scf sf
-9945 4005 m
-gs 1 -1 sc (G) col4 sh gr
+10845 3870 m
+gs 1 -1 sc (D) col4 sh gr
 % here ends figure;
 pagefooter
 showpage
Binary file src/lte/doc/source/figures/MCS_12_test.pdf has changed
Binary file src/lte/doc/source/figures/MCS_12_test.png has changed
Binary file src/lte/doc/source/figures/MCS_13_16.pdf has changed
--- a/src/lte/doc/source/figures/MCS_14_test.eps	Fri May 18 10:30:14 2012 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1641 +0,0 @@
-%!PS-Adobe-2.0 EPSF-2.0
-%%Title: /home/mmiozzo/ns3/lena/ns-3-lena-pem/src/lte/doc/source/figures/MCS_14_test.fig
-%%Creator: fig2dev Version 3.2 Patchlevel 5a
-%%CreationDate: Tue Jan 10 17:48:10 2012
-%%BoundingBox: 0 0 1095 718
-%Magnification: 1.0000
-%%EndComments
-%%BeginProlog
-/$F2psDict 200 dict def
-$F2psDict begin
-$F2psDict /mtrx matrix put
-/col-1 {0 setgray} bind def
-/col0 {0.000 0.000 0.000 srgb} bind def
-/col1 {0.000 0.000 1.000 srgb} bind def
-/col2 {0.000 1.000 0.000 srgb} bind def
-/col3 {0.000 1.000 1.000 srgb} bind def
-/col4 {1.000 0.000 0.000 srgb} bind def
-/col5 {1.000 0.000 1.000 srgb} bind def
-/col6 {1.000 1.000 0.000 srgb} bind def
-/col7 {1.000 1.000 1.000 srgb} bind def
-/col8 {0.000 0.000 0.560 srgb} bind def
-/col9 {0.000 0.000 0.690 srgb} bind def
-/col10 {0.000 0.000 0.820 srgb} bind def
-/col11 {0.530 0.810 1.000 srgb} bind def
-/col12 {0.000 0.560 0.000 srgb} bind def
-/col13 {0.000 0.690 0.000 srgb} bind def
-/col14 {0.000 0.820 0.000 srgb} bind def
-/col15 {0.000 0.560 0.560 srgb} bind def
-/col16 {0.000 0.690 0.690 srgb} bind def
-/col17 {0.000 0.820 0.820 srgb} bind def
-/col18 {0.560 0.000 0.000 srgb} bind def
-/col19 {0.690 0.000 0.000 srgb} bind def
-/col20 {0.820 0.000 0.000 srgb} bind def
-/col21 {0.560 0.000 0.560 srgb} bind def
-/col22 {0.690 0.000 0.690 srgb} bind def
-/col23 {0.820 0.000 0.820 srgb} bind def
-/col24 {0.500 0.190 0.000 srgb} bind def
-/col25 {0.630 0.250 0.000 srgb} bind def
-/col26 {0.750 0.380 0.000 srgb} bind def
-/col27 {1.000 0.500 0.500 srgb} bind def
-/col28 {1.000 0.630 0.630 srgb} bind def
-/col29 {1.000 0.750 0.750 srgb} bind def
-/col30 {1.000 0.880 0.880 srgb} bind def
-/col31 {1.000 0.840 0.000 srgb} bind def
-
-end
-
-/cp {closepath} bind def
-/ef {eofill} bind def
-/gr {grestore} bind def
-/gs {gsave} bind def
-/sa {save} bind def
-/rs {restore} bind def
-/l {lineto} bind def
-/m {moveto} bind def
-/rm {rmoveto} bind def
-/n {newpath} bind def
-/s {stroke} bind def
-/sh {show} bind def
-/slc {setlinecap} bind def
-/slj {setlinejoin} bind def
-/slw {setlinewidth} bind def
-/srgb {setrgbcolor} bind def
-/rot {rotate} bind def
-/sc {scale} bind def
-/sd {setdash} bind def
-/ff {findfont} bind def
-/sf {setfont} bind def
-/scf {scalefont} bind def
-/sw {stringwidth} bind def
-/tr {translate} bind def
-/tnt {dup dup currentrgbcolor
-  4 -2 roll dup 1 exch sub 3 -1 roll mul add
-  4 -2 roll dup 1 exch sub 3 -1 roll mul add
-  4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb}
-  bind def
-/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul
-  4 -2 roll mul srgb} bind def
- /DrawEllipse {
-	/endangle exch def
-	/startangle exch def
-	/yrad exch def
-	/xrad exch def
-	/y exch def
-	/x exch def
-	/savematrix mtrx currentmatrix def
-	x y tr xrad yrad sc 0 0 1 startangle endangle arc
-	closepath
-	savematrix setmatrix
-	} def
-
-/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def
-/$F2psEnd {$F2psEnteredState restore end} def
-
-/pageheader {
-save
-newpath 0 718 moveto 0 0 lineto 1095 0 lineto 1095 718 lineto closepath clip newpath
--2.8 748.3 translate
-1 -1 scale
-$F2psBegin
-10 setmiterlimit
-0 slj 0 slc
- 0.06299 0.06299 sc
-} bind def
-/pagefooter {
-$F2psEnd
-restore
-} bind def
-%%EndProlog
-pageheader
-%
-% Fig objects follow
-%
-% 
-% here starts figure with depth 51
-% Polyline
-%
-% pen to black in case this eps object doesn't set color first
-0 0 0 setrgbcolor
-% Begin Imported EPS File: /home/mmiozzo/ns3/lena/ns-3-lena-pem/src/lte/doc/source/figures/MCS_14.eps
-%%BeginDocument: /home/mmiozzo/ns3/lena/ns-3-lena-pem/src/lte/doc/source/figures/MCS_14.eps
-%
-n gs
-45 495 tr
-17.335329 -18.100159 sc
-0 -629 tr
-203 -106 tr
-sa
-n -203 106 m 799 106 l 799 735 l -203 735 l cp clip n
-countdictstack
-mark
-/showpage {} def
-% EPS file follows:
-%!PS-Adobe-3.0 EPSF-3.0
-%%Creator: MATLAB, The Mathworks, Inc. Version 7.8.0.347 (R2009a). Operating System: Microsoft Windows XP.
-%%Title: C:\Documents and Settings\Marco Miozzo\My Documents\MATLAB\Final\MCS_27_allTBsizes\MCS_14.eps
-%%CreationDate: 01/10/2012  17:33:16
-%%DocumentNeededFonts: Helvetica
-%%DocumentProcessColors: Cyan Magenta Yellow Black
-%%LanguageLevel: 2
-%%Pages: 1
-%%BoundingBox:  -203   106   799   735
-%%EndComments
-
-%%BeginProlog
-% MathWorks dictionary
-/MathWorks 160 dict begin
-% definition operators
-/bdef {bind def} bind def
-/ldef {load def} bind def
-/xdef {exch def} bdef
-/xstore {exch store} bdef
-% operator abbreviations
-/c  /clip ldef
-/cc /concat ldef
-/cp /closepath ldef
-/gr /grestore ldef
-/gs /gsave ldef
-/mt /moveto ldef
-/np /newpath ldef
-/cm /currentmatrix ldef
-/sm /setmatrix ldef
-/rm /rmoveto ldef
-/rl /rlineto ldef
-/s {show newpath} bdef
-/sc {setcmykcolor} bdef
-/sr /setrgbcolor ldef
-/sg /setgray ldef
-/w /setlinewidth ldef
-/j /setlinejoin ldef
-/cap /setlinecap ldef
-/rc {rectclip} bdef
-/rf {rectfill} bdef
-% page state control
-/pgsv () def
-/bpage {/pgsv save def} bdef
-/epage {pgsv restore} bdef
-/bplot /gsave ldef
-/eplot {stroke grestore} bdef
-% orientation switch
-/portraitMode 0 def /landscapeMode 1 def /rotateMode 2 def
-% coordinate system mappings
-/dpi2point 0 def
-% font control
-/FontSize 0 def
-/FMS {/FontSize xstore findfont [FontSize 0 0 FontSize neg 0 0]
-  makefont setfont} bdef
-/ISOLatin1Encoding where {pop /WindowsLatin1Encoding 256 array bdef
-ISOLatin1Encoding WindowsLatin1Encoding copy pop
-/.notdef/.notdef/quotesinglbase/florin/quotedblbase/ellipsis/dagger
-/daggerdbl/circumflex/perthousand/Scaron/guilsinglleft/OE/.notdef/.notdef
-/.notdef/.notdef/quoteleft/quoteright/quotedblleft/quotedblright/bullet
-/endash/emdash/tilde/trademark/scaron/guilsinglright/oe/.notdef/.notdef
-/Ydieresis WindowsLatin1Encoding 128 32 getinterval astore pop}
-{/WindowsLatin1Encoding StandardEncoding bdef} ifelse
-/reencode {exch dup where {pop load} {pop StandardEncoding} ifelse
-  exch dup 3 1 roll findfont dup length dict begin
-  { 1 index /FID ne {def}{pop pop} ifelse } forall
-  /Encoding exch def currentdict end definefont pop} bdef
-/isroman {findfont /CharStrings get /Agrave known} bdef
-/FMSR {3 1 roll 1 index dup isroman {reencode} {pop pop} ifelse
-  exch FMS} bdef
-/csm {1 dpi2point div -1 dpi2point div scale neg translate
- dup landscapeMode eq {pop -90 rotate}
-  {rotateMode eq {90 rotate} if} ifelse} bdef
-% line types: solid, dotted, dashed, dotdash
-/SO { [] 0 setdash } bdef
-/DO { [.5 dpi2point mul 4 dpi2point mul] 0 setdash } bdef
-/DA { [6 dpi2point mul] 0 setdash } bdef
-/DD { [.5 dpi2point mul 4 dpi2point mul 6 dpi2point mul 4
-  dpi2point mul] 0 setdash } bdef
-% macros for lines and objects
-/L {lineto stroke} bdef
-/MP {3 1 roll moveto 1 sub {rlineto} repeat} bdef
-/AP {{rlineto} repeat} bdef
-/PDlw -1 def
-/W {/PDlw currentlinewidth def setlinewidth} def
-/PP {closepath eofill} bdef
-/DP {closepath stroke} bdef
-/MR {4 -2 roll moveto dup  0 exch rlineto exch 0 rlineto
-  neg 0 exch rlineto closepath} bdef
-/FR {MR stroke} bdef
-/PR {MR fill} bdef
-/L1i {{currentfile picstr readhexstring pop} image} bdef
-/tMatrix matrix def
-/MakeOval {newpath tMatrix currentmatrix pop translate scale
-0 0 1 0 360 arc tMatrix setmatrix} bdef
-/FO {MakeOval stroke} bdef
-/PO {MakeOval fill} bdef
-/PD {currentlinewidth 2 div 0 360 arc fill
-   PDlw -1 eq not {PDlw w /PDlw -1 def} if} def
-/FA {newpath tMatrix currentmatrix pop translate scale
-  0 0 1 5 -2 roll arc tMatrix setmatrix stroke} bdef
-/PA {newpath tMatrix currentmatrix pop	translate 0 0 moveto scale
-  0 0 1 5 -2 roll arc closepath tMatrix setmatrix fill} bdef
-/FAn {newpath tMatrix currentmatrix pop translate scale
-  0 0 1 5 -2 roll arcn tMatrix setmatrix stroke} bdef
-/PAn {newpath tMatrix currentmatrix pop translate 0 0 moveto scale
-  0 0 1 5 -2 roll arcn closepath tMatrix setmatrix fill} bdef
-/vradius 0 def /hradius 0 def /lry 0 def
-/lrx 0 def /uly 0 def /ulx 0 def /rad 0 def
-/MRR {/vradius xdef /hradius xdef /lry xdef /lrx xdef /uly xdef
-  /ulx xdef newpath tMatrix currentmatrix pop ulx hradius add uly
-  vradius add translate hradius vradius scale 0 0 1 180 270 arc 
-  tMatrix setmatrix lrx hradius sub uly vradius add translate
-  hradius vradius scale 0 0 1 270 360 arc tMatrix setmatrix
-  lrx hradius sub lry vradius sub translate hradius vradius scale
-  0 0 1 0 90 arc tMatrix setmatrix ulx hradius add lry vradius sub
-  translate hradius vradius scale 0 0 1 90 180 arc tMatrix setmatrix
-  closepath} bdef
-/FRR {MRR stroke } bdef
-/PRR {MRR fill } bdef
-/MlrRR {/lry xdef /lrx xdef /uly xdef /ulx xdef /rad lry uly sub 2 div def
-  newpath tMatrix currentmatrix pop ulx rad add uly rad add translate
-  rad rad scale 0 0 1 90 270 arc tMatrix setmatrix lrx rad sub lry rad
-  sub translate rad rad scale 0 0 1 270 90 arc tMatrix setmatrix
-  closepath} bdef
-/FlrRR {MlrRR stroke } bdef
-/PlrRR {MlrRR fill } bdef
-/MtbRR {/lry xdef /lrx xdef /uly xdef /ulx xdef /rad lrx ulx sub 2 div def
-  newpath tMatrix currentmatrix pop ulx rad add uly rad add translate
-  rad rad scale 0 0 1 180 360 arc tMatrix setmatrix lrx rad sub lry rad
-  sub translate rad rad scale 0 0 1 0 180 arc tMatrix setmatrix
-  closepath} bdef
-/FtbRR {MtbRR stroke } bdef
-/PtbRR {MtbRR fill } bdef
-/stri 6 array def /dtri 6 array def
-/smat 6 array def /dmat 6 array def
-/tmat1 6 array def /tmat2 6 array def /dif 3 array def
-/asub {/ind2 exch def /ind1 exch def dup dup
-  ind1 get exch ind2 get sub exch } bdef
-/tri_to_matrix {
-  2 0 asub 3 1 asub 4 0 asub 5 1 asub
-  dup 0 get exch 1 get 7 -1 roll astore } bdef
-/compute_transform {
-  dmat dtri tri_to_matrix tmat1 invertmatrix 
-  smat stri tri_to_matrix tmat2 concatmatrix } bdef
-/ds {stri astore pop} bdef
-/dt {dtri astore pop} bdef
-/db {2 copy /cols xdef /rows xdef mul dup 3 mul string
-  currentfile 
-  3 index 0 eq {/ASCIIHexDecode filter}
-  {/ASCII85Decode filter 3 index 2 eq {/RunLengthDecode filter} if }
-  ifelse exch readstring pop
-  dup 0 3 index getinterval /rbmap xdef
-  dup 2 index dup getinterval /gbmap xdef
-  1 index dup 2 mul exch getinterval /bbmap xdef pop pop}bdef
-/it {gs np dtri aload pop moveto lineto lineto cp c
-  cols rows 8 compute_transform 
-  rbmap gbmap bbmap true 3 colorimage gr}bdef
-/il {newpath moveto lineto stroke}bdef
-currentdict end def
-%%EndProlog
-
-%%BeginSetup
-MathWorks begin
-
-0 cap
-
-end
-%%EndSetup
-
-%%Page: 1 1
-%%BeginPageSetup
-%%PageBoundingBox:  -203   106   799   735
-MathWorks begin
-bpage
-%%EndPageSetup
-
-%%BeginObject: obj1
-bplot
-
-/dpi2point 12 def
-portraitMode -2436 8820 csm
-
-    0     0 12034  7546 rc
-85 dict begin %Colortable dictionary
-/c0 { 0.000000 0.000000 0.000000 sr} bdef
-/c1 { 1.000000 1.000000 1.000000 sr} bdef
-/c2 { 0.900000 0.000000 0.000000 sr} bdef
-/c3 { 0.000000 0.820000 0.000000 sr} bdef
-/c4 { 0.000000 0.000000 0.800000 sr} bdef
-/c5 { 0.910000 0.820000 0.320000 sr} bdef
-/c6 { 1.000000 0.260000 0.820000 sr} bdef
-/c7 { 0.000000 0.820000 0.820000 sr} bdef
-c0
-1 j
-1 sg
-   0    0 12035 7547 rf
-6 w
-0 6150 9327 0 0 -6150 1564 6716 4 MP
-PP
--9327 0 0 6150 9327 0 0 -6150 1564 6716 5 MP stroke
-4 w
-DO
-0 sg
-1564 6716 mt 1564  566 L
-1564  566 mt 1564  566 L
-3118 6716 mt 3118  566 L
-3118  566 mt 3118  566 L
-4673 6716 mt 4673  566 L
-4673  566 mt 4673  566 L
-6227 6716 mt 6227  566 L
-6227  566 mt 6227  566 L
-7782 6716 mt 7782  566 L
-7782  566 mt 7782  566 L
-9336 6716 mt 9336  566 L
-9336  566 mt 9336  566 L
-10891 6716 mt 10891  566 L
-10891  566 mt 10891  566 L
-1564 6716 mt 10891 6716 L
-10891 6716 mt 10891 6716 L
-1564 4666 mt 10891 4666 L
-10891 4666 mt 10891 4666 L
-1564 2616 mt 10891 2616 L
-10891 2616 mt 10891 2616 L
-1564  566 mt 10891  566 L
-10891  566 mt 10891  566 L
-SO
-6 w
-1564  566 mt 10891  566 L
-1564 6716 mt 10891 6716 L
-10891 6716 mt 10891  566 L
-1564 6716 mt 1564  566 L
-1564 6716 mt 10891 6716 L
-1564 6716 mt 1564  566 L
-1564 6716 mt 1564 6622 L
-1564  566 mt 1564  659 L
-%%IncludeResource: font Helvetica
-/Helvetica /WindowsLatin1Encoding 120 FMSR
-
-1531 6861 mt 
-(4) s
-3118 6716 mt 3118 6622 L
-3118  566 mt 3118  659 L
-3085 6861 mt 
-(5) s
-4673 6716 mt 4673 6622 L
-4673  566 mt 4673  659 L
-4640 6861 mt 
-(6) s
-6227 6716 mt 6227 6622 L
-6227  566 mt 6227  659 L
-6194 6861 mt 
-(7) s
-7782 6716 mt 7782 6622 L
-7782  566 mt 7782  659 L
-7749 6861 mt 
-(8) s
-9336 6716 mt 9336 6622 L
-9336  566 mt 9336  659 L
-9303 6861 mt 
-(9) s
-10891 6716 mt 10891 6622 L
-10891  566 mt 10891  659 L
-10825 6861 mt 
-(10) s
-1564 6716 mt 1610 6716 L
-10891 6716 mt 10844 6716 L
-DO
-1564 6716 mt 10891 6716 L
-10891 6716 mt 10891 6716 L
-SO
-1564 6716 mt 1657 6716 L
-10891 6716 mt 10797 6716 L
-1305 6760 mt 
-(10) s
-%%IncludeResource: font Helvetica
-/Helvetica /WindowsLatin1Encoding 80 FMSR
-
-1438 6686 mt 
-(-3) s
-1564 6098 mt 1610 6098 L
-10891 6098 mt 10844 6098 L
-DO
-1564 6098 mt 10891 6098 L
-10891 6098 mt 10891 6098 L
-SO
-1564 5737 mt 1610 5737 L
-10891 5737 mt 10844 5737 L
-DO
-1564 5737 mt 10891 5737 L
-10891 5737 mt 10891 5737 L
-SO
-1564 5481 mt 1610 5481 L
-10891 5481 mt 10844 5481 L
-DO
-1564 5481 mt 10891 5481 L
-10891 5481 mt 10891 5481 L
-SO
-1564 5283 mt 1610 5283 L
-10891 5283 mt 10844 5283 L
-DO
-1564 5283 mt 10891 5283 L
-10891 5283 mt 10891 5283 L
-SO
-1564 5120 mt 1610 5120 L
-10891 5120 mt 10844 5120 L
-DO
-1564 5120 mt 10891 5120 L
-10891 5120 mt 10891 5120 L
-SO
-1564 4983 mt 1610 4983 L
-10891 4983 mt 10844 4983 L
-DO
-1564 4983 mt 10891 4983 L
-10891 4983 mt 10891 4983 L
-SO
-1564 4864 mt 1610 4864 L
-10891 4864 mt 10844 4864 L
-DO
-1564 4864 mt 10891 4864 L
-10891 4864 mt 10891 4864 L
-SO
-1564 4759 mt 1610 4759 L
-10891 4759 mt 10844 4759 L
-DO
-1564 4759 mt 10891 4759 L
-10891 4759 mt 10891 4759 L
-SO
-1564 4666 mt 1610 4666 L
-10891 4666 mt 10844 4666 L
-DO
-1564 4666 mt 10891 4666 L
-10891 4666 mt 10891 4666 L
-SO
-1564 4666 mt 1657 4666 L
-10891 4666 mt 10797 4666 L
-%%IncludeResource: font Helvetica
-/Helvetica /WindowsLatin1Encoding 120 FMSR
-
-1305 4710 mt 
-(10) s
-%%IncludeResource: font Helvetica
-/Helvetica /WindowsLatin1Encoding 80 FMSR
-
-1438 4636 mt 
-(-2) s
-1564 4048 mt 1610 4048 L
-10891 4048 mt 10844 4048 L
-DO
-1564 4048 mt 10891 4048 L
-10891 4048 mt 10891 4048 L
-SO
-1564 3687 mt 1610 3687 L
-10891 3687 mt 10844 3687 L
-DO
-1564 3687 mt 10891 3687 L
-10891 3687 mt 10891 3687 L
-SO
-1564 3431 mt 1610 3431 L
-10891 3431 mt 10844 3431 L
-DO
-1564 3431 mt 10891 3431 L
-10891 3431 mt 10891 3431 L
-SO
-1564 3233 mt 1610 3233 L
-10891 3233 mt 10844 3233 L
-DO
-1564 3233 mt 10891 3233 L
-10891 3233 mt 10891 3233 L
-SO
-1564 3070 mt 1610 3070 L
-10891 3070 mt 10844 3070 L
-DO
-1564 3070 mt 10891 3070 L
-10891 3070 mt 10891 3070 L
-SO
-1564 2933 mt 1610 2933 L
-10891 2933 mt 10844 2933 L
-DO
-1564 2933 mt 10891 2933 L
-10891 2933 mt 10891 2933 L
-SO
-1564 2814 mt 1610 2814 L
-10891 2814 mt 10844 2814 L
-DO
-1564 2814 mt 10891 2814 L
-10891 2814 mt 10891 2814 L
-SO
-1564 2709 mt 1610 2709 L
-10891 2709 mt 10844 2709 L
-DO
-1564 2709 mt 10891 2709 L
-10891 2709 mt 10891 2709 L
-SO
-1564 2616 mt 1610 2616 L
-10891 2616 mt 10844 2616 L
-DO
-1564 2616 mt 10891 2616 L
-10891 2616 mt 10891 2616 L
-SO
-1564 2616 mt 1657 2616 L
-10891 2616 mt 10797 2616 L
-%%IncludeResource: font Helvetica
-/Helvetica /WindowsLatin1Encoding 120 FMSR
-
-1305 2660 mt 
-(10) s
-%%IncludeResource: font Helvetica
-/Helvetica /WindowsLatin1Encoding 80 FMSR
-
-1438 2586 mt 
-(-1) s
-1564 1998 mt 1610 1998 L
-10891 1998 mt 10844 1998 L
-DO
-1564 1998 mt 10891 1998 L
-10891 1998 mt 10891 1998 L
-SO
-1564 1637 mt 1610 1637 L
-10891 1637 mt 10844 1637 L
-DO
-1564 1637 mt 10891 1637 L
-10891 1637 mt 10891 1637 L
-SO
-1564 1381 mt 1610 1381 L
-10891 1381 mt 10844 1381 L
-DO
-1564 1381 mt 10891 1381 L
-10891 1381 mt 10891 1381 L
-SO
-1564 1183 mt 1610 1183 L
-10891 1183 mt 10844 1183 L
-DO
-1564 1183 mt 10891 1183 L
-10891 1183 mt 10891 1183 L
-SO
-1564 1020 mt 1610 1020 L
-10891 1020 mt 10844 1020 L
-DO
-1564 1020 mt 10891 1020 L
-10891 1020 mt 10891 1020 L
-SO
-1564  883 mt 1610  883 L
-10891  883 mt 10844  883 L
-DO
-1564  883 mt 10891  883 L
-10891  883 mt 10891  883 L
-SO
-1564  764 mt 1610  764 L
-10891  764 mt 10844  764 L
-DO
-1564  764 mt 10891  764 L
-10891  764 mt 10891  764 L
-SO
-1564  659 mt 1610  659 L
-10891  659 mt 10844  659 L
-DO
-1564  659 mt 10891  659 L
-10891  659 mt 10891  659 L
-SO
-1564  566 mt 1610  566 L
-10891  566 mt 10844  566 L
-DO
-1564  566 mt 10891  566 L
-10891  566 mt 10891  566 L
-SO
-1564  566 mt 1657  566 L
-10891  566 mt 10797  566 L
-%%IncludeResource: font Helvetica
-/Helvetica /WindowsLatin1Encoding 120 FMSR
-
-1305  610 mt 
-(10) s
-%%IncludeResource: font Helvetica
-/Helvetica /WindowsLatin1Encoding 80 FMSR
-
-1438  536 mt 
-(0) s
-1564  566 mt 10891  566 L
-1564 6716 mt 10891 6716 L
-10891 6716 mt 10891  566 L
-1564 6716 mt 1564  566 L
-gs 1564 565 9328 6151 rc
-DA
-24 w
-/c8 { 1.000000 0.000000 0.000000 sr} bdef
-c8
-155 2213 156 1361 155 890 156 532 155 227 155 63 156 13 155 0 
-156 0 155 0 156 0 155 0 156 0 155 0 155 0 156 0 
-155 0 156 0 155 0 156 0 155 0 156 0 155 0 156 0 
-155 0 155 0 156 0 155 0 156 0 155 0 156 0 155 0 
-156 0 155 0 155 0 1564 566 36 MP stroke
-SO
-/c9 { 0.000000 0.000000 1.000000 sr} bdef
-c9
-155 1941 156 1413 155 929 156 521 155 225 155 67 156 11 155 1 
-156 0 155 0 156 0 155 0 156 0 155 0 155 0 156 0 
-155 0 156 0 155 0 156 0 155 0 156 0 155 0 156 0 
-155 0 155 0 156 0 155 0 156 0 155 0 156 0 155 0 
-156 0 155 0 155 0 1564 566 36 MP stroke
-gr
-
-24 w
-c9
-gs 1418 420 5733 5401 rc
-0 j
-69 119 -138 0 69 -119 1564 645 4 MP
-DP
-69 119 -138 0 69 -119 1719 645 4 MP
-DP
-69 119 -138 0 69 -119 1874 645 4 MP
-DP
-69 119 -138 0 69 -119 2030 645 4 MP
-DP
-69 119 -138 0 69 -119 2185 645 4 MP
-DP
-69 119 -138 0 69 -119 2341 645 4 MP
-DP
-69 119 -138 0 69 -119 2496 645 4 MP
-DP
-69 119 -138 0 69 -119 2652 645 4 MP
-DP
-69 119 -138 0 69 -119 2807 645 4 MP
-DP
-69 119 -138 0 69 -119 2963 645 4 MP
-DP
-69 119 -138 0 69 -119 3118 645 4 MP
-DP
-69 119 -138 0 69 -119 3273 645 4 MP
-DP
-69 119 -138 0 69 -119 3429 645 4 MP
-DP
-69 119 -138 0 69 -119 3584 645 4 MP
-DP
-69 119 -138 0 69 -119 3740 645 4 MP
-DP
-69 119 -138 0 69 -119 3895 645 4 MP
-DP
-69 119 -138 0 69 -119 4051 645 4 MP
-DP
-69 119 -138 0 69 -119 4206 645 4 MP
-DP
-69 119 -138 0 69 -119 4362 645 4 MP
-DP
-69 119 -138 0 69 -119 4517 645 4 MP
-DP
-69 119 -138 0 69 -119 4673 645 4 MP
-DP
-69 119 -138 0 69 -119 4828 645 4 MP
-DP
-69 119 -138 0 69 -119 4983 645 4 MP
-DP
-69 119 -138 0 69 -119 5139 645 4 MP
-DP
-69 119 -138 0 69 -119 5294 645 4 MP
-DP
-69 119 -138 0 69 -119 5450 645 4 MP
-DP
-69 119 -138 0 69 -119 5605 645 4 MP
-DP
-69 119 -138 0 69 -119 5761 645 4 MP
-DP
-69 119 -138 0 69 -119 5916 646 4 MP
-DP
-69 119 -138 0 69 -119 6072 657 4 MP
-DP
-69 119 -138 0 69 -119 6227 724 4 MP
-DP
-69 119 -138 0 69 -119 6382 949 4 MP
-DP
-69 119 -138 0 69 -119 6538 1470 4 MP
-DP
-69 119 -138 0 69 -119 6693 2399 4 MP
-DP
-69 119 -138 0 69 -119 6849 3812 4 MP
-DP
-69 119 -138 0 69 -119 7004 5753 4 MP
-DP
-gr
-
-gs 1564 565 9328 6151 rc
-DA
-c8
-155 1227 156 1029 155 769 156 487 155 261 155 118 156 37 155 7 
-156 2 155 0 156 0 155 0 156 0 155 0 155 0 156 0 
-155 0 156 0 155 0 156 0 155 0 156 0 155 0 156 0 
-155 0 155 0 156 0 155 0 156 0 155 0 156 0 155 0 
-156 0 155 0 155 0 1564 566 36 MP stroke
-SO
-c9
-155 1421 156 1078 155 762 156 484 155 265 155 115 156 38 155 8 
-156 1 155 0 156 0 155 0 156 0 155 0 155 0 156 0 
-155 0 156 0 155 0 156 0 155 0 156 0 155 0 156 0 
-155 0 155 0 156 0 155 0 156 0 155 0 156 0 155 0 
-156 0 155 0 155 0 1564 566 36 MP stroke
-gr
-
-gs 1418 420 5733 4465 rc
-0 j
--69 119 -69 -119 138 0 1495 606 4 MP
-DP
--69 119 -69 -119 138 0 1650 606 4 MP
-DP
--69 119 -69 -119 138 0 1805 606 4 MP
-DP
--69 119 -69 -119 138 0 1961 606 4 MP
-DP
--69 119 -69 -119 138 0 2116 606 4 MP
-DP
--69 119 -69 -119 138 0 2272 606 4 MP
-DP
--69 119 -69 -119 138 0 2427 606 4 MP
-DP
--69 119 -69 -119 138 0 2583 606 4 MP
-DP
--69 119 -69 -119 138 0 2738 606 4 MP
-DP
--69 119 -69 -119 138 0 2894 606 4 MP
-DP
--69 119 -69 -119 138 0 3049 606 4 MP
-DP
--69 119 -69 -119 138 0 3204 606 4 MP
-DP
--69 119 -69 -119 138 0 3360 606 4 MP
-DP
--69 119 -69 -119 138 0 3515 606 4 MP
-DP
--69 119 -69 -119 138 0 3671 606 4 MP
-DP
--69 119 -69 -119 138 0 3826 606 4 MP
-DP
--69 119 -69 -119 138 0 3982 606 4 MP
-DP
--69 119 -69 -119 138 0 4137 606 4 MP
-DP
--69 119 -69 -119 138 0 4293 606 4 MP
-DP
--69 119 -69 -119 138 0 4448 606 4 MP
-DP
--69 119 -69 -119 138 0 4604 606 4 MP
-DP
--69 119 -69 -119 138 0 4759 606 4 MP
-DP
--69 119 -69 -119 138 0 4914 606 4 MP
-DP
--69 119 -69 -119 138 0 5070 606 4 MP
-DP
--69 119 -69 -119 138 0 5225 606 4 MP
-DP
--69 119 -69 -119 138 0 5381 606 4 MP
-DP
--69 119 -69 -119 138 0 5536 606 4 MP
-DP
--69 119 -69 -119 138 0 5692 607 4 MP
-DP
--69 119 -69 -119 138 0 5847 615 4 MP
-DP
--69 119 -69 -119 138 0 6003 653 4 MP
-DP
--69 119 -69 -119 138 0 6158 768 4 MP
-DP
--69 119 -69 -119 138 0 6313 1033 4 MP
-DP
--69 119 -69 -119 138 0 6469 1517 4 MP
-DP
--69 119 -69 -119 138 0 6624 2279 4 MP
-DP
--69 119 -69 -119 138 0 6780 3357 4 MP
-DP
--69 119 -69 -119 138 0 6935 4778 4 MP
-DP
-gr
-
-gs 1564 565 9328 6151 rc
-DA
-c8
-155 1072 156 1101 155 997 156 617 155 477 156 307 155 166 155 85 
-156 36 155 12 156 2 155 0 156 0 155 0 156 0 155 0 
-155 0 156 0 155 0 156 0 155 0 156 0 155 0 156 0 
-155 0 156 0 155 0 155 0 156 0 155 0 156 0 155 0 
-156 0 155 0 156 0 155 0 155 0 1564 566 38 MP stroke
-SO
-c9
-155 1331 156 1096 155 870 156 659 155 467 156 304 155 174 155 85 
-156 34 155 10 156 3 155 0 156 0 155 0 156 0 155 0 
-155 0 156 0 155 0 156 0 155 0 156 0 155 0 156 0 
-155 0 156 0 155 0 155 0 156 0 155 0 156 0 155 0 
-156 0 155 0 156 0 155 0 155 0 1564 566 38 MP stroke
-gr
-
-gs 1418 420 6044 5326 rc
-0 j
-0 -94 -94 0 0 94 94 0 1517 519 5 MP
-DP
-0 -94 -94 0 0 94 94 0 1672 519 5 MP
-DP
-0 -94 -94 0 0 94 94 0 1827 519 5 MP
-DP
-0 -94 -94 0 0 94 94 0 1983 519 5 MP
-DP
-0 -94 -94 0 0 94 94 0 2138 519 5 MP
-DP
-0 -94 -94 0 0 94 94 0 2294 519 5 MP
-DP
-0 -94 -94 0 0 94 94 0 2449 519 5 MP
-DP
-0 -94 -94 0 0 94 94 0 2605 519 5 MP
-DP
-0 -94 -94 0 0 94 94 0 2760 519 5 MP
-DP
-0 -94 -94 0 0 94 94 0 2916 519 5 MP
-DP
-0 -94 -94 0 0 94 94 0 3071 519 5 MP
-DP
-0 -94 -94 0 0 94 94 0 3226 519 5 MP
-DP
-0 -94 -94 0 0 94 94 0 3382 519 5 MP
-DP
-0 -94 -94 0 0 94 94 0 3537 519 5 MP
-DP
-0 -94 -94 0 0 94 94 0 3693 519 5 MP
-DP
-0 -94 -94 0 0 94 94 0 3848 519 5 MP
-DP
-0 -94 -94 0 0 94 94 0 4004 519 5 MP
-DP
-0 -94 -94 0 0 94 94 0 4159 519 5 MP
-DP
-0 -94 -94 0 0 94 94 0 4315 519 5 MP
-DP
-0 -94 -94 0 0 94 94 0 4470 519 5 MP
-DP
-0 -94 -94 0 0 94 94 0 4626 519 5 MP
-DP
-0 -94 -94 0 0 94 94 0 4781 519 5 MP
-DP
-0 -94 -94 0 0 94 94 0 4936 519 5 MP
-DP
-0 -94 -94 0 0 94 94 0 5092 519 5 MP
-DP
-0 -94 -94 0 0 94 94 0 5247 519 5 MP
-DP
-0 -94 -94 0 0 94 94 0 5403 519 5 MP
-DP
-0 -94 -94 0 0 94 94 0 5558 519 5 MP
-DP
-0 -94 -94 0 0 94 94 0 5714 522 5 MP
-DP
-0 -94 -94 0 0 94 94 0 5869 532 5 MP
-DP
-0 -94 -94 0 0 94 94 0 6025 566 5 MP
-DP
-0 -94 -94 0 0 94 94 0 6180 651 5 MP
-DP
-0 -94 -94 0 0 94 94 0 6335 825 5 MP
-DP
-0 -94 -94 0 0 94 94 0 6491 1129 5 MP
-DP
-0 -94 -94 0 0 94 94 0 6646 1596 5 MP
-DP
-0 -94 -94 0 0 94 94 0 6802 2255 5 MP
-DP
-0 -94 -94 0 0 94 94 0 6957 3125 5 MP
-DP
-0 -94 -94 0 0 94 94 0 7113 4221 5 MP
-DP
-0 -94 -94 0 0 94 94 0 7268 5552 5 MP
-DP
-gr
-
-gs 1564 565 9328 6151 rc
-DA
-c8
-155 792 156 656 155 666 156 595 155 485 156 430 155 307 156 256 
-155 204 156 156 155 96 155 66 156 40 155 18 156 14 155 7 
-156 2 155 1 156 0 155 0 155 0 156 0 155 0 156 0 
-155 0 156 0 155 0 156 0 155 0 156 0 155 0 155 0 
-156 0 155 0 156 0 155 0 156 0 155 0 156 0 155 0 
-155 0 1564 566 42 MP stroke
-SO
-c9
-155 828 156 738 155 651 156 565 155 483 156 404 155 330 156 262 
-155 200 156 146 155 102 155 66 156 40 155 22 156 12 155 5 
-156 2 155 1 156 0 155 0 155 0 156 0 155 0 156 0 
-155 0 156 0 155 0 156 0 155 0 156 0 155 0 155 0 
-156 0 155 0 156 0 155 0 156 0 155 0 156 0 155 0 
-155 0 1564 566 42 MP stroke
-gr
-
-gs 1418 420 6666 5150 rc
-1504  566 mt 1624  566 L
-1564  506 mt 1564  626 L
-1659  566 mt 1779  566 L
-1719  506 mt 1719  626 L
-1814  566 mt 1934  566 L
-1874  506 mt 1874  626 L
-1970  566 mt 2090  566 L
-2030  506 mt 2030  626 L
-2125  566 mt 2245  566 L
-2185  506 mt 2185  626 L
-2281  566 mt 2401  566 L
-2341  506 mt 2341  626 L
-2436  566 mt 2556  566 L
-2496  506 mt 2496  626 L
-2592  566 mt 2712  566 L
-2652  506 mt 2652  626 L
-2747  566 mt 2867  566 L
-2807  506 mt 2807  626 L
-2903  566 mt 3023  566 L
-2963  506 mt 2963  626 L
-3058  566 mt 3178  566 L
-3118  506 mt 3118  626 L
-3213  566 mt 3333  566 L
-3273  506 mt 3273  626 L
-3369  566 mt 3489  566 L
-3429  506 mt 3429  626 L
-3524  566 mt 3644  566 L
-3584  506 mt 3584  626 L
-3680  566 mt 3800  566 L
-3740  506 mt 3740  626 L
-3835  566 mt 3955  566 L
-3895  506 mt 3895  626 L
-3991  566 mt 4111  566 L
-4051  506 mt 4051  626 L
-4146  566 mt 4266  566 L
-4206  506 mt 4206  626 L
-4302  566 mt 4422  566 L
-4362  506 mt 4362  626 L
-4457  566 mt 4577  566 L
-4517  506 mt 4517  626 L
-4613  566 mt 4733  566 L
-4673  506 mt 4673  626 L
-4768  566 mt 4888  566 L
-4828  506 mt 4828  626 L
-4923  566 mt 5043  566 L
-4983  506 mt 4983  626 L
-5079  566 mt 5199  566 L
-5139  506 mt 5139  626 L
-5234  567 mt 5354  567 L
-5294  507 mt 5294  627 L
-5390  569 mt 5510  569 L
-5450  509 mt 5450  629 L
-5545  574 mt 5665  574 L
-5605  514 mt 5605  634 L
-5701  586 mt 5821  586 L
-5761  526 mt 5761  646 L
-5856  608 mt 5976  608 L
-5916  548 mt 5916  668 L
-6012  648 mt 6132  648 L
-6072  588 mt 6072  708 L
-6167  714 mt 6287  714 L
-6227  654 mt 6227  774 L
-6322  816 mt 6442  816 L
-6382  756 mt 6382  876 L
-6478  962 mt 6598  962 L
-6538  902 mt 6538 1022 L
-6633 1162 mt 6753 1162 L
-6693 1102 mt 6693 1222 L
-6789 1424 mt 6909 1424 L
-6849 1364 mt 6849 1484 L
-6944 1754 mt 7064 1754 L
-7004 1694 mt 7004 1814 L
-7100 2158 mt 7220 2158 L
-7160 2098 mt 7160 2218 L
-7255 2641 mt 7375 2641 L
-7315 2581 mt 7315 2701 L
-7411 3206 mt 7531 3206 L
-7471 3146 mt 7471 3266 L
-7566 3857 mt 7686 3857 L
-7626 3797 mt 7626 3917 L
-7722 4595 mt 7842 4595 L
-7782 4535 mt 7782 4655 L
-7877 5423 mt 7997 5423 L
-7937 5363 mt 7937 5483 L
-gr
-
-gs 1564 565 9328 6151 rc
-DA
-c8
-156 565 155 539 156 524 155 469 155 379 156 361 155 318 156 278 
-155 191 156 179 155 151 156 119 155 103 156 79 155 51 155 42 
-156 29 155 17 156 13 155 4 156 3 155 1 156 1 155 1 
-155 0 156 0 155 0 156 0 155 0 156 0 155 0 156 0 
-155 0 156 0 155 0 155 0 156 0 155 0 156 0 155 0 
-156 0 155 0 156 0 155 0 155 0 1564 566 46 MP stroke
-SO
-c9
-156 559 155 513 156 467 155 423 155 380 156 337 155 297 156 257 
-155 220 156 186 155 152 156 124 155 97 156 74 155 55 155 39 
-156 27 155 18 156 11 155 7 156 3 155 3 156 1 155 0 
-155 0 156 0 155 0 156 0 155 0 156 0 155 0 156 0 
-155 0 156 0 155 0 155 0 156 0 155 0 156 0 155 0 
-156 0 155 0 156 0 155 0 155 0 1564 566 46 MP stroke
-gr
-
-gs 1418 420 7288 4543 rc
-0 j
--21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 
-34 0 17 30 17 -30 34 0 1513 536 13 MP
-DP
--21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 
-34 0 17 30 17 -30 34 0 1668 536 13 MP
-DP
--21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 
-34 0 17 30 17 -30 34 0 1823 536 13 MP
-DP
--21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 
-34 0 17 30 17 -30 34 0 1979 536 13 MP
-DP
--21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 
-34 0 17 30 17 -30 34 0 2134 536 13 MP
-DP
--21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 
-34 0 17 30 17 -30 34 0 2290 536 13 MP
-DP
--21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 
-34 0 17 30 17 -30 34 0 2445 536 13 MP
-DP
--21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 
-34 0 17 30 17 -30 34 0 2601 536 13 MP
-DP
--21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 
-34 0 17 30 17 -30 34 0 2756 536 13 MP
-DP
--21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 
-34 0 17 30 17 -30 34 0 2912 536 13 MP
-DP
--21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 
-34 0 17 30 17 -30 34 0 3067 536 13 MP
-DP
--21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 
-34 0 17 30 17 -30 34 0 3222 536 13 MP
-DP
--21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 
-34 0 17 30 17 -30 34 0 3378 536 13 MP
-DP
--21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 
-34 0 17 30 17 -30 34 0 3533 536 13 MP
-DP
--21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 
-34 0 17 30 17 -30 34 0 3689 536 13 MP
-DP
--21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 
-34 0 17 30 17 -30 34 0 3844 536 13 MP
-DP
--21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 
-34 0 17 30 17 -30 34 0 4000 536 13 MP
-DP
--21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 
-34 0 17 30 17 -30 34 0 4155 536 13 MP
-DP
--21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 
-34 0 17 30 17 -30 34 0 4311 536 13 MP
-DP
--21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 
-34 0 17 30 17 -30 34 0 4466 536 13 MP
-DP
--21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 
-34 0 17 30 17 -30 34 0 4622 536 13 MP
-DP
--21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 
-34 0 17 30 17 -30 34 0 4777 536 13 MP
-DP
--21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 
-34 0 17 30 17 -30 34 0 4932 536 13 MP
-DP
--21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 
-34 0 17 30 17 -30 34 0 5088 537 13 MP
-DP
--21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 
-34 0 17 30 17 -30 34 0 5243 540 13 MP
-DP
--21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 
-34 0 17 30 17 -30 34 0 5399 543 13 MP
-DP
--21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 
-34 0 17 30 17 -30 34 0 5554 550 13 MP
-DP
--21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 
-34 0 17 30 17 -30 34 0 5710 561 13 MP
-DP
--21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 
-34 0 17 30 17 -30 34 0 5865 579 13 MP
-DP
--21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 
-34 0 17 30 17 -30 34 0 6021 606 13 MP
-DP
--21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 
-34 0 17 30 17 -30 34 0 6176 645 13 MP
-DP
--21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 
-34 0 17 30 17 -30 34 0 6331 700 13 MP
-DP
--21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 
-34 0 17 30 17 -30 34 0 6487 774 13 MP
-DP
--21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 
-34 0 17 30 17 -30 34 0 6642 871 13 MP
-DP
--21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 
-34 0 17 30 17 -30 34 0 6798 995 13 MP
-DP
--21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 
-34 0 17 30 17 -30 34 0 6953 1147 13 MP
-DP
--21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 
-34 0 17 30 17 -30 34 0 7109 1333 13 MP
-DP
--21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 
-34 0 17 30 17 -30 34 0 7264 1553 13 MP
-DP
--21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 
-34 0 17 30 17 -30 34 0 7420 1810 13 MP
-DP
--21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 
-34 0 17 30 17 -30 34 0 7575 2107 13 MP
-DP
--21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 
-34 0 17 30 17 -30 34 0 7731 2444 13 MP
-DP
--21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 
-34 0 17 30 17 -30 34 0 7886 2824 13 MP
-DP
--21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 
-34 0 17 30 17 -30 34 0 8041 3247 13 MP
-DP
--21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 
-34 0 17 30 17 -30 34 0 8197 3714 13 MP
-DP
--21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 
-34 0 17 30 17 -30 34 0 8352 4227 13 MP
-DP
--21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 
-34 0 17 30 17 -30 34 0 8508 4786 13 MP
-DP
-gr
-
-gs 1564 565 9328 6151 rc
-DA
-c8
-155 267 156 465 155 427 155 334 156 330 155 207 156 302 155 247 
-156 234 155 230 156 181 155 171 155 140 156 136 155 106 156 86 
-155 85 156 81 155 56 156 50 155 44 156 28 155 23 155 16 
-156 17 155 12 156 6 155 5 156 6 155 2 156 3 155 1 
-155 0 156 0 155 0 156 0 155 0 156 0 155 0 156 0 
-155 0 156 0 155 0 155 0 156 0 155 0 156 0 155 0 
-156 0 155 0 156 0 155 0 155 0 1564 566 54 MP stroke
-SO
-c9
-155 389 156 368 155 346 155 325 156 304 155 283 156 262 155 242 
-156 221 155 203 156 183 155 165 155 147 156 130 155 114 156 98 
-155 85 156 72 155 60 156 49 155 40 156 32 155 24 155 19 
-156 14 155 11 156 7 155 6 156 3 155 2 156 2 155 1 
-155 1 156 0 155 0 156 0 155 0 156 0 155 0 156 0 
-155 0 156 0 155 0 155 0 156 0 155 0 156 0 155 0 
-156 0 155 0 156 0 155 0 155 0 1564 566 54 MP stroke
-gr
-
-gs 1418 420 8531 4501 rc
-1504  566 mt 1624  566 L
-1564  506 mt 1564  626 L
-1659  566 mt 1779  566 L
-1719  506 mt 1719  626 L
-1814  566 mt 1934  566 L
-1874  506 mt 1874  626 L
-1970  566 mt 2090  566 L
-2030  506 mt 2030  626 L
-2125  566 mt 2245  566 L
-2185  506 mt 2185  626 L
-2281  566 mt 2401  566 L
-2341  506 mt 2341  626 L
-2436  566 mt 2556  566 L
-2496  506 mt 2496  626 L
-2592  566 mt 2712  566 L
-2652  506 mt 2652  626 L
-2747  566 mt 2867  566 L
-2807  506 mt 2807  626 L
-2903  566 mt 3023  566 L
-2963  506 mt 2963  626 L
-3058  566 mt 3178  566 L
-3118  506 mt 3118  626 L
-3213  566 mt 3333  566 L
-3273  506 mt 3273  626 L
-3369  566 mt 3489  566 L
-3429  506 mt 3429  626 L
-3524  566 mt 3644  566 L
-3584  506 mt 3584  626 L
-3680  566 mt 3800  566 L
-3740  506 mt 3740  626 L
-3835  566 mt 3955  566 L
-3895  506 mt 3895  626 L
-3991  566 mt 4111  566 L
-4051  506 mt 4051  626 L
-4146  566 mt 4266  566 L
-4206  506 mt 4206  626 L
-4302  566 mt 4422  566 L
-4362  506 mt 4362  626 L
-4457  566 mt 4577  566 L
-4517  506 mt 4517  626 L
-4613  566 mt 4733  566 L
-4673  506 mt 4673  626 L
-4768  567 mt 4888  567 L
-4828  507 mt 4828  627 L
-4923  568 mt 5043  568 L
-4983  508 mt 4983  628 L
-5079  570 mt 5199  570 L
-5139  510 mt 5139  630 L
-5234  572 mt 5354  572 L
-5294  512 mt 5294  632 L
-5390  575 mt 5510  575 L
-5450  515 mt 5450  635 L
-5545  581 mt 5665  581 L
-5605  521 mt 5605  641 L
-5701  588 mt 5821  588 L
-5761  528 mt 5761  648 L
-5856  599 mt 5976  599 L
-5916  539 mt 5916  659 L
-6012  613 mt 6132  613 L
-6072  553 mt 6072  673 L
-6167  632 mt 6287  632 L
-6227  572 mt 6227  692 L
-6322  656 mt 6442  656 L
-6382  596 mt 6382  716 L
-6478  688 mt 6598  688 L
-6538  628 mt 6538  748 L
-6633  728 mt 6753  728 L
-6693  668 mt 6693  788 L
-6789  777 mt 6909  777 L
-6849  717 mt 6849  837 L
-6944  837 mt 7064  837 L
-7004  777 mt 7004  897 L
-7100  909 mt 7220  909 L
-7160  849 mt 7160  969 L
-7255  994 mt 7375  994 L
-7315  934 mt 7315 1054 L
-7411 1092 mt 7531 1092 L
-7471 1032 mt 7471 1152 L
-7566 1206 mt 7686 1206 L
-7626 1146 mt 7626 1266 L
-7722 1336 mt 7842 1336 L
-7782 1276 mt 7782 1396 L
-7877 1483 mt 7997 1483 L
-7937 1423 mt 7937 1543 L
-8032 1648 mt 8152 1648 L
-8092 1588 mt 8092 1708 L
-8188 1831 mt 8308 1831 L
-8248 1771 mt 8248 1891 L
-8343 2034 mt 8463 2034 L
-8403 1974 mt 8403 2094 L
-8499 2255 mt 8619 2255 L
-8559 2195 mt 8559 2315 L
-8654 2497 mt 8774 2497 L
-8714 2437 mt 8714 2557 L
-8810 2759 mt 8930 2759 L
-8870 2699 mt 8870 2819 L
-8965 3042 mt 9085 3042 L
-9025 2982 mt 9025 3102 L
-9121 3346 mt 9241 3346 L
-9181 3286 mt 9181 3406 L
-9276 3671 mt 9396 3671 L
-9336 3611 mt 9336 3731 L
-9431 4017 mt 9551 4017 L
-9491 3957 mt 9491 4077 L
-9587 4385 mt 9707 4385 L
-9647 4325 mt 9647 4445 L
-9742 4774 mt 9862 4774 L
-9802 4714 mt 9802 4834 L
-1522  524 mt 1606  608 L
-1606  524 mt 1522  608 L
-1677  524 mt 1761  608 L
-1761  524 mt 1677  608 L
-1832  524 mt 1916  608 L
-1916  524 mt 1832  608 L
-1988  524 mt 2072  608 L
-2072  524 mt 1988  608 L
-2143  524 mt 2227  608 L
-2227  524 mt 2143  608 L
-2299  524 mt 2383  608 L
-2383  524 mt 2299  608 L
-2454  524 mt 2538  608 L
-2538  524 mt 2454  608 L
-2610  524 mt 2694  608 L
-2694  524 mt 2610  608 L
-2765  524 mt 2849  608 L
-2849  524 mt 2765  608 L
-2921  524 mt 3005  608 L
-3005  524 mt 2921  608 L
-3076  524 mt 3160  608 L
-3160  524 mt 3076  608 L
-3231  524 mt 3315  608 L
-3315  524 mt 3231  608 L
-3387  524 mt 3471  608 L
-3471  524 mt 3387  608 L
-3542  524 mt 3626  608 L
-3626  524 mt 3542  608 L
-3698  524 mt 3782  608 L
-3782  524 mt 3698  608 L
-3853  524 mt 3937  608 L
-3937  524 mt 3853  608 L
-4009  524 mt 4093  608 L
-4093  524 mt 4009  608 L
-4164  524 mt 4248  608 L
-4248  524 mt 4164  608 L
-4320  524 mt 4404  608 L
-4404  524 mt 4320  608 L
-4475  524 mt 4559  608 L
-4559  524 mt 4475  608 L
-4631  524 mt 4715  608 L
-4715  524 mt 4631  608 L
-4786  525 mt 4870  609 L
-4870  525 mt 4786  609 L
-4941  526 mt 5025  610 L
-5025  526 mt 4941  610 L
-5097  528 mt 5181  612 L
-5181  528 mt 5097  612 L
-5252  530 mt 5336  614 L
-5336  530 mt 5252  614 L
-5408  533 mt 5492  617 L
-5492  533 mt 5408  617 L
-5563  539 mt 5647  623 L
-5647  539 mt 5563  623 L
-5719  546 mt 5803  630 L
-5803  546 mt 5719  630 L
-5874  557 mt 5958  641 L
-5958  557 mt 5874  641 L
-6030  571 mt 6114  655 L
-6114  571 mt 6030  655 L
-6185  590 mt 6269  674 L
-6269  590 mt 6185  674 L
-6340  614 mt 6424  698 L
-6424  614 mt 6340  698 L
-6496  646 mt 6580  730 L
-6580  646 mt 6496  730 L
-6651  686 mt 6735  770 L
-6735  686 mt 6651  770 L
-6807  735 mt 6891  819 L
-6891  735 mt 6807  819 L
-6962  795 mt 7046  879 L
-7046  795 mt 6962  879 L
-7118  867 mt 7202  951 L
-7202  867 mt 7118  951 L
-7273  952 mt 7357 1036 L
-7357  952 mt 7273 1036 L
-7429 1050 mt 7513 1134 L
-7513 1050 mt 7429 1134 L
-7584 1164 mt 7668 1248 L
-7668 1164 mt 7584 1248 L
-7740 1294 mt 7824 1378 L
-7824 1294 mt 7740 1378 L
-7895 1441 mt 7979 1525 L
-7979 1441 mt 7895 1525 L
-8050 1606 mt 8134 1690 L
-8134 1606 mt 8050 1690 L
-8206 1789 mt 8290 1873 L
-8290 1789 mt 8206 1873 L
-8361 1992 mt 8445 2076 L
-8445 1992 mt 8361 2076 L
-8517 2213 mt 8601 2297 L
-8601 2213 mt 8517 2297 L
-8672 2455 mt 8756 2539 L
-8756 2455 mt 8672 2539 L
-8828 2717 mt 8912 2801 L
-8912 2717 mt 8828 2801 L
-8983 3000 mt 9067 3084 L
-9067 3000 mt 8983 3084 L
-9139 3304 mt 9223 3388 L
-9223 3304 mt 9139 3388 L
-9294 3629 mt 9378 3713 L
-9378 3629 mt 9294 3713 L
-9449 3975 mt 9533 4059 L
-9533 3975 mt 9449 4059 L
-9605 4343 mt 9689 4427 L
-9689 4343 mt 9605 4427 L
-9760 4732 mt 9844 4816 L
-9844 4732 mt 9760 4816 L
-gr
-
-gs 1564 565 9328 6151 rc
-gr
-
-0 sg
-%%IncludeResource: font Helvetica
-/Helvetica /WindowsLatin1Encoding 120 FMSR
-
-6083 7004 mt 
-(SINR) s
-1223 3799 mt  -90 rotate
-(BLER) s
-90 rotate
-1547 6758 mt 
-( ) s
-10875  607 mt 
-( ) s
-6 w
-1 sg
-0 2058 1696 0 0 -2058 1601 6675 4 MP
-PP
--1696 0 0 2058 1696 0 0 -2058 1601 6675 5 MP stroke
-4 w
-DO
-SO
-6 w
-0 sg
-1601 4617 mt 3297 4617 L
-1601 6675 mt 3297 6675 L
-3297 6675 mt 3297 4617 L
-1601 6675 mt 1601 4617 L
-1601 6675 mt 3297 6675 L
-1601 6675 mt 1601 4617 L
-1601 4617 mt 3297 4617 L
-1601 6675 mt 3297 6675 L
-3297 6675 mt 3297 4617 L
-1601 6675 mt 1601 4617 L
-2073 4764 mt 
-(TB = 6000 \(AWGN\)) s
-gs 1601 4617 1697 2059 rc
-DA
-24 w
-c8
-363 0 1673 4722 2 MP stroke
-SO
-gr
-
-24 w
-c8
-0 sg
-2073 4932 mt 
-(TB = 6000 \(estimated\)) s
-gs 1601 4617 1697 2059 rc
-c9
-363 0 1673 4890 2 MP stroke
-gs 1708 4744 293 293 rc
-0 j
-69 119 -138 0 69 -119 1854 4969 4 MP
-DP
-gr
-
-gr
-
-c9
-0 sg
-2073 5100 mt 
-(TB = 4000 \(AWGN\)) s
-gs 1601 4617 1697 2059 rc
-DA
-c8
-363 0 1673 5058 2 MP stroke
-SO
-gr
-
-c8
-0 sg
-2073 5268 mt 
-(TB = 4000 \(estimated\)) s
-gs 1601 4617 1697 2059 rc
-c9
-363 0 1673 5226 2 MP stroke
-gs 1708 5080 293 293 rc
-0 j
--69 119 -69 -119 138 0 1785 5266 4 MP
-DP
-gr
-
-gr
-
-c9
-0 sg
-2073 5436 mt 
-(TB = 2560 \(AWGN\)) s
-gs 1601 4617 1697 2059 rc
-DA
-c8
-363 0 1673 5394 2 MP stroke
-SO
-gr
-
-c8
-0 sg
-2073 5604 mt 
-(TB = 2560 \(estimated\)) s
-gs 1601 4617 1697 2059 rc
-c9
-363 0 1673 5562 2 MP stroke
-gs 1708 5416 293 293 rc
-0 j
-0 -94 -94 0 0 94 94 0 1807 5515 5 MP
-DP
-gr
-
-gr
-
-c9
-0 sg
-2073 5773 mt 
-(TB = 1024 \(AWGN\)) s
-gs 1601 4617 1697 2059 rc
-DA
-c8
-363 0 1673 5730 2 MP stroke
-SO
-gr
-
-c8
-0 sg
-2073 5941 mt 
-(TB = 1024 \(estimated\)) s
-gs 1601 4617 1697 2059 rc
-c9
-363 0 1673 5898 2 MP stroke
-gs 1708 5752 293 293 rc
-1794 5898 mt 1914 5898 L
-1854 5838 mt 1854 5958 L
-gr
-
-gr
-
-c9
-0 sg
-2073 6109 mt 
-(TB = 512 \(AWGN\)) s
-gs 1601 4617 1697 2059 rc
-DA
-c8
-363 0 1673 6066 2 MP stroke
-SO
-gr
-
-c8
-0 sg
-2073 6277 mt 
-(TB = 512 \(estimated\)) s
-gs 1601 4617 1697 2059 rc
-c9
-363 0 1673 6233 2 MP stroke
-gs 1708 6087 293 293 rc
-0 j
--21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 
-34 0 17 30 17 -30 34 0 1803 6203 13 MP
-DP
-gr
-
-gr
-
-c9
-0 sg
-2073 6445 mt 
-(TB = 256 \(AWGN\)) s
-gs 1601 4617 1697 2059 rc
-DA
-c8
-363 0 1673 6401 2 MP stroke
-SO
-gr
-
-c8
-0 sg
-2073 6613 mt 
-(TB = 256 \(estimated\)) s
-gs 1601 4617 1697 2059 rc
-c9
-363 0 1673 6569 2 MP stroke
-gr
-
-c9
-gs 1708 6423 293 293 rc
-1794 6569 mt 1914 6569 L
-1854 6509 mt 1854 6629 L
-1812 6527 mt 1896 6611 L
-1896 6527 mt 1812 6611 L
-gr
-
-gs 1601 4617 1697 2059 rc
-6 w
-gr
-
-6 w
-
-end %%Color Dict
-
-eplot
-%%EndObject
-
-epage
-end
-
-showpage
-
-%%Trailer
-%%EOF
-
-cleartomark
-countdictstack exch sub { end } repeat
-restore grestore
-%
-% End Imported PIC File: /home/mmiozzo/ns3/lena/ns-3-lena-pem/src/lte/doc/source/figures/MCS_14.eps
-%%EndDocument
-%
-% Ellipse
-45.000 slw
-n 10035 4455 324 324 0 360 DrawEllipse gs col4 s gr
-
-/Helvetica-Bold ff 349.25 scf sf
-10125 4050 m
-gs 1 -1 sc (H) col4 sh gr
-% here ends figure;
-pagefooter
-showpage
-%%Trailer
-%EOF
Binary file src/lte/doc/source/figures/MCS_16_test.pdf has changed
Binary file src/lte/doc/source/figures/MCS_16_test.png has changed
Binary file src/lte/doc/source/figures/MCS_17_20.pdf has changed
Binary file src/lte/doc/source/figures/MCS_1_4.pdf has changed
Binary file src/lte/doc/source/figures/MCS_21_24.pdf has changed
Binary file src/lte/doc/source/figures/MCS_25_27.pdf has changed
Binary file src/lte/doc/source/figures/MCS_25_27.png has changed
Binary file src/lte/doc/source/figures/MCS_25_28.pdf has changed
Binary file src/lte/doc/source/figures/MCS_25_28.png has changed
Binary file src/lte/doc/source/figures/MCS_29_29.pdf has changed
Binary file src/lte/doc/source/figures/MCS_29_29.png has changed
--- a/src/lte/doc/source/figures/MCS_2_test.eps	Fri May 18 10:30:14 2012 +0200
+++ b/src/lte/doc/source/figures/MCS_2_test.eps	Tue May 29 10:42:17 2012 +0200
@@ -1,9 +1,9 @@
 %!PS-Adobe-2.0 EPSF-2.0
 %%Title: MCS_2_test.fig
 %%Creator: fig2dev Version 3.2 Patchlevel 5a
-%%CreationDate: Tue Jan 10 16:58:02 2012
-%%BoundingBox: 0 0 1095 718
-%Magnification: 1.0000
+%%CreationDate: Tue May 22 12:12:53 2012
+%%BoundingBox: 0 0 548 359
+%Magnification: 0.5000
 %%EndComments
 %%BeginProlog
 /$F2psDict 200 dict def
@@ -94,13 +94,13 @@
 
 /pageheader {
 save
-newpath 0 718 moveto 0 0 lineto 1095 0 lineto 1095 718 lineto closepath clip newpath
--2.8 748.3 translate
+newpath 0 359 moveto 0 0 lineto 548 0 lineto 548 359 lineto closepath clip newpath
+-1.4 374.2 translate
 1 -1 scale
 $F2psBegin
 10 setmiterlimit
 0 slj 0 slc
- 0.06299 0.06299 sc
+ 0.03150 0.03150 sc
 } bind def
 /pagefooter {
 $F2psEnd
@@ -117,29 +117,29 @@
 %
 % pen to black in case this eps object doesn't set color first
 0 0 0 setrgbcolor
-% Begin Imported EPS File: /home/mmiozzo/ns3/lena/ns-3-lena-pem/src/lte/doc/source/figures/MCS_3_test.eps
-%%BeginDocument: /home/mmiozzo/ns3/lena/ns-3-lena-pem/src/lte/doc/source/figures/MCS_3_test.eps
+% Begin Imported EPS File: /home/mmiozzo/sandbox/lena/ns-3-lena-dev/src/lte/doc/source/figures/MCS_3.eps
+%%BeginDocument: /home/mmiozzo/sandbox/lena/ns-3-lena-dev/src/lte/doc/source/figures/MCS_3.eps
 %
 n gs
 45 495 tr
-17.335329 -18.100159 sc
+17.439759 -18.100159 sc
 0 -629 tr
-203 -106 tr
+200 -106 tr
 sa
-n -203 106 m 799 106 l 799 735 l -203 735 l cp clip n
+n -200 106 m 796 106 l 796 735 l -200 735 l cp clip n
 countdictstack
 mark
 /showpage {} def
 % EPS file follows:
 %!PS-Adobe-3.0 EPSF-3.0
 %%Creator: MATLAB, The Mathworks, Inc. Version 7.8.0.347 (R2009a). Operating System: Microsoft Windows XP.
-%%Title: C:\Documents and Settings\Marco Miozzo\My Documents\MATLAB\Final\MCS_27_allTBsizes\MCS_3_test.eps
-%%CreationDate: 01/10/2012  16:41:09
+%%Title: \\Hercules.cttc.es\mmiozzo\Ubiquisys\ErrorModel\29_MCS_PLOTS\MCS_PLOTS\MCS_3.eps
+%%CreationDate: 05/17/2012  17:12:20
 %%DocumentNeededFonts: Helvetica
 %%DocumentProcessColors: Cyan Magenta Yellow Black
 %%LanguageLevel: 2
 %%Pages: 1
-%%BoundingBox:  -203   106   799   735
+%%BoundingBox:  -200   106   796   735
 %%EndComments
 
 %%BeginProlog
@@ -302,7 +302,7 @@
 
 %%Page: 1 1
 %%BeginPageSetup
-%%PageBoundingBox:  -203   106   799   735
+%%PageBoundingBox:  -200   106   796   735
 MathWorks begin
 bpage
 %%EndPageSetup
@@ -311,9 +311,9 @@
 bplot
 
 /dpi2point 12 def
-portraitMode -2436 8820 csm
+portraitMode -2400 8820 csm
 
-    0     0 12034  7546 rc
+    0     0 11962  7546 rc
 85 dict begin %Colortable dictionary
 /c0 { 0.000000 0.000000 0.000000 sr} bdef
 /c1 { 1.000000 1.000000 1.000000 sr} bdef
@@ -326,1147 +326,1001 @@
 c0
 1 j
 1 sg
-   0    0 12035 7547 rf
+   0    0 11963 7547 rf
 6 w
-0 6150 9327 0 0 -6150 1564 6716 4 MP
+0 6150 9271 0 0 -6150 1555 6716 4 MP
 PP
--9327 0 0 6150 9327 0 0 -6150 1564 6716 5 MP stroke
+-9271 0 0 6150 9271 0 0 -6150 1555 6716 5 MP stroke
 4 w
 DO
 0 sg
-1564 6716 mt 1564  566 L
-1564  566 mt 1564  566 L
-2600 6716 mt 2600  566 L
-2600  566 mt 2600  566 L
-3636 6716 mt 3636  566 L
-3636  566 mt 3636  566 L
-4673 6716 mt 4673  566 L
-4673  566 mt 4673  566 L
-5709 6716 mt 5709  566 L
-5709  566 mt 5709  566 L
-6745 6716 mt 6745  566 L
-6745  566 mt 6745  566 L
-7782 6716 mt 7782  566 L
-7782  566 mt 7782  566 L
-8818 6716 mt 8818  566 L
-8818  566 mt 8818  566 L
-9854 6716 mt 9854  566 L
-9854  566 mt 9854  566 L
-10891 6716 mt 10891  566 L
-10891  566 mt 10891  566 L
-1564 6716 mt 10891 6716 L
-10891 6716 mt 10891 6716 L
-1564 4666 mt 10891 4666 L
-10891 4666 mt 10891 4666 L
-1564 2616 mt 10891 2616 L
-10891 2616 mt 10891 2616 L
-1564  566 mt 10891  566 L
-10891  566 mt 10891  566 L
+1555 6716 mt 1555  566 L
+1555  566 mt 1555  566 L
+2879 6716 mt 2879  566 L
+2879  566 mt 2879  566 L
+4203 6716 mt 4203  566 L
+4203  566 mt 4203  566 L
+5528 6716 mt 5528  566 L
+5528  566 mt 5528  566 L
+6852 6716 mt 6852  566 L
+6852  566 mt 6852  566 L
+8177 6716 mt 8177  566 L
+8177  566 mt 8177  566 L
+9501 6716 mt 9501  566 L
+9501  566 mt 9501  566 L
+10826 6716 mt 10826  566 L
+10826  566 mt 10826  566 L
+1555 6716 mt 10826 6716 L
+10826 6716 mt 10826 6716 L
+1555 5178 mt 10826 5178 L
+10826 5178 mt 10826 5178 L
+1555 3641 mt 10826 3641 L
+10826 3641 mt 10826 3641 L
+1555 2103 mt 10826 2103 L
+10826 2103 mt 10826 2103 L
+1555  566 mt 10826  566 L
+10826  566 mt 10826  566 L
 SO
 6 w
-1564  566 mt 10891  566 L
-1564 6716 mt 10891 6716 L
-10891 6716 mt 10891  566 L
-1564 6716 mt 1564  566 L
-1564 6716 mt 10891 6716 L
-
-
-1564 6716 mt 1564  566 L
-1564 6716 mt 1564 6622 L
-1564  566 mt 1564  659 L
+1555  566 mt 10826  566 L
+1555 6716 mt 10826 6716 L
+10826 6716 mt 10826  566 L
+1555 6716 mt 1555  566 L
+1555 6716 mt 10826 6716 L
+1555 6716 mt 1555  566 L
+1555 6716 mt 1555 6623 L
+1555  566 mt 1555  658 L
 %%IncludeResource: font Helvetica
 /Helvetica /WindowsLatin1Encoding 120 FMSR
 
-1461 6861 mt 
+1452 6861 mt 
+(-7) s
+2879 6716 mt 2879 6623 L
+2879  566 mt 2879  658 L
+2726 6861 mt 
+(-6.5) s
+4203 6716 mt 4203 6623 L
+4203  566 mt 4203  658 L
+4100 6861 mt 
+(-6) s
+5528 6716 mt 5528 6623 L
+5528  566 mt 5528  658 L
+5375 6861 mt 
+(-5.5) s
+6852 6716 mt 6852 6623 L
+6852  566 mt 6852  658 L
+6749 6861 mt 
 (-5) s
-2600 6716 mt 2600 6622 L
-2600  566 mt 2600  659 L
-2447 6861 mt 
+8177 6716 mt 8177 6623 L
+8177  566 mt 8177  658 L
+8024 6861 mt 
 (-4.5) s
-3636 6716 mt 3636 6622 L
-3636  566 mt 3636  659 L
-3533 6861 mt 
+9501 6716 mt 9501 6623 L
+9501  566 mt 9501  658 L
+9398 6861 mt 
 (-4) s
-4673 6716 mt 4673 6622 L
-4673  566 mt 4673  659 L
-4520 6861 mt 
+10826 6716 mt 10826 6623 L
+10826  566 mt 10826  658 L
+10673 6861 mt 
 (-3.5) s
-5709 6716 mt 5709 6622 L
-5709  566 mt 5709  659 L
-5606 6861 mt 
-(-3) s
-6745 6716 mt 6745 6622 L
-6745  566 mt 6745  659 L
-6592 6861 mt 
-(-2.5) s
-7782 6716 mt 7782 6622 L
-7782  566 mt 7782  659 L
-7679 6861 mt 
-(-2) s
-8818 6716 mt 8818 6622 L
-8818  566 mt 8818  659 L
-8665 6861 mt 
-(-1.5) s
-9854 6716 mt 9854 6622 L
-9854  566 mt 9854  659 L
-9751 6861 mt 
-(-1) s
-10891 6716 mt 10891 6622 L
-10891  566 mt 10891  659 L
-10738 6861 mt 
-(-0.5) s
-1564 6716 mt 1610 6716 L
-10891 6716 mt 10844 6716 L
+1555 6716 mt 1601 6716 L
+10826 6716 mt 10779 6716 L
+DO
+1555 6716 mt 10826 6716 L
+10826 6716 mt 10826 6716 L
+SO
+1555 6716 mt 1647 6716 L
+10826 6716 mt 10733 6716 L
+1296 6760 mt 
+(10) s
+%%IncludeResource: font Helvetica
+/Helvetica /WindowsLatin1Encoding 80 FMSR
+
+1429 6686 mt 
+(-4) s
+1555 6253 mt 1601 6253 L
+10826 6253 mt 10779 6253 L
+DO
+1555 6253 mt 10826 6253 L
+10826 6253 mt 10826 6253 L
+SO
+1555 5982 mt 1601 5982 L
+10826 5982 mt 10779 5982 L
+DO
+1555 5982 mt 10826 5982 L
+10826 5982 mt 10826 5982 L
+SO
+1555 5790 mt 1601 5790 L
+10826 5790 mt 10779 5790 L
+DO
+1555 5790 mt 10826 5790 L
+10826 5790 mt 10826 5790 L
+SO
+1555 5641 mt 1601 5641 L
+10826 5641 mt 10779 5641 L
 DO
-1564 6716 mt 10891 6716 L
-10891 6716 mt 10891 6716 L
+1555 5641 mt 10826 5641 L
+10826 5641 mt 10826 5641 L
+SO
+1555 5519 mt 1601 5519 L
+10826 5519 mt 10779 5519 L
+DO
+1555 5519 mt 10826 5519 L
+10826 5519 mt 10826 5519 L
+SO
+1555 5416 mt 1601 5416 L
+10826 5416 mt 10779 5416 L
+DO
+1555 5416 mt 10826 5416 L
+10826 5416 mt 10826 5416 L
 SO
-1564 6716 mt 1657 6716 L
-10891 6716 mt 10797 6716 L
-1305 6760 mt 
+1555 5327 mt 1601 5327 L
+10826 5327 mt 10779 5327 L
+DO
+1555 5327 mt 10826 5327 L
+10826 5327 mt 10826 5327 L
+SO
+1555 5248 mt 1601 5248 L
+10826 5248 mt 10779 5248 L
+DO
+1555 5248 mt 10826 5248 L
+10826 5248 mt 10826 5248 L
+SO
+1555 5178 mt 1601 5178 L
+10826 5178 mt 10779 5178 L
+DO
+1555 5178 mt 10826 5178 L
+10826 5178 mt 10826 5178 L
+SO
+1555 5178 mt 1647 5178 L
+10826 5178 mt 10733 5178 L
+%%IncludeResource: font Helvetica
+/Helvetica /WindowsLatin1Encoding 120 FMSR
+
+1296 5222 mt 
 (10) s
 %%IncludeResource: font Helvetica
 /Helvetica /WindowsLatin1Encoding 80 FMSR
 
-1438 6686 mt 
+1429 5148 mt 
 (-3) s
-1564 6098 mt 1610 6098 L
-10891 6098 mt 10844 6098 L
+1555 4715 mt 1601 4715 L
+10826 4715 mt 10779 4715 L
 DO
-1564 6098 mt 10891 6098 L
-10891 6098 mt 10891 6098 L
+1555 4715 mt 10826 4715 L
+10826 4715 mt 10826 4715 L
 SO
-1564 5737 mt 1610 5737 L
-10891 5737 mt 10844 5737 L
+1555 4444 mt 1601 4444 L
+10826 4444 mt 10779 4444 L
 DO
-1564 5737 mt 10891 5737 L
-10891 5737 mt 10891 5737 L
+1555 4444 mt 10826 4444 L
+10826 4444 mt 10826 4444 L
 SO
-1564 5481 mt 1610 5481 L
-10891 5481 mt 10844 5481 L
+1555 4252 mt 1601 4252 L
+10826 4252 mt 10779 4252 L
 DO
-1564 5481 mt 10891 5481 L
-10891 5481 mt 10891 5481 L
+1555 4252 mt 10826 4252 L
+10826 4252 mt 10826 4252 L
 SO
-1564 5283 mt 1610 5283 L
-10891 5283 mt 10844 5283 L
+1555 4103 mt 1601 4103 L
+10826 4103 mt 10779 4103 L
 DO
-1564 5283 mt 10891 5283 L
-10891 5283 mt 10891 5283 L
+1555 4103 mt 10826 4103 L
+10826 4103 mt 10826 4103 L
 SO
-1564 5120 mt 1610 5120 L
-10891 5120 mt 10844 5120 L
+1555 3982 mt 1601 3982 L
+10826 3982 mt 10779 3982 L
 DO
-1564 5120 mt 10891 5120 L
-10891 5120 mt 10891 5120 L
+1555 3982 mt 10826 3982 L
+10826 3982 mt 10826 3982 L
 SO
-1564 4983 mt 1610 4983 L
-10891 4983 mt 10844 4983 L
+1555 3879 mt 1601 3879 L
+10826 3879 mt 10779 3879 L
 DO
-1564 4983 mt 10891 4983 L
-10891 4983 mt 10891 4983 L
+1555 3879 mt 10826 3879 L
+10826 3879 mt 10826 3879 L
 SO
-1564 4864 mt 1610 4864 L
-10891 4864 mt 10844 4864 L
+1555 3789 mt 1601 3789 L
+10826 3789 mt 10779 3789 L
 DO
-1564 4864 mt 10891 4864 L
-10891 4864 mt 10891 4864 L
+1555 3789 mt 10826 3789 L
+10826 3789 mt 10826 3789 L
 SO
-1564 4759 mt 1610 4759 L
-10891 4759 mt 10844 4759 L
+1555 3711 mt 1601 3711 L
+10826 3711 mt 10779 3711 L
 DO
-1564 4759 mt 10891 4759 L
-10891 4759 mt 10891 4759 L
+1555 3711 mt 10826 3711 L
+10826 3711 mt 10826 3711 L
 SO
-1564 4666 mt 1610 4666 L
-10891 4666 mt 10844 4666 L
+1555 3641 mt 1601 3641 L
+10826 3641 mt 10779 3641 L
 DO
-1564 4666 mt 10891 4666 L
-10891 4666 mt 10891 4666 L
+1555 3641 mt 10826 3641 L
+10826 3641 mt 10826 3641 L
 SO
-1564 4666 mt 1657 4666 L
-10891 4666 mt 10797 4666 L
+1555 3641 mt 1647 3641 L
+10826 3641 mt 10733 3641 L
 %%IncludeResource: font Helvetica
 /Helvetica /WindowsLatin1Encoding 120 FMSR
 
-1305 4710 mt 
+1296 3685 mt 
 (10) s
 %%IncludeResource: font Helvetica
 /Helvetica /WindowsLatin1Encoding 80 FMSR
 
-1438 4636 mt 
+1429 3611 mt 
 (-2) s
-1564 4048 mt 1610 4048 L
-10891 4048 mt 10844 4048 L
+1555 3178 mt 1601 3178 L
+10826 3178 mt 10779 3178 L
 DO
-1564 4048 mt 10891 4048 L
-10891 4048 mt 10891 4048 L
+1555 3178 mt 10826 3178 L
+10826 3178 mt 10826 3178 L
 SO
-1564 3687 mt 1610 3687 L
-10891 3687 mt 10844 3687 L
+1555 2907 mt 1601 2907 L
+10826 2907 mt 10779 2907 L
 DO
-1564 3687 mt 10891 3687 L
-10891 3687 mt 10891 3687 L
+1555 2907 mt 10826 2907 L
+10826 2907 mt 10826 2907 L
 SO
-1564 3431 mt 1610 3431 L
-10891 3431 mt 10844 3431 L
+1555 2715 mt 1601 2715 L
+10826 2715 mt 10779 2715 L
 DO
-1564 3431 mt 10891 3431 L
-10891 3431 mt 10891 3431 L
+1555 2715 mt 10826 2715 L
+10826 2715 mt 10826 2715 L
 SO
-1564 3233 mt 1610 3233 L
-10891 3233 mt 10844 3233 L
+1555 2566 mt 1601 2566 L
+10826 2566 mt 10779 2566 L
 DO
-1564 3233 mt 10891 3233 L
-10891 3233 mt 10891 3233 L
+1555 2566 mt 10826 2566 L
+10826 2566 mt 10826 2566 L
 SO
-1564 3070 mt 1610 3070 L
-10891 3070 mt 10844 3070 L
+1555 2444 mt 1601 2444 L
+10826 2444 mt 10779 2444 L
 DO
-1564 3070 mt 10891 3070 L
-10891 3070 mt 10891 3070 L
+1555 2444 mt 10826 2444 L
+10826 2444 mt 10826 2444 L
 SO
-1564 2933 mt 1610 2933 L
-10891 2933 mt 10844 2933 L
+1555 2341 mt 1601 2341 L
+10826 2341 mt 10779 2341 L
 DO
-1564 2933 mt 10891 2933 L
-10891 2933 mt 10891 2933 L
+1555 2341 mt 10826 2341 L
+10826 2341 mt 10826 2341 L
 SO
-1564 2814 mt 1610 2814 L
-10891 2814 mt 10844 2814 L
+1555 2252 mt 1601 2252 L
+10826 2252 mt 10779 2252 L
 DO
-1564 2814 mt 10891 2814 L
-10891 2814 mt 10891 2814 L
+1555 2252 mt 10826 2252 L
+10826 2252 mt 10826 2252 L
 SO
-1564 2709 mt 1610 2709 L
-10891 2709 mt 10844 2709 L
+1555 2173 mt 1601 2173 L
+10826 2173 mt 10779 2173 L
 DO
-1564 2709 mt 10891 2709 L
-10891 2709 mt 10891 2709 L
+1555 2173 mt 10826 2173 L
+10826 2173 mt 10826 2173 L
 SO
-1564 2616 mt 1610 2616 L
-10891 2616 mt 10844 2616 L
+1555 2103 mt 1601 2103 L
+10826 2103 mt 10779 2103 L
 DO
-1564 2616 mt 10891 2616 L
-10891 2616 mt 10891 2616 L
+1555 2103 mt 10826 2103 L
+10826 2103 mt 10826 2103 L
 SO
-1564 2616 mt 1657 2616 L
-10891 2616 mt 10797 2616 L
+1555 2103 mt 1647 2103 L
+10826 2103 mt 10733 2103 L
 %%IncludeResource: font Helvetica
 /Helvetica /WindowsLatin1Encoding 120 FMSR
 
-1305 2660 mt 
+1296 2147 mt 
 (10) s
 %%IncludeResource: font Helvetica
 /Helvetica /WindowsLatin1Encoding 80 FMSR
 
-1438 2586 mt 
+1429 2073 mt 
 (-1) s
-1564 1998 mt 1610 1998 L
-10891 1998 mt 10844 1998 L
+1555 1640 mt 1601 1640 L
+10826 1640 mt 10779 1640 L
 DO
-1564 1998 mt 10891 1998 L
-10891 1998 mt 10891 1998 L
+1555 1640 mt 10826 1640 L
+10826 1640 mt 10826 1640 L
 SO
-1564 1637 mt 1610 1637 L
-10891 1637 mt 10844 1637 L
+1555 1369 mt 1601 1369 L
+10826 1369 mt 10779 1369 L
 DO
-1564 1637 mt 10891 1637 L
-10891 1637 mt 10891 1637 L
+1555 1369 mt 10826 1369 L
+10826 1369 mt 10826 1369 L
 SO
-1564 1381 mt 1610 1381 L
-10891 1381 mt 10844 1381 L
+1555 1177 mt 1601 1177 L
+10826 1177 mt 10779 1177 L
 DO
-1564 1381 mt 10891 1381 L
-10891 1381 mt 10891 1381 L
+1555 1177 mt 10826 1177 L
+10826 1177 mt 10826 1177 L
 SO
-1564 1183 mt 1610 1183 L
-10891 1183 mt 10844 1183 L
+1555 1028 mt 1601 1028 L
+10826 1028 mt 10779 1028 L
 DO
-1564 1183 mt 10891 1183 L
-10891 1183 mt 10891 1183 L
+1555 1028 mt 10826 1028 L
+10826 1028 mt 10826 1028 L
 SO
-1564 1020 mt 1610 1020 L
-10891 1020 mt 10844 1020 L
+1555  907 mt 1601  907 L
+10826  907 mt 10779  907 L
 DO
-1564 1020 mt 10891 1020 L
-10891 1020 mt 10891 1020 L
+1555  907 mt 10826  907 L
+10826  907 mt 10826  907 L
 SO
-1564  883 mt 1610  883 L
-10891  883 mt 10844  883 L
+1555  804 mt 1601  804 L
+10826  804 mt 10779  804 L
 DO
-1564  883 mt 10891  883 L
-10891  883 mt 10891  883 L
+1555  804 mt 10826  804 L
+10826  804 mt 10826  804 L
 SO
-1564  764 mt 1610  764 L
-10891  764 mt 10844  764 L
+1555  714 mt 1601  714 L
+10826  714 mt 10779  714 L
 DO
-1564  764 mt 10891  764 L
-10891  764 mt 10891  764 L
+1555  714 mt 10826  714 L
+10826  714 mt 10826  714 L
 SO
-1564  659 mt 1610  659 L
-10891  659 mt 10844  659 L
+1555  636 mt 1601  636 L
+10826  636 mt 10779  636 L
 DO
-1564  659 mt 10891  659 L
-10891  659 mt 10891  659 L
+1555  636 mt 10826  636 L
+10826  636 mt 10826  636 L
 SO
-1564  566 mt 1610  566 L
-10891  566 mt 10844  566 L
+1555  566 mt 1601  566 L
+10826  566 mt 10779  566 L
 DO
-1564  566 mt 10891  566 L
-10891  566 mt 10891  566 L
+1555  566 mt 10826  566 L
+10826  566 mt 10826  566 L
 SO
-1564  566 mt 1657  566 L
-10891  566 mt 10797  566 L
+1555  566 mt 1647  566 L
+10826  566 mt 10733  566 L
 %%IncludeResource: font Helvetica
 /Helvetica /WindowsLatin1Encoding 120 FMSR
 
-1305  610 mt 
+1296  610 mt 
 (10) s
 %%IncludeResource: font Helvetica
 /Helvetica /WindowsLatin1Encoding 80 FMSR
 
-1438  536 mt 
+1429  536 mt 
 (0) s
-1564  566 mt 10891  566 L
-1564 6716 mt 10891 6716 L
-10891 6716 mt 10891  566 L
-1564 6716 mt 1564  566 L
-gs 1564 565 9328 6151 rc
+1555  566 mt 10826  566 L
+1555 6716 mt 10826 6716 L
+10826 6716 mt 10826  566 L
+1555 6716 mt 1555  566 L
+gs 1555 566 9272 6151 rc
 DA
 24 w
 /c8 { 1.000000 0.000000 0.000000 sr} bdef
 c8
-207 1668 207 1311 208 634 207 225 207 51 207 5 208 0 207 0 
-207 0 208 0 207 0 207 0 207 0 208 0 207 0 207 0 
-207 0 208 0 207 0 207 0 207 0 1564 566 22 MP stroke
+265 1762 265 1483 265 880 265 357 264 109 265 19 265 2 265 0 
+265 0 265 0 265 0 265 0 264 0 1555 566 14 MP stroke
 SO
 /c9 { 0.000000 0.000000 1.000000 sr} bdef
 c9
-207 2023 207 1257 208 638 207 229 207 48 207 5 208 0 207 0 
-207 0 208 0 207 0 207 0 207 0 208 0 207 0 207 0 
-207 0 208 0 207 0 207 0 207 0 1564 566 22 MP stroke
+265 2136 265 1434 265 831 265 372 264 108 265 16 265 1 265 0 
+265 0 265 0 265 0 265 0 264 0 1555 566 14 MP stroke
 gr
 
 24 w
 c9
-gs 1418 420 4645 4493 rc
+gs 1409 420 3736 5191 rc
 0 j
-69 119 -138 0 69 -119 1564 645 4 MP
+69 119 -138 0 69 -119 1555 645 4 MP
 DP
-69 119 -138 0 69 -119 1771 645 4 MP
-DP
-69 119 -138 0 69 -119 1978 645 4 MP
-DP
-69 119 -138 0 69 -119 2185 645 4 MP
+69 119 -138 0 69 -119 1819 645 4 MP
 DP
-69 119 -138 0 69 -119 2393 645 4 MP
+69 119 -138 0 69 -119 2084 645 4 MP
 DP
-69 119 -138 0 69 -119 2600 645 4 MP
-DP
-69 119 -138 0 69 -119 2807 645 4 MP
+69 119 -138 0 69 -119 2349 645 4 MP
 DP
-69 119 -138 0 69 -119 3014 645 4 MP
+69 119 -138 0 69 -119 2614 645 4 MP
 DP
-69 119 -138 0 69 -119 3222 645 4 MP
-DP
-69 119 -138 0 69 -119 3429 645 4 MP
+69 119 -138 0 69 -119 2879 645 4 MP
 DP
-69 119 -138 0 69 -119 3636 645 4 MP
+69 119 -138 0 69 -119 3144 645 4 MP
 DP
-69 119 -138 0 69 -119 3843 645 4 MP
-DP
-69 119 -138 0 69 -119 4051 645 4 MP
+69 119 -138 0 69 -119 3409 646 4 MP
 DP
-69 119 -138 0 69 -119 4258 645 4 MP
+69 119 -138 0 69 -119 3674 662 4 MP
 DP
-69 119 -138 0 69 -119 4465 645 4 MP
-DP
-69 119 -138 0 69 -119 4673 645 4 MP
+69 119 -138 0 69 -119 3938 770 4 MP
 DP
-69 119 -138 0 69 -119 4880 650 4 MP
+69 119 -138 0 69 -119 4203 1142 4 MP
 DP
-69 119 -138 0 69 -119 5087 698 4 MP
-DP
-69 119 -138 0 69 -119 5294 927 4 MP
+69 119 -138 0 69 -119 4468 1973 4 MP
 DP
-69 119 -138 0 69 -119 5502 1565 4 MP
+69 119 -138 0 69 -119 4733 3407 4 MP
 DP
-69 119 -138 0 69 -119 5709 2822 4 MP
-DP
-69 119 -138 0 69 -119 5916 4845 4 MP
+69 119 -138 0 69 -119 4998 5543 4 MP
 DP
 gr
 
-gs 1564 565 9328 6151 rc
+gs 1555 566 9272 6151 rc
 DA
 c8
-207 1509 207 1331 207 908 208 510 207 239 207 72 207 13 208 2 
-207 0 207 0 208 0 207 0 207 0 207 0 208 0 207 0 
-207 0 207 0 208 0 207 0 207 0 207 0 1564 566 23 MP stroke
+265 1645 265 904 265 633 265 346 264 120 265 32 265 6 265 0 
+265 0 265 0 265 0 265 0 264 0 1555 566 14 MP stroke
 SO
 c9
-207 1950 207 1401 207 914 208 515 207 231 207 74 207 15 208 2 
-207 0 207 0 208 0 207 0 207 0 207 0 208 0 207 0 
-207 0 207 0 208 0 207 0 207 0 207 0 1564 566 23 MP stroke
+265 1516 265 1049 265 645 265 331 264 126 265 32 265 5 265 0 
+265 0 265 0 265 0 265 0 264 0 1555 566 14 MP stroke
+gr
+
+gs 1409 420 3736 3997 rc
+0 j
+-69 119 -69 -119 138 0 1486 606 4 MP
+DP
+-69 119 -69 -119 138 0 1750 606 4 MP
+DP
+-69 119 -69 -119 138 0 2015 606 4 MP
+DP
+-69 119 -69 -119 138 0 2280 606 4 MP
+DP
+-69 119 -69 -119 138 0 2545 606 4 MP
+DP
+-69 119 -69 -119 138 0 2810 606 4 MP
+DP
+-69 119 -69 -119 138 0 3075 606 4 MP
+DP
+-69 119 -69 -119 138 0 3340 611 4 MP
+DP
+-69 119 -69 -119 138 0 3605 643 4 MP
+DP
+-69 119 -69 -119 138 0 3869 769 4 MP
+DP
+-69 119 -69 -119 138 0 4134 1100 4 MP
+DP
+-69 119 -69 -119 138 0 4399 1745 4 MP
+DP
+-69 119 -69 -119 138 0 4664 2794 4 MP
+DP
+-69 119 -69 -119 138 0 4929 4310 4 MP
+DP
 gr
 
-gs 1418 420 4852 5395 rc
+gs 1555 566 9272 6151 rc
+DA
+c8
+265 1107 265 1022 265 640 265 476 265 241 264 140 265 44 265 12 
+265 4 265 0 265 0 265 0 265 0 264 0 1555 566 15 MP stroke
+SO
+c9
+265 1275 265 966 265 690 265 451 265 261 264 126 265 48 265 14 
+265 3 265 0 265 0 265 0 265 0 264 0 1555 566 15 MP stroke
+gr
+
+gs 1409 420 4001 4127 rc
 0 j
--69 119 -69 -119 138 0 1495 606 4 MP
-DP
--69 119 -69 -119 138 0 1702 606 4 MP
-DP
--69 119 -69 -119 138 0 1909 606 4 MP
-DP
--69 119 -69 -119 138 0 2116 606 4 MP
-DP
--69 119 -69 -119 138 0 2324 606 4 MP
+0 -94 -94 0 0 94 94 0 1508 519 5 MP
 DP
--69 119 -69 -119 138 0 2531 606 4 MP
-DP
--69 119 -69 -119 138 0 2738 606 4 MP
-DP
--69 119 -69 -119 138 0 2945 606 4 MP
+0 -94 -94 0 0 94 94 0 1772 519 5 MP
 DP
--69 119 -69 -119 138 0 3153 606 4 MP
+0 -94 -94 0 0 94 94 0 2037 519 5 MP
 DP
--69 119 -69 -119 138 0 3360 606 4 MP
-DP
--69 119 -69 -119 138 0 3567 606 4 MP
+0 -94 -94 0 0 94 94 0 2302 519 5 MP
 DP
--69 119 -69 -119 138 0 3774 606 4 MP
+0 -94 -94 0 0 94 94 0 2567 519 5 MP
 DP
--69 119 -69 -119 138 0 3982 606 4 MP
-DP
--69 119 -69 -119 138 0 4189 606 4 MP
+0 -94 -94 0 0 94 94 0 2832 519 5 MP
 DP
--69 119 -69 -119 138 0 4396 606 4 MP
+0 -94 -94 0 0 94 94 0 3097 522 5 MP
 DP
--69 119 -69 -119 138 0 4604 608 4 MP
+0 -94 -94 0 0 94 94 0 3362 536 5 MP
 DP
--69 119 -69 -119 138 0 4811 623 4 MP
+0 -94 -94 0 0 94 94 0 3627 584 5 MP
 DP
--69 119 -69 -119 138 0 5018 697 4 MP
+0 -94 -94 0 0 94 94 0 3891 710 5 MP
 DP
--69 119 -69 -119 138 0 5225 928 4 MP
+0 -94 -94 0 0 94 94 0 4156 971 5 MP
 DP
--69 119 -69 -119 138 0 5433 1443 4 MP
+0 -94 -94 0 0 94 94 0 4421 1422 5 MP
 DP
--69 119 -69 -119 138 0 5640 2357 4 MP
+0 -94 -94 0 0 94 94 0 4686 2112 5 MP
 DP
--69 119 -69 -119 138 0 5847 3758 4 MP
+0 -94 -94 0 0 94 94 0 4951 3078 5 MP
 DP
--69 119 -69 -119 138 0 6054 5708 4 MP
+0 -94 -94 0 0 94 94 0 5216 4353 5 MP
 DP
 gr
 
-gs 1564 565 9328 6151 rc
+gs 1555 566 9272 6151 rc
 DA
 c8
-208 1533 207 1279 207 961 207 668 208 391 207 212 207 88 207 32 
-208 6 207 1 207 0 208 0 207 0 207 0 207 0 208 0 
-207 0 207 0 207 0 208 0 207 0 207 0 207 0 1564 566 24 MP stroke
+265 692 265 673 265 431 265 366 265 310 265 221 265 142 264 89 
+265 45 265 22 265 14 265 6 265 0 265 0 265 0 264 0 
+1555 566 17 MP stroke
 SO
 c9
-208 1693 207 1311 207 963 207 655 208 401 207 210 207 90 207 29 
-208 7 207 1 207 0 208 0 207 0 207 0 207 0 208 0 
-207 0 207 0 207 0 208 0 207 0 207 0 207 0 1564 566 24 MP stroke
+265 779 265 641 265 514 265 399 265 298 265 212 265 141 264 87 
+265 49 265 25 265 11 265 4 265 2 265 0 265 0 264 0 
+1555 566 17 MP stroke
 gr
 
-gs 1418 420 5060 5653 rc
-0 j
-0 -94 -94 0 0 94 94 0 1517 519 5 MP
-DP
-0 -94 -94 0 0 94 94 0 1724 519 5 MP
-DP
-0 -94 -94 0 0 94 94 0 1931 519 5 MP
-DP
-0 -94 -94 0 0 94 94 0 2138 519 5 MP
-DP
-0 -94 -94 0 0 94 94 0 2346 519 5 MP
-DP
-0 -94 -94 0 0 94 94 0 2553 519 5 MP
-DP
-0 -94 -94 0 0 94 94 0 2760 519 5 MP
-DP
-0 -94 -94 0 0 94 94 0 2967 519 5 MP
-DP
-0 -94 -94 0 0 94 94 0 3175 519 5 MP
-DP
-0 -94 -94 0 0 94 94 0 3382 519 5 MP
-DP
-0 -94 -94 0 0 94 94 0 3589 519 5 MP
-DP
-0 -94 -94 0 0 94 94 0 3796 519 5 MP
-DP
-0 -94 -94 0 0 94 94 0 4004 519 5 MP
-DP
-0 -94 -94 0 0 94 94 0 4211 519 5 MP
-DP
-0 -94 -94 0 0 94 94 0 4418 520 5 MP
-DP
-0 -94 -94 0 0 94 94 0 4626 527 5 MP
-DP
-0 -94 -94 0 0 94 94 0 4833 556 5 MP
-DP
-0 -94 -94 0 0 94 94 0 5040 646 5 MP
-DP
-0 -94 -94 0 0 94 94 0 5247 856 5 MP
-DP
-0 -94 -94 0 0 94 94 0 5455 1257 5 MP
-DP
-0 -94 -94 0 0 94 94 0 5662 1912 5 MP
-DP
-0 -94 -94 0 0 94 94 0 5869 2875 5 MP
-DP
-0 -94 -94 0 0 94 94 0 6076 4186 5 MP
-DP
-0 -94 -94 0 0 94 94 0 6284 5879 5 MP
-DP
-gr
-
-gs 1564 565 9328 6151 rc
-DA
-c8
-207 1049 207 750 208 630 207 509 207 429 207 302 208 222 207 142 
-207 91 207 49 208 27 207 9 207 3 208 1 207 0 207 0 
-207 0 208 0 207 0 207 0 207 0 208 0 207 0 207 0 
-207 0 1564 566 26 MP stroke
-SO
-c9
-207 979 207 821 208 673 207 538 207 416 207 307 208 217 207 143 
-207 88 207 48 208 25 207 12 207 4 208 2 207 0 207 0 
-207 0 208 0 207 0 207 0 207 0 208 0 207 0 207 0 
-207 0 1564 566 26 MP stroke
+gs 1409 420 4531 3455 rc
+1495  566 mt 1615  566 L
+1555  506 mt 1555  626 L
+1759  566 mt 1879  566 L
+1819  506 mt 1819  626 L
+2024  566 mt 2144  566 L
+2084  506 mt 2084  626 L
+2289  566 mt 2409  566 L
+2349  506 mt 2349  626 L
+2554  568 mt 2674  568 L
+2614  508 mt 2614  628 L
+2819  572 mt 2939  572 L
+2879  512 mt 2879  632 L
+3084  583 mt 3204  583 L
+3144  523 mt 3144  643 L
+3349  608 mt 3469  608 L
+3409  548 mt 3409  668 L
+3614  657 mt 3734  657 L
+3674  597 mt 3674  717 L
+3878  744 mt 3998  744 L
+3938  684 mt 3938  804 L
+4143  885 mt 4263  885 L
+4203  825 mt 4203  945 L
+4408 1097 mt 4528 1097 L
+4468 1037 mt 4468 1157 L
+4673 1395 mt 4793 1395 L
+4733 1335 mt 4733 1455 L
+4938 1794 mt 5058 1794 L
+4998 1734 mt 4998 1854 L
+5203 2308 mt 5323 2308 L
+5263 2248 mt 5263 2368 L
+5468 2949 mt 5588 2949 L
+5528 2889 mt 5528 3009 L
+5733 3728 mt 5853 3728 L
+5793 3668 mt 5793 3788 L
 gr
 
-gs 1418 420 5474 4566 rc
-1504  566 mt 1624  566 L
-1564  506 mt 1564  626 L
-1711  566 mt 1831  566 L
-1771  506 mt 1771  626 L
-1918  566 mt 2038  566 L
-1978  506 mt 1978  626 L
-2125  566 mt 2245  566 L
-2185  506 mt 2185  626 L
-2333  566 mt 2453  566 L
-2393  506 mt 2393  626 L
-2540  566 mt 2660  566 L
-2600  506 mt 2600  626 L
-2747  566 mt 2867  566 L
-2807  506 mt 2807  626 L
-2954  566 mt 3074  566 L
-3014  506 mt 3014  626 L
-3162  566 mt 3282  566 L
-3222  506 mt 3222  626 L
-3369  566 mt 3489  566 L
-3429  506 mt 3429  626 L
-3576  566 mt 3696  566 L
-3636  506 mt 3636  626 L
-3783  566 mt 3903  566 L
-3843  506 mt 3843  626 L
-3991  568 mt 4111  568 L
-4051  508 mt 4051  628 L
-4198  572 mt 4318  572 L
-4258  512 mt 4258  632 L
-4405  584 mt 4525  584 L
-4465  524 mt 4465  644 L
-4613  609 mt 4733  609 L
-4673  549 mt 4673  669 L
-4820  657 mt 4940  657 L
-4880  597 mt 4880  717 L
-5027  745 mt 5147  745 L
-5087  685 mt 5087  805 L
-5234  888 mt 5354  888 L
-5294  828 mt 5294  948 L
-5442 1105 mt 5562 1105 L
-5502 1045 mt 5502 1165 L
-5649 1412 mt 5769 1412 L
-5709 1352 mt 5709 1472 L
-5856 1828 mt 5976 1828 L
-5916 1768 mt 5916 1888 L
-6063 2366 mt 6183 2366 L
-6123 2306 mt 6123 2426 L
-6271 3039 mt 6391 3039 L
-6331 2979 mt 6331 3099 L
-6478 3860 mt 6598 3860 L
-6538 3800 mt 6538 3920 L
-6685 4839 mt 6805 4839 L
-6745 4779 mt 6745 4899 L
+gs 1555 566 9272 6151 rc
+DA
+c8
+265 432 264 494 265 415 265 372 265 297 265 245 265 223 265 155 
+265 124 265 98 264 55 265 42 265 26 265 17 265 8 265 5 
+265 2 265 0 264 1 1555 566 20 MP stroke
+SO
+c9
+265 622 264 539 265 461 265 389 265 324 265 263 265 210 265 163 
+265 122 265 89 264 61 265 41 265 26 265 16 265 8 265 5 
+265 2 265 2 264 0 1555 566 20 MP stroke
 gr
 
-gs 1564 565 9328 6151 rc
-DA
-c8
-207 986 208 597 207 538 207 483 207 362 208 319 207 285 207 222 
-207 179 208 139 207 94 207 73 207 43 208 36 207 16 207 10 
-208 5 207 3 207 1 207 1 208 0 207 0 207 0 207 0 
-208 0 207 0 207 0 207 0 1564 566 29 MP stroke
-SO
-c9
-207 733 208 645 207 561 207 483 207 409 208 341 207 280 207 224 
-207 175 208 133 207 97 207 69 207 46 208 31 207 18 207 11 
-208 6 207 3 207 2 207 1 208 0 207 0 207 0 207 0 
-208 0 207 0 207 0 207 0 1564 566 29 MP stroke
-gr
-
-gs 1418 420 6096 4561 rc
+gs 1409 420 5325 3636 rc
 0 j
 -21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 
-34 0 17 30 17 -30 34 0 1513 536 13 MP
+34 0 17 30 17 -30 34 0 1504 536 13 MP
+DP
+-21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 
+34 0 17 30 17 -30 34 0 1768 536 13 MP
+DP
+-21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 
+34 0 17 30 17 -30 34 0 2033 538 13 MP
 DP
 -21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 
-34 0 17 30 17 -30 34 0 1720 536 13 MP
+34 0 17 30 17 -30 34 0 2298 540 13 MP
+DP
+-21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 
+34 0 17 30 17 -30 34 0 2563 545 13 MP
+DP
+-21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 
+34 0 17 30 17 -30 34 0 2828 553 13 MP
+DP
+-21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 
+34 0 17 30 17 -30 34 0 3093 569 13 MP
 DP
 -21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 
-34 0 17 30 17 -30 34 0 1927 536 13 MP
-DP
--21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 
-34 0 17 30 17 -30 34 0 2134 536 13 MP
+34 0 17 30 17 -30 34 0 3358 595 13 MP
 DP
 -21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 
-34 0 17 30 17 -30 34 0 2342 536 13 MP
-DP
--21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 
-34 0 17 30 17 -30 34 0 2549 536 13 MP
-DP
--21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 
-34 0 17 30 17 -30 34 0 2756 536 13 MP
-DP
--21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 
-34 0 17 30 17 -30 34 0 2963 536 13 MP
+34 0 17 30 17 -30 34 0 3623 636 13 MP
 DP
 -21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 
-34 0 17 30 17 -30 34 0 3171 536 13 MP
-DP
--21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 
-34 0 17 30 17 -30 34 0 3378 537 13 MP
-DP
--21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 
-34 0 17 30 17 -30 34 0 3585 539 13 MP
+34 0 17 30 17 -30 34 0 3887 697 13 MP
 DP
 -21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 
-34 0 17 30 17 -30 34 0 3792 542 13 MP
+34 0 17 30 17 -30 34 0 4152 786 13 MP
 DP
 -21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 
-34 0 17 30 17 -30 34 0 4000 548 13 MP
+34 0 17 30 17 -30 34 0 4417 908 13 MP
 DP
 -21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 
-34 0 17 30 17 -30 34 0 4207 559 13 MP
-DP
--21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 
-34 0 17 30 17 -30 34 0 4414 577 13 MP
+34 0 17 30 17 -30 34 0 4682 1071 13 MP
 DP
 -21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 
-34 0 17 30 17 -30 34 0 4622 608 13 MP
-DP
--21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 
-34 0 17 30 17 -30 34 0 4829 654 13 MP
+34 0 17 30 17 -30 34 0 4947 1281 13 MP
 DP
 -21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 
-34 0 17 30 17 -30 34 0 5036 723 13 MP
+34 0 17 30 17 -30 34 0 5212 1544 13 MP
 DP
 -21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 
-34 0 17 30 17 -30 34 0 5243 820 13 MP
-DP
--21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 
-34 0 17 30 17 -30 34 0 5451 953 13 MP
-DP
--21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 
-34 0 17 30 17 -30 34 0 5658 1128 13 MP
+34 0 17 30 17 -30 34 0 5477 1868 13 MP
 DP
 -21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 
-34 0 17 30 17 -30 34 0 5865 1352 13 MP
-DP
--21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 
-34 0 17 30 17 -30 34 0 6072 1632 13 MP
-DP
--21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 
-34 0 17 30 17 -30 34 0 6280 1973 13 MP
+34 0 17 30 17 -30 34 0 5742 2257 13 MP
 DP
 -21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 
-34 0 17 30 17 -30 34 0 6487 2382 13 MP
-DP
--21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 
-34 0 17 30 17 -30 34 0 6694 2865 13 MP
+34 0 17 30 17 -30 34 0 6007 2718 13 MP
 DP
 -21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 
-34 0 17 30 17 -30 34 0 6901 3426 13 MP
+34 0 17 30 17 -30 34 0 6271 3257 13 MP
 DP
 -21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 
-34 0 17 30 17 -30 34 0 7109 4071 13 MP
-DP
--21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 
-34 0 17 30 17 -30 34 0 7316 4804 13 MP
+34 0 17 30 17 -30 34 0 6536 3879 13 MP
 DP
 gr
 
-gs 1564 565 9328 6151 rc
+gs 1555 566 9272 6151 rc
 DA
 c8
-207 430 207 486 207 412 208 404 207 337 207 307 208 262 207 274 
-207 262 207 205 208 174 207 146 207 104 207 98 208 74 207 60 
-207 49 207 31 208 28 207 19 207 10 208 9 207 4 207 4 
-207 1 208 1 207 1 207 1 207 0 208 0 207 0 207 0 
-207 0 1564 566 34 MP stroke
+265 733 265 393 265 279 265 318 265 376 265 206 264 221 265 236 
+265 115 265 135 265 102 265 111 265 72 265 63 265 45 264 46 
+265 31 265 18 265 18 265 3 265 6 265 4 265 4 264 1 
+1555 567 25 MP stroke
 SO
 c9
-207 537 207 546 207 495 208 445 207 398 207 353 208 311 207 272 
-207 236 207 201 208 171 207 142 207 117 207 95 208 75 207 59 
-207 45 207 34 208 25 207 17 207 13 208 8 207 6 207 4 
-207 2 208 1 207 1 207 1 207 0 208 0 207 0 207 0 
-207 0 1564 566 34 MP stroke
+265 461 265 415 265 372 265 330 265 292 265 255 264 223 265 191 
+265 163 265 138 265 114 265 94 265 76 265 60 265 47 264 36 
+265 27 265 20 265 15 265 10 265 7 265 4 265 3 264 2 
+1555 569 25 MP stroke
 gr
 
-gs 1418 420 7132 4903 rc
-1504  566 mt 1624  566 L
-1564  506 mt 1564  626 L
-1711  566 mt 1831  566 L
-1771  506 mt 1771  626 L
-1918  566 mt 2038  566 L
-1978  506 mt 1978  626 L
-2125  566 mt 2245  566 L
-2185  506 mt 2185  626 L
-2333  566 mt 2453  566 L
-2393  506 mt 2393  626 L
-2540  566 mt 2660  566 L
-2600  506 mt 2600  626 L
-2747  567 mt 2867  567 L
-2807  507 mt 2807  627 L
-2954  568 mt 3074  568 L
-3014  508 mt 3014  628 L
-3162  569 mt 3282  569 L
-3222  509 mt 3222  629 L
-3369  571 mt 3489  571 L
-3429  511 mt 3429  631 L
-3576  575 mt 3696  575 L
-3636  515 mt 3636  635 L
-3783  581 mt 3903  581 L
-3843  521 mt 3843  641 L
-3991  589 mt 4111  589 L
-4051  529 mt 4051  649 L
-4198  602 mt 4318  602 L
-4258  542 mt 4258  662 L
-4405  619 mt 4525  619 L
-4465  559 mt 4465  679 L
-4613  644 mt 4733  644 L
-4673  584 mt 4673  704 L
-4820  678 mt 4940  678 L
-4880  618 mt 4880  738 L
-5027  723 mt 5147  723 L
-5087  663 mt 5087  783 L
-5234  782 mt 5354  782 L
-5294  722 mt 5294  842 L
-5442  857 mt 5562  857 L
-5502  797 mt 5502  917 L
-5649  952 mt 5769  952 L
-5709  892 mt 5709 1012 L
-5856 1069 mt 5976 1069 L
-5916 1009 mt 5916 1129 L
-6063 1211 mt 6183 1211 L
-6123 1151 mt 6123 1271 L
-6271 1382 mt 6391 1382 L
-6331 1322 mt 6331 1442 L
-6478 1583 mt 6598 1583 L
-6538 1523 mt 6538 1643 L
-6685 1819 mt 6805 1819 L
-6745 1759 mt 6745 1879 L
-6892 2091 mt 7012 2091 L
-6952 2031 mt 6952 2151 L
-7100 2402 mt 7220 2402 L
-7160 2342 mt 7160 2462 L
-7307 2755 mt 7427 2755 L
-7367 2695 mt 7367 2815 L
-7514 3153 mt 7634 3153 L
-7574 3093 mt 7574 3213 L
-7722 3598 mt 7842 3598 L
-7782 3538 mt 7782 3658 L
-7929 4093 mt 8049 4093 L
-7989 4033 mt 7989 4153 L
-8136 4639 mt 8256 4639 L
-8196 4579 mt 8196 4699 L
-8343 5176 mt 8463 5176 L
-8403 5116 mt 8403 5236 L
-1522  524 mt 1606  608 L
-1606  524 mt 1522  608 L
-1729  524 mt 1813  608 L
-1813  524 mt 1729  608 L
-1936  524 mt 2020  608 L
-2020  524 mt 1936  608 L
-2143  524 mt 2227  608 L
-2227  524 mt 2143  608 L
-2351  524 mt 2435  608 L
-2435  524 mt 2351  608 L
-2558  524 mt 2642  608 L
-2642  524 mt 2558  608 L
-2765  525 mt 2849  609 L
-2849  525 mt 2765  609 L
-2972  526 mt 3056  610 L
-3056  526 mt 2972  610 L
-3180  527 mt 3264  611 L
-3264  527 mt 3180  611 L
-3387  529 mt 3471  613 L
-3471  529 mt 3387  613 L
-3594  533 mt 3678  617 L
-3678  533 mt 3594  617 L
-3801  539 mt 3885  623 L
-3885  539 mt 3801  623 L
-4009  547 mt 4093  631 L
-4093  547 mt 4009  631 L
-4216  560 mt 4300  644 L
-4300  560 mt 4216  644 L
-4423  577 mt 4507  661 L
-4507  577 mt 4423  661 L
-4631  602 mt 4715  686 L
-4715  602 mt 4631  686 L
-4838  636 mt 4922  720 L
-4922  636 mt 4838  720 L
-5045  681 mt 5129  765 L
-5129  681 mt 5045  765 L
-5252  740 mt 5336  824 L
-5336  740 mt 5252  824 L
-5460  815 mt 5544  899 L
-5544  815 mt 5460  899 L
-5667  910 mt 5751  994 L
-5751  910 mt 5667  994 L
-5874 1027 mt 5958 1111 L
-5958 1027 mt 5874 1111 L
-6081 1169 mt 6165 1253 L
-6165 1169 mt 6081 1253 L
-6289 1340 mt 6373 1424 L
-6373 1340 mt 6289 1424 L
-6496 1541 mt 6580 1625 L
-6580 1541 mt 6496 1625 L
-6703 1777 mt 6787 1861 L
-6787 1777 mt 6703 1861 L
-6910 2049 mt 6994 2133 L
-6994 2049 mt 6910 2133 L
-7118 2360 mt 7202 2444 L
-7202 2360 mt 7118 2444 L
-7325 2713 mt 7409 2797 L
-7409 2713 mt 7325 2797 L
-7532 3111 mt 7616 3195 L
-7616 3111 mt 7532 3195 L
-7740 3556 mt 7824 3640 L
-7824 3556 mt 7740 3640 L
-7947 4051 mt 8031 4135 L
-8031 4051 mt 7947 4135 L
-8154 4597 mt 8238 4681 L
-8238 4597 mt 8154 4681 L
-8361 5134 mt 8445 5218 L
-8445 5134 mt 8361 5218 L
+gs 1409 423 6650 3648 rc
+1495  569 mt 1615  569 L
+1555  509 mt 1555  629 L
+1759  571 mt 1879  571 L
+1819  511 mt 1819  631 L
+2024  574 mt 2144  574 L
+2084  514 mt 2084  634 L
+2289  578 mt 2409  578 L
+2349  518 mt 2349  638 L
+2554  585 mt 2674  585 L
+2614  525 mt 2614  645 L
+2819  595 mt 2939  595 L
+2879  535 mt 2879  655 L
+3084  610 mt 3204  610 L
+3144  550 mt 3144  670 L
+3349  630 mt 3469  630 L
+3409  570 mt 3409  690 L
+3614  657 mt 3734  657 L
+3674  597 mt 3674  717 L
+3878  693 mt 3998  693 L
+3938  633 mt 3938  753 L
+4143  740 mt 4263  740 L
+4203  680 mt 4203  800 L
+4408  800 mt 4528  800 L
+4468  740 mt 4468  860 L
+4673  876 mt 4793  876 L
+4733  816 mt 4733  936 L
+4938  970 mt 5058  970 L
+4998  910 mt 4998 1030 L
+5203 1084 mt 5323 1084 L
+5263 1024 mt 5263 1144 L
+5468 1222 mt 5588 1222 L
+5528 1162 mt 5528 1282 L
+5733 1385 mt 5853 1385 L
+5793 1325 mt 5793 1445 L
+5998 1576 mt 6118 1576 L
+6058 1516 mt 6058 1636 L
+6262 1799 mt 6382 1799 L
+6322 1739 mt 6322 1859 L
+6527 2054 mt 6647 2054 L
+6587 1994 mt 6587 2114 L
+6792 2346 mt 6912 2346 L
+6852 2286 mt 6852 2406 L
+7057 2676 mt 7177 2676 L
+7117 2616 mt 7117 2736 L
+7322 3048 mt 7442 3048 L
+7382 2988 mt 7382 3108 L
+7587 3463 mt 7707 3463 L
+7647 3403 mt 7647 3523 L
+7852 3924 mt 7972 3924 L
+7912 3864 mt 7912 3984 L
+1513  527 mt 1597  611 L
+1597  527 mt 1513  611 L
+1777  529 mt 1861  613 L
+1861  529 mt 1777  613 L
+2042  532 mt 2126  616 L
+2126  532 mt 2042  616 L
+2307  536 mt 2391  620 L
+2391  536 mt 2307  620 L
+2572  543 mt 2656  627 L
+2656  543 mt 2572  627 L
+2837  553 mt 2921  637 L
+2921  553 mt 2837  637 L
+3102  568 mt 3186  652 L
+3186  568 mt 3102  652 L
+3367  588 mt 3451  672 L
+3451  588 mt 3367  672 L
+3632  615 mt 3716  699 L
+3716  615 mt 3632  699 L
+3896  651 mt 3980  735 L
+3980  651 mt 3896  735 L
+4161  698 mt 4245  782 L
+4245  698 mt 4161  782 L
+4426  758 mt 4510  842 L
+4510  758 mt 4426  842 L
+4691  834 mt 4775  918 L
+4775  834 mt 4691  918 L
+4956  928 mt 5040 1012 L
+5040  928 mt 4956 1012 L
+5221 1042 mt 5305 1126 L
+5305 1042 mt 5221 1126 L
+5486 1180 mt 5570 1264 L
+5570 1180 mt 5486 1264 L
+5751 1343 mt 5835 1427 L
+5835 1343 mt 5751 1427 L
+6016 1534 mt 6100 1618 L
+6100 1534 mt 6016 1618 L
+6280 1757 mt 6364 1841 L
+6364 1757 mt 6280 1841 L
+6545 2012 mt 6629 2096 L
+6629 2012 mt 6545 2096 L
+6810 2304 mt 6894 2388 L
+6894 2304 mt 6810 2388 L
+7075 2634 mt 7159 2718 L
+7159 2634 mt 7075 2718 L
+7340 3006 mt 7424 3090 L
+7424 3006 mt 7340 3090 L
+7605 3421 mt 7689 3505 L
+7689 3421 mt 7605 3505 L
+7870 3882 mt 7954 3966 L
+7954 3882 mt 7870 3966 L
 gr
 
-gs 1564 565 9328 6151 rc
+gs 1555 566 9272 6151 rc
 DA
 c8
-207 373 207 435 207 354 208 359 207 316 207 213 207 253 208 224 
-207 253 207 234 208 182 207 145 207 129 207 123 208 106 207 92 
-207 68 207 60 208 54 207 37 207 29 207 27 208 17 207 13 
-207 13 208 9 207 4 207 5 207 4 208 1 207 2 207 1 
-207 0 208 1 207 0 207 0 207 0 1564 566 38 MP stroke
+265 332 264 107 265 341 265 224 265 275 265 172 265 176 265 169 
+265 160 265 154 264 142 265 89 265 102 265 83 265 68 265 52 
+265 54 265 35 265 19 264 23 265 26 265 10 265 15 265 9 
+265 0 265 9 265 0 264 1 1555 569 29 MP stroke
 SO
 c9
-207 485 207 448 207 413 208 379 207 312 207 318 207 287 208 258 
-207 231 207 205 208 181 207 159 207 137 207 119 208 102 207 86 
-207 72 207 59 208 49 207 39 207 31 207 25 208 19 207 15 
-207 11 208 8 207 6 207 4 207 3 208 3 207 1 207 1 
-207 1 208 1 207 0 207 0 207 0 1564 566 38 MP stroke
+265 393 264 359 265 325 265 295 265 266 265 238 265 213 265 188 
+265 166 265 145 264 126 265 109 265 93 265 78 265 66 265 55 
+265 44 265 37 265 29 264 23 265 17 265 14 265 11 265 7 
+265 6 265 4 265 3 264 3 1555 570 29 MP stroke
 gr
 
-gs 1418 420 7961 4761 rc
+gs 1409 424 7709 3606 rc
 0 j
-0 138 -119 -69 119 -69 1524 635 4 MP
+0 138 -119 -69 119 -69 1515 639 4 MP
 DP
-0 138 -119 -69 119 -69 1731 635 4 MP
-DP
-0 138 -119 -69 119 -69 1938 635 4 MP
+0 138 -119 -69 119 -69 1779 642 4 MP
 DP
-0 138 -119 -69 119 -69 2145 635 4 MP
+0 138 -119 -69 119 -69 2044 645 4 MP
 DP
-0 138 -119 -69 119 -69 2353 636 4 MP
+0 138 -119 -69 119 -69 2309 649 4 MP
 DP
-0 138 -119 -69 119 -69 2560 637 4 MP
+0 138 -119 -69 119 -69 2574 655 4 MP
 DP
-0 138 -119 -69 119 -69 2767 638 4 MP
-DP
-0 138 -119 -69 119 -69 2974 639 4 MP
+0 138 -119 -69 119 -69 2839 662 4 MP
 DP
-0 138 -119 -69 119 -69 3182 642 4 MP
+0 138 -119 -69 119 -69 3104 673 4 MP
 DP
-0 138 -119 -69 119 -69 3389 645 4 MP
+0 138 -119 -69 119 -69 3369 687 4 MP
 DP
-0 138 -119 -69 119 -69 3596 649 4 MP
+0 138 -119 -69 119 -69 3634 704 4 MP
 DP
-0 138 -119 -69 119 -69 3803 655 4 MP
-DP
-0 138 -119 -69 119 -69 4011 663 4 MP
+0 138 -119 -69 119 -69 3898 727 4 MP
 DP
-0 138 -119 -69 119 -69 4218 674 4 MP
+0 138 -119 -69 119 -69 4163 756 4 MP
 DP
-0 138 -119 -69 119 -69 4425 689 4 MP
+0 138 -119 -69 119 -69 4428 793 4 MP
 DP
-0 138 -119 -69 119 -69 4633 708 4 MP
+0 138 -119 -69 119 -69 4693 837 4 MP
 DP
-0 138 -119 -69 119 -69 4840 733 4 MP
-DP
-0 138 -119 -69 119 -69 5047 764 4 MP
+0 138 -119 -69 119 -69 4958 892 4 MP
 DP
-0 138 -119 -69 119 -69 5254 803 4 MP
-DP
-0 138 -119 -69 119 -69 5462 852 4 MP
+0 138 -119 -69 119 -69 5223 958 4 MP
 DP
-0 138 -119 -69 119 -69 5669 911 4 MP
+0 138 -119 -69 119 -69 5488 1036 4 MP
 DP
-0 138 -119 -69 119 -69 5876 983 4 MP
-DP
-0 138 -119 -69 119 -69 6083 1069 4 MP
+0 138 -119 -69 119 -69 5753 1129 4 MP
 DP
-0 138 -119 -69 119 -69 6291 1171 4 MP
+0 138 -119 -69 119 -69 6018 1238 4 MP
 DP
-0 138 -119 -69 119 -69 6498 1290 4 MP
+0 138 -119 -69 119 -69 6282 1364 4 MP
 DP
-0 138 -119 -69 119 -69 6705 1427 4 MP
+0 138 -119 -69 119 -69 6547 1509 4 MP
 DP
-0 138 -119 -69 119 -69 6912 1586 4 MP
-DP
-0 138 -119 -69 119 -69 7120 1767 4 MP
+0 138 -119 -69 119 -69 6812 1675 4 MP
 DP
-0 138 -119 -69 119 -69 7327 1972 4 MP
+0 138 -119 -69 119 -69 7077 1863 4 MP
 DP
-0 138 -119 -69 119 -69 7534 2203 4 MP
+0 138 -119 -69 119 -69 7342 2076 4 MP
 DP
-0 138 -119 -69 119 -69 7742 2461 4 MP
+0 138 -119 -69 119 -69 7607 2314 4 MP
 DP
-0 138 -119 -69 119 -69 7949 2748 4 MP
-DP
-0 138 -119 -69 119 -69 8156 3066 4 MP
+0 138 -119 -69 119 -69 7872 2580 4 MP
 DP
-0 138 -119 -69 119 -69 8363 3378 4 MP
+0 138 -119 -69 119 -69 8137 2875 4 MP
 DP
-0 138 -119 -69 119 -69 8571 3757 4 MP
+0 138 -119 -69 119 -69 8402 3200 4 MP
 DP
-0 138 -119 -69 119 -69 8778 4170 4 MP
+0 138 -119 -69 119 -69 8666 3559 4 MP
 DP
-0 138 -119 -69 119 -69 8985 4618 4 MP
-DP
-0 138 -119 -69 119 -69 9192 5103 4 MP
+0 138 -119 -69 119 -69 8931 3952 4 MP
 DP
 gr
 
-gs 1564 565 9328 6151 rc
+gs 1555 566 9272 6151 rc
 DA
 c8
-208 318 207 275 207 320 207 322 208 263 207 210 207 216 207 285 
-208 211 207 147 207 182 207 148 208 151 207 137 207 122 208 105 
-207 91 207 82 207 70 208 63 207 50 207 48 207 34 208 35 
-207 27 207 20 207 13 208 13 207 10 207 6 208 6 207 7 
-207 3 207 2 208 2 207 2 207 2 207 0 208 0 207 0 
-207 1 207 0 1564 566 43 MP stroke
+265 0 265 526 265 271 265 176 265 153 264 302 265 179 265 164 
+265 229 265 154 265 117 265 101 265 107 265 100 264 74 265 51 
+265 71 265 63 265 47 265 33 265 26 265 25 265 30 264 20 
+265 11 265 4 265 18 265 6 265 4 265 4 265 2 264 1 
+1555 571 33 MP stroke
 SO
 c9
-208 412 207 386 207 359 207 335 208 310 207 286 207 264 207 242 
-208 222 207 182 207 185 207 167 208 149 207 134 207 118 208 105 
-207 92 207 80 207 69 208 59 207 51 207 43 207 36 208 30 
-207 25 207 20 207 16 208 14 207 10 207 8 208 7 207 5 
-207 4 207 3 208 2 207 2 207 1 207 1 208 1 207 0 
-207 1 207 0 1564 566 43 MP stroke
+265 352 265 324 265 297 265 274 265 249 264 228 265 206 265 187 
+265 168 265 150 265 135 265 119 265 105 265 93 264 80 265 70 
+265 61 265 51 265 44 265 36 265 31 265 26 265 21 264 17 
+265 13 265 11 265 9 265 7 265 5 265 5 265 3 264 2 
+1555 573 33 MP stroke
 gr
 
-gs 1418 420 8998 4729 rc
+gs 1409 427 8769 3672 rc
 0 j
 -35 -26 13 -41 -36 24 -35 -24 13 41 -35 26 43 0 14 41 
-15 -41 43 0 1506 547 11 MP
+15 -41 43 0 1497 554 11 MP
 DP
 -35 -26 13 -41 -36 24 -35 -24 13 41 -35 26 43 0 14 41 
-15 -41 43 0 1713 547 11 MP
+15 -41 43 0 1761 556 11 MP
 DP
 -35 -26 13 -41 -36 24 -35 -24 13 41 -35 26 43 0 14 41 
-15 -41 43 0 1920 548 11 MP
-DP
--35 -26 13 -41 -36 24 -35 -24 13 41 -35 26 43 0 14 41 
-15 -41 43 0 2127 548 11 MP
+15 -41 43 0 2026 559 11 MP
 DP
 -35 -26 13 -41 -36 24 -35 -24 13 41 -35 26 43 0 14 41 
-15 -41 43 0 2335 549 11 MP
-DP
--35 -26 13 -41 -36 24 -35 -24 13 41 -35 26 43 0 14 41 
-15 -41 43 0 2542 550 11 MP
+15 -41 43 0 2291 564 11 MP
 DP
 -35 -26 13 -41 -36 24 -35 -24 13 41 -35 26 43 0 14 41 
-15 -41 43 0 2749 551 11 MP
+15 -41 43 0 2556 569 11 MP
 DP
 -35 -26 13 -41 -36 24 -35 -24 13 41 -35 26 43 0 14 41 
-15 -41 43 0 2956 553 11 MP
+15 -41 43 0 2821 576 11 MP
 DP
 -35 -26 13 -41 -36 24 -35 -24 13 41 -35 26 43 0 14 41 
-15 -41 43 0 3164 555 11 MP
-DP
--35 -26 13 -41 -36 24 -35 -24 13 41 -35 26 43 0 14 41 
-15 -41 43 0 3371 558 11 MP
+15 -41 43 0 3086 585 11 MP
 DP
 -35 -26 13 -41 -36 24 -35 -24 13 41 -35 26 43 0 14 41 
-15 -41 43 0 3578 562 11 MP
+15 -41 43 0 3351 596 11 MP
 DP
 -35 -26 13 -41 -36 24 -35 -24 13 41 -35 26 43 0 14 41 
-15 -41 43 0 3785 567 11 MP
-DP
--35 -26 13 -41 -36 24 -35 -24 13 41 -35 26 43 0 14 41 
-15 -41 43 0 3993 574 11 MP
+15 -41 43 0 3616 609 11 MP
 DP
 -35 -26 13 -41 -36 24 -35 -24 13 41 -35 26 43 0 14 41 
-15 -41 43 0 4200 582 11 MP
+15 -41 43 0 3880 626 11 MP
 DP
 -35 -26 13 -41 -36 24 -35 -24 13 41 -35 26 43 0 14 41 
-15 -41 43 0 4407 592 11 MP
+15 -41 43 0 4145 647 11 MP
 DP
 -35 -26 13 -41 -36 24 -35 -24 13 41 -35 26 43 0 14 41 
-15 -41 43 0 4615 606 11 MP
+15 -41 43 0 4410 673 11 MP
 DP
 -35 -26 13 -41 -36 24 -35 -24 13 41 -35 26 43 0 14 41 
-15 -41 43 0 4822 622 11 MP
+15 -41 43 0 4675 704 11 MP
 DP
 -35 -26 13 -41 -36 24 -35 -24 13 41 -35 26 43 0 14 41 
-15 -41 43 0 5029 642 11 MP
-DP
--35 -26 13 -41 -36 24 -35 -24 13 41 -35 26 43 0 14 41 
-15 -41 43 0 5236 667 11 MP
+15 -41 43 0 4940 740 11 MP
 DP
 -35 -26 13 -41 -36 24 -35 -24 13 41 -35 26 43 0 14 41 
-15 -41 43 0 5444 697 11 MP
+15 -41 43 0 5205 784 11 MP
 DP
 -35 -26 13 -41 -36 24 -35 -24 13 41 -35 26 43 0 14 41 
-15 -41 43 0 5651 733 11 MP
+15 -41 43 0 5470 835 11 MP
 DP
 -35 -26 13 -41 -36 24 -35 -24 13 41 -35 26 43 0 14 41 
-15 -41 43 0 5858 776 11 MP
+15 -41 43 0 5735 896 11 MP
 DP
 -35 -26 13 -41 -36 24 -35 -24 13 41 -35 26 43 0 14 41 
-15 -41 43 0 6065 827 11 MP
+15 -41 43 0 6000 966 11 MP
 DP
 -35 -26 13 -41 -36 24 -35 -24 13 41 -35 26 43 0 14 41 
-15 -41 43 0 6273 886 11 MP
-DP
--35 -26 13 -41 -36 24 -35 -24 13 41 -35 26 43 0 14 41 
-15 -41 43 0 6480 955 11 MP
+15 -41 43 0 6264 1046 11 MP
 DP
 -35 -26 13 -41 -36 24 -35 -24 13 41 -35 26 43 0 14 41 
-15 -41 43 0 6687 1035 11 MP
+15 -41 43 0 6529 1139 11 MP
 DP
 -35 -26 13 -41 -36 24 -35 -24 13 41 -35 26 43 0 14 41 
-15 -41 43 0 6894 1127 11 MP
+15 -41 43 0 6794 1244 11 MP
 DP
 -35 -26 13 -41 -36 24 -35 -24 13 41 -35 26 43 0 14 41 
-15 -41 43 0 7102 1232 11 MP
-DP
--35 -26 13 -41 -36 24 -35 -24 13 41 -35 26 43 0 14 41 
-15 -41 43 0 7309 1350 11 MP
+15 -41 43 0 7059 1363 11 MP
 DP
 -35 -26 13 -41 -36 24 -35 -24 13 41 -35 26 43 0 14 41 
-15 -41 43 0 7516 1484 11 MP
+15 -41 43 0 7324 1498 11 MP
 DP
 -35 -26 13 -41 -36 24 -35 -24 13 41 -35 26 43 0 14 41 
-15 -41 43 0 7724 1633 11 MP
+15 -41 43 0 7589 1648 11 MP
 DP
 -35 -26 13 -41 -36 24 -35 -24 13 41 -35 26 43 0 14 41 
-15 -41 43 0 7931 1800 11 MP
+15 -41 43 0 7854 1816 11 MP
 DP
 -35 -26 13 -41 -36 24 -35 -24 13 41 -35 26 43 0 14 41 
-15 -41 43 0 8138 1985 11 MP
+15 -41 43 0 8119 2003 11 MP
 DP
 -35 -26 13 -41 -36 24 -35 -24 13 41 -35 26 43 0 14 41 
-15 -41 43 0 8345 2167 11 MP
-DP
--35 -26 13 -41 -36 24 -35 -24 13 41 -35 26 43 0 14 41 
-15 -41 43 0 8553 2389 11 MP
+15 -41 43 0 8384 2209 11 MP
 DP
 -35 -26 13 -41 -36 24 -35 -24 13 41 -35 26 43 0 14 41 
-15 -41 43 0 8760 2631 11 MP
+15 -41 43 0 8648 2437 11 MP
 DP
 -35 -26 13 -41 -36 24 -35 -24 13 41 -35 26 43 0 14 41 
-15 -41 43 0 8967 2895 11 MP
-DP
--35 -26 13 -41 -36 24 -35 -24 13 41 -35 26 43 0 14 41 
-15 -41 43 0 9174 3181 11 MP
+15 -41 43 0 8913 2686 11 MP
 DP
 -35 -26 13 -41 -36 24 -35 -24 13 41 -35 26 43 0 14 41 
-15 -41 43 0 9382 3491 11 MP
-DP
--35 -26 13 -41 -36 24 -35 -24 13 41 -35 26 43 0 14 41 
-15 -41 43 0 9589 3826 11 MP
+15 -41 43 0 9178 2960 11 MP
 DP
 -35 -26 13 -41 -36 24 -35 -24 13 41 -35 26 43 0 14 41 
-15 -41 43 0 9796 4185 11 MP
+15 -41 43 0 9443 3257 11 MP
 DP
 -35 -26 13 -41 -36 24 -35 -24 13 41 -35 26 43 0 14 41 
-15 -41 43 0 10003 4571 11 MP
+15 -41 43 0 9708 3581 11 MP
 DP
 -35 -26 13 -41 -36 24 -35 -24 13 41 -35 26 43 0 14 41 
-15 -41 43 0 10211 4983 11 MP
+15 -41 43 0 9973 3933 11 MP
 DP
 gr
 
-gs 1564 565 9328 6151 rc
+gs 1555 566 9272 6151 rc
 gr
 
 0 sg
 %%IncludeResource: font Helvetica
 /Helvetica /WindowsLatin1Encoding 120 FMSR
 
-6013 7004 mt 
-(SINR) s
-%%IncludeResource: font Helvetica
-/Helvetica /WindowsLatin1Encoding 96 FMSR
-
-1223 3799 mt  -90 rotate
+6062 7004 mt 
+(SNR) s
+1214 3799 mt  -90 rotate
 (BLER) s
 90 rotate
-1547 6758 mt 
+1538 6759 mt 
 ( ) s
-10875  607 mt 
+10810  608 mt 
 ( ) s
 6 w
 1 sg
-0 2730 1696 0 0 -2730 1646 6627 4 MP
+0 2730 1696 0 0 -2730 1583 6690 4 MP
 PP
--1696 0 0 2730 1696 0 0 -2730 1646 6627 5 MP stroke
+-1696 0 0 2730 1696 0 0 -2730 1583 6690 5 MP stroke
 4 w
 DO
 SO
 6 w
 0 sg
-1646 3897 mt 3342 3897 L
-1646 6627 mt 3342 6627 L
-3342 6627 mt 3342 3897 L
-1646 6627 mt 1646 3897 L
-1646 6627 mt 3342 6627 L
-1646 6627 mt 1646 3897 L
-1646 3897 mt 3342 3897 L
-1646 6627 mt 3342 6627 L
-3342 6627 mt 3342 3897 L
-1646 6627 mt 1646 3897 L
-2118 4044 mt 
+1583 3960 mt 3279 3960 L
+1583 6690 mt 3279 6690 L
+3279 6690 mt 3279 3960 L
+1583 6690 mt 1583 3960 L
+1583 6690 mt 3279 6690 L
+1583 6690 mt 1583 3960 L
+1583 3960 mt 3279 3960 L
+1583 6690 mt 3279 6690 L
+3279 6690 mt 3279 3960 L
+1583 6690 mt 1583 3960 L
+2055 4107 mt 
 (TB = 6000 \(AWGN\)) s
-gs 1646 3897 1697 2731 rc
+gs 1583 3960 1697 2731 rc
 DA
 24 w
 c8
-363 0 1718 4002 2 MP stroke
+363 0 1655 4065 2 MP stroke
 SO
 gr
 
 24 w
 c8
 0 sg
-2118 4212 mt 
+2055 4275 mt 
 (TB = 6000 \(estimated\)) s
-gs 1646 3897 1697 2731 rc
+gs 1583 3960 1697 2731 rc
 c9
-363 0 1718 4170 2 MP stroke
-gs 1753 4024 293 293 rc
+363 0 1655 4233 2 MP stroke
+gs 1690 4087 293 293 rc
 0 j
-69 119 -138 0 69 -119 1899 4249 4 MP
+69 119 -138 0 69 -119 1836 4312 4 MP
 DP
 gr
 
@@ -1474,25 +1328,25 @@
 
 c9
 0 sg
-2118 4380 mt 
+2055 4443 mt 
 (TB = 4000 \(AWGN\)) s
-gs 1646 3897 1697 2731 rc
+gs 1583 3960 1697 2731 rc
 DA
 c8
-363 0 1718 4338 2 MP stroke
+363 0 1655 4401 2 MP stroke
 SO
 gr
 
 c8
 0 sg
-2118 4548 mt 
+2055 4611 mt 
 (TB = 4000 \(estimated\)) s
-gs 1646 3897 1697 2731 rc
+gs 1583 3960 1697 2731 rc
 c9
-363 0 1718 4506 2 MP stroke
-gs 1753 4360 293 293 rc
+363 0 1655 4569 2 MP stroke
+gs 1690 4423 293 293 rc
 0 j
--69 119 -69 -119 138 0 1830 4546 4 MP
+-69 119 -69 -119 138 0 1767 4609 4 MP
 DP
 gr
 
@@ -1500,25 +1354,25 @@
 
 c9
 0 sg
-2118 4716 mt 
+2055 4779 mt 
 (TB = 2560 \(AWGN\)) s
-gs 1646 3897 1697 2731 rc
+gs 1583 3960 1697 2731 rc
 DA
 c8
-363 0 1718 4674 2 MP stroke
+363 0 1655 4737 2 MP stroke
 SO
 gr
 
 c8
 0 sg
-2118 4884 mt 
+2055 4947 mt 
 (TB = 2560 \(estimated\)) s
-gs 1646 3897 1697 2731 rc
+gs 1583 3960 1697 2731 rc
 c9
-363 0 1718 4842 2 MP stroke
-gs 1753 4696 293 293 rc
+363 0 1655 4905 2 MP stroke
+gs 1690 4759 293 293 rc
 0 j
-0 -94 -94 0 0 94 94 0 1852 4795 5 MP
+0 -94 -94 0 0 94 94 0 1789 4858 5 MP
 DP
 gr
 
@@ -1526,51 +1380,51 @@
 
 c9
 0 sg
-2118 5052 mt 
+2055 5115 mt 
 (TB = 1024 \(AWGN\)) s
-gs 1646 3897 1697 2731 rc
+gs 1583 3960 1697 2731 rc
 DA
 c8
-363 0 1718 5010 2 MP stroke
+363 0 1655 5073 2 MP stroke
 SO
 gr
 
 c8
 0 sg
-2118 5220 mt 
+2055 5283 mt 
 (TB = 1024 \(estimated\)) s
-gs 1646 3897 1697 2731 rc
+gs 1583 3960 1697 2731 rc
 c9
-363 0 1718 5178 2 MP stroke
-gs 1753 5032 293 293 rc
-1839 5178 mt 1959 5178 L
-1899 5118 mt 1899 5238 L
+363 0 1655 5241 2 MP stroke
+gs 1690 5095 293 293 rc
+1776 5241 mt 1896 5241 L
+1836 5181 mt 1836 5301 L
 gr
 
 gr
 
 c9
 0 sg
-2118 5389 mt 
+2055 5452 mt 
 (TB = 512 \(AWGN\)) s
-gs 1646 3897 1697 2731 rc
+gs 1583 3960 1697 2731 rc
 DA
 c8
-363 0 1718 5346 2 MP stroke
+363 0 1655 5409 2 MP stroke
 SO
 gr
 
 c8
 0 sg
-2118 5557 mt 
+2055 5620 mt 
 (TB = 512 \(estimated\)) s
-gs 1646 3897 1697 2731 rc
+gs 1583 3960 1697 2731 rc
 c9
-363 0 1718 5514 2 MP stroke
-gs 1753 5368 293 293 rc
+363 0 1655 5577 2 MP stroke
+gs 1690 5431 293 293 rc
 0 j
 -21 -30 21 -30 -34 0 -17 -30 -17 30 -34 0 21 30 -21 30 
-34 0 17 30 17 -30 34 0 1848 5484 13 MP
+34 0 17 30 17 -30 34 0 1785 5547 13 MP
 DP
 gr
 
@@ -1578,52 +1432,52 @@
 
 c9
 0 sg
-2118 5725 mt 
+2055 5788 mt 
 (TB = 256 \(AWGN\)) s
-gs 1646 3897 1697 2731 rc
+gs 1583 3960 1697 2731 rc
 DA
 c8
-363 0 1718 5682 2 MP stroke
+363 0 1655 5745 2 MP stroke
 SO
 gr
 
 c8
 0 sg
-2118 5893 mt 
+2055 5956 mt 
 (TB = 256 \(estimated\)) s
-gs 1646 3897 1697 2731 rc
+gs 1583 3960 1697 2731 rc
 c9
-363 0 1718 5850 2 MP stroke
-gs 1753 5704 293 293 rc
-1839 5850 mt 1959 5850 L
-1899 5790 mt 1899 5910 L
-1857 5808 mt 1941 5892 L
-1941 5808 mt 1857 5892 L
+363 0 1655 5913 2 MP stroke
+gs 1690 5767 293 293 rc
+1776 5913 mt 1896 5913 L
+1836 5853 mt 1836 5973 L
+1794 5871 mt 1878 5955 L
+1878 5871 mt 1794 5955 L
 gr
 
 gr
 
 c9
 0 sg
-2118 6061 mt 
+2055 6124 mt 
 (TB = 160 \(AWGN\)) s
-gs 1646 3897 1697 2731 rc
+gs 1583 3960 1697 2731 rc
 DA
 c8
-363 0 1718 6018 2 MP stroke
+363 0 1655 6081 2 MP stroke
 SO
 gr
 
 c8
 0 sg
-2118 6229 mt 
+2055 6292 mt 
 (TB = 160 \(estimated\)) s
-gs 1646 3897 1697 2731 rc
+gs 1583 3960 1697 2731 rc
 c9
-363 0 1718 6186 2 MP stroke
-gs 1753 6040 293 293 rc
+363 0 1655 6249 2 MP stroke
+gs 1690 6103 293 293 rc
 0 j
-0 138 -119 -69 119 -69 1859 6255 4 MP
+0 138 -119 -69 119 -69 1796 6318 4 MP
 DP
 gr
 
@@ -1631,33 +1485,33 @@
 
 c9
 0 sg
-2118 6397 mt 
+2055 6460 mt 
 (TB = 104 \(AWGN\)) s
-gs 1646 3897 1697 2731 rc
+gs 1583 3960 1697 2731 rc
 DA
 c8
-363 0 1718 6354 2 MP stroke
+363 0 1655 6417 2 MP stroke
 SO
 gr
 
 c8
 0 sg
-2118 6565 mt 
+2055 6628 mt 
 (TB = 104 \(estimated\)) s
-gs 1646 3897 1697 2731 rc
+gs 1583 3960 1697 2731 rc
 c9
-363 0 1718 6522 2 MP stroke
+363 0 1655 6585 2 MP stroke
 gr
 
 c9
-gs 1753 6376 293 293 rc
+gs 1690 6439 293 293 rc
 0 j
 -35 -26 13 -41 -36 24 -35 -24 13 41 -35 26 43 0 14 41 
-15 -41 43 0 1841 6503 11 MP
+15 -41 43 0 1778 6566 11 MP
 DP
 gr
 
-gs 1646 3897 1697 2731 rc
+gs 1583 3960 1697 2731 rc
 6 w
 gr
 
@@ -1680,33 +1534,27 @@
 countdictstack exch sub { end } repeat
 restore grestore
 %
-% End Imported PIC File: /home/mmiozzo/ns3/lena/ns-3-lena-pem/src/lte/doc/source/figures/MCS_3_test.eps
+% End Imported PIC File: /home/mmiozzo/sandbox/lena/ns-3-lena-dev/src/lte/doc/source/figures/MCS_3.eps
 %%EndDocument
 %
 % Ellipse
 45.000 slw
-n 10575 4410 324 324 0 360 DrawEllipse gs col4 s gr
+n 8055 2520 324 324 0 360 DrawEllipse gs col4 s gr
 
 % Ellipse
-n 9585 4455 324 324 0 360 DrawEllipse gs col4 s gr
-
-% Ellipse
-n 7965 1755 324 324 0 360 DrawEllipse gs col4 s gr
+n 8010 3510 324 324 0 360 DrawEllipse gs col4 s gr
 
 % Ellipse
-n 10665 3420 324 324 0 360 DrawEllipse gs col4 s gr
+n 8010 4950 324 324 0 360 DrawEllipse gs col4 s gr
 
 /Helvetica-Bold ff 349.25 scf sf
-11070 3330 m
+8280 3105 m
 gs 1 -1 sc (A) col4 sh gr
 /Helvetica-Bold ff 349.25 scf sf
-10980 4590 m
+8100 4185 m
 gs 1 -1 sc (B) col4 sh gr
 /Helvetica-Bold ff 349.25 scf sf
-7965 1305 m
-gs 1 -1 sc (D) col4 sh gr
-/Helvetica-Bold ff 349.25 scf sf
-9720 4050 m
+8370 5310 m
 gs 1 -1 sc (C) col4 sh gr
 % here ends figure;
 pagefooter
Binary file src/lte/doc/source/figures/MCS_2_test.pdf has changed
Binary file src/lte/doc/source/figures/MCS_2_test.png has changed
Binary file src/lte/doc/source/figures/MCS_5_8.pdf has changed
Binary file src/lte/doc/source/figures/MCS_5_8.png has changed
Binary file src/lte/doc/source/figures/MCS_9_12.pdf has changed
--- a/src/lte/doc/source/lte-design.rst	Fri May 18 10:30:14 2012 +0200
+++ b/src/lte/doc/source/lte-design.rst	Tue May 29 10:42:17 2012 +0200
@@ -1255,15 +1255,26 @@
 
    BLER for MCS 21, 22, 23 and 24.
 
-.. _fig-mcs-25-27-ber:
 
-.. figure:: figures/MCS_25_27.*
+.. _fig-mcs-25-28-ber:
+
+.. figure:: figures/MCS_25_28.*
    :width: 900px
    :align: center
    :height: 700px
 
 
-   BLER for MCS 25, 26 and 27.
+   BLER for MCS 25, 26, 27 and 28.
+
+.. _fig-mcs-29-29-ber:
+
+.. figure:: figures/MCS_29_29.*
+   :width: 900px
+   :align: center
+   :height: 700px
+
+
+   BLER for MCS 29.
 
 
 
--- a/src/lte/doc/source/lte-testing.rst	Fri May 18 10:30:14 2012 +0200
+++ b/src/lte/doc/source/lte-testing.rst	Tue May 29 10:42:17 2012 +0200
@@ -372,14 +372,12 @@
 
 The parameters of the nine test cases are reported in the following:
 
- #. 4 UEs placed 898 meters far from the eNB, which implies the use of MCS 2 (SINR of -2.21 dB) and a TB of 176 bits, that in turns produce a BER of 0.19 (see point A in figure :ref:`fig-mcs-2-test`).
- #. 3 UEs placed 900 meters far from the eNB, which implies the use of MCS 2 (SINR of -2.25 dB) and a TB of 328 bits, that in turns produce a BER of 0.09 (see point B in figure :ref:`fig-mcs-2-test`).
- #. 2 UEs placed 920 meters far from the eNB, which implies the use of MCS 2 (SINR of -2.61 dB) and a TB of 72 bits, that in turns produce a BER of 0.123 (see point D in figure :ref:`fig-mcs-2-test`).
- #. 1 UE placed 930 meters far from the eNB, which implies the use of MCS 2 (SINR of -2.79 dB) and a TB of 72 bits, that in turns produce a BER of 0.9 (see point D in figure :ref:`fig-mcs-2-test`).
- #. 1 UE placed 538 meters far from the eNB, which implies the use of MCS 12 (SINR of 4.19 dB) and a TB of 4776 bits, that in turns produce a BER of 0.017 (see point E in figure :ref:`fig-mcs-12-test`).
- #. 3 UEs placed 538 meters far from the eNB, which implies the use of MCS 12 (SINR of 4.19 dB) and a TB of 1608 bits, that in turns produce a BER of 0.23 (see point F in figure :ref:`fig-mcs-12-test`).
- #. 7 UEs placed 538 meters far from the eNB, which implies the use of MCS 12 (SINR of 4.19 dB) and a TB of 376 bits, that in turns produce a BER of 0.72 (see point G in figure :ref:`fig-mcs-12-test`).
- #. 1 UE placed 500 meters far from the eNB, which implies the use of MCS 14 (SINR of 5.53 dB) and a TB of 6248 bits (segmented in 2 CBs of 3136 bits each one), that in turns produce a BER of 0.18, since each CB has CBLER equal to 0.096 (see point H in figure :ref:`fig-mcs-14-test`).
+ #. 4 UEs placed 1800 meters far from the eNB, which implies the use of MCS 2 (SINR of -5.51 dB) and a TB of 256 bits, that in turns produce a BER of 0.33 (see point A in figure :ref:`fig-mcs-2-test`).
+ #. 2 UEs placed 1800 meters far from the eNB, which implies the use of MCS 2 (SINR of -5.51 dB) and a TB of 528 bits, that in turns produce a BER of 0.11 (see point B in figure :ref:`fig-mcs-2-test`).
+ #. 1 UE placed 1800 meters far from the eNB, which implies the use of MCS 2 (SINR of -5.51 dB) and a TB of 1088 bits, that in turns produce a BER of 0.02 (see point C in figure :ref:`fig-mcs-2-test`).
+ #. 1 UE placed 600 meters far from the eNB, which implies the use of MCS 12 (SINR of 4.43 dB) and a TB of 4800 bits, that in turns produce a BER of 0.3 (see point D in figure :ref:`fig-mcs-12-test`).
+ #. 3 UEs placed 600 meters far from the eNB, which implies the use of MCS 12 (SINR of 4.43 dB) and a TB of 1632 bits, that in turns produce a BER of 0.55 (see point E in figure :ref:`fig-mcs-12-test`).
+ #. 1 UE placed 470 meters far from the eNB, which implies the use of MCS 16 (SINR of 8.48 dB) and a TB of 7272 bits (segmented in 2 CBs of 3648 and 3584 bits), that in turns produce a BER of 0.14, since each CB has CBLER equal to 0.075 (see point F in figure :ref:`fig-mcs-14-test`).
 
 
 .. _fig-mcs-2-test:
@@ -388,21 +386,21 @@
    :align: center
 
 
-   BLER for tests 1, 2, 3, 4.
+   BLER for tests 1, 2, 3.
 
 .. _fig-mcs-12-test:
 
 .. figure:: figures/MCS_12_test.*
    :align: center
 
-   BLER for tests 5, 6, 7.
+   BLER for tests 4, 5.
 
 .. _fig-mcs-14-test:
 
-.. figure:: figures/MCS_14_test.*
+.. figure:: figures/MCS_16_test.*
    :align: center
 
-   BLER for test 8.
+   BLER for test 6.
 
 
 The test verifies that in each case the expected number of packets received correct corresponds to a Bernoulli distribution with a confidence interval of 95%, where the probability of success in each trail is :math:`1-BER` and :math:`n` is the total number of packet sent.
--- a/src/lte/examples/lena-dual-stripe.cc	Fri May 18 10:30:14 2012 +0200
+++ b/src/lte/examples/lena-dual-stripe.cc	Tue May 29 10:42:17 2012 +0200
@@ -154,11 +154,66 @@
       outFile << "set object " << index
               << " rect from " << box.xMin  << "," << box.yMin  
               << " to "   << box.xMax  << "," << box.yMax
-              << " front"
+              << " front fs empty "
               << std::endl;
     }
 }
 
+void 
+PrintGnuplottableUeListToFile (std::string filename)
+{
+  std::ofstream outFile;
+  outFile.open (filename.c_str ());
+  if (!outFile.is_open ())
+    {
+      NS_LOG_ERROR ("Can't open file " << filename);
+      return;
+    }
+  for (NodeList::Iterator it = NodeList::Begin (); it != NodeList::End (); ++it)
+    {
+      Ptr<Node> node = *it;
+      int nDevs = node->GetNDevices ();
+      for (int j = 0; j < nDevs; j++)
+        {
+          Ptr<LteUeNetDevice> uedev = node->GetDevice (j)->GetObject <LteUeNetDevice> ();
+          if (uedev)
+            {
+              Vector pos = node->GetObject<MobilityModel> ()->GetPosition ();
+              outFile << "set label \"" << uedev->GetImsi ()
+                      << "\" at "<< pos.x << "," << pos.y << " left font \"Helvetica,4\" textcolor rgb \"grey\" front point pt 1 ps 0.3 lc rgb \"grey\" offset 0,0"  
+                      << std::endl;
+            }
+        }
+    }
+}
+
+void 
+PrintGnuplottableEnbListToFile (std::string filename)
+{
+  std::ofstream outFile;
+  outFile.open (filename.c_str ());
+  if (!outFile.is_open ())
+    {
+      NS_LOG_ERROR ("Can't open file " << filename);
+      return;
+    }
+  for (NodeList::Iterator it = NodeList::Begin (); it != NodeList::End (); ++it)
+    {
+      Ptr<Node> node = *it;
+      int nDevs = node->GetNDevices ();
+      for (int j = 0; j < nDevs; j++)
+        {
+          Ptr<LteEnbNetDevice> enbdev = node->GetDevice (j)->GetObject <LteEnbNetDevice> ();
+          if (enbdev)
+            {
+              Vector pos = node->GetObject<MobilityModel> ()->GetPosition ();
+              outFile << "set label \"" << enbdev->GetCellId ()
+                      << "\" at "<< pos.x << "," << pos.y << " left font \"Helvetica,4\" textcolor rgb \"white\" front  point pt 2 ps 0.3 lc rgb \"white\" offset 0,0"  
+                      << std::endl;
+            }
+        }
+    }
+}
 
 int
 main (int argc, char *argv[])
@@ -193,7 +248,6 @@
   bool epcUl = true;
   bool useUdp = true;
   bool generateRem = false;
-  bool printBuildingList = false;
   
   CommandLine cmd;
   cmd.AddValue ("nBlocks", "Number of femtocell blocks", nBlocks);
@@ -222,8 +276,6 @@
   cmd.AddValue ("simTime", "Total duration of the simulation [s]", simTime);
   cmd.AddValue ("generateRem", "if true, will generate a REM and then abort the simulation;"
                 "if false, will run the simulation normally (without generating any REM)", generateRem);
-  cmd.AddValue ("printBuildingList", "if true, will save a list of buildings with their positions to file;"
-                "if false, will run the simulation normally (without generating any REM)", printBuildingList);
   cmd.AddValue ("epc", "if true, will setup the EPC to simulate an end-to-end topology;"
                 "if false, only the LTE radio access will be simulated.", epc);
   cmd.AddValue ("epcDl", "if true, will activate data flows in the downlink when EPC is being used. "
@@ -244,22 +296,32 @@
 
   cmd.Parse (argc, argv);
 
-  uint32_t currentSite = nMacroEnbSites -1;
-  uint32_t biRowIndex = (currentSite / (nMacroEnbSitesX + nMacroEnbSitesX + 1));
-  uint32_t biRowRemainder = currentSite % (nMacroEnbSitesX + nMacroEnbSitesX + 1);
-  uint32_t rowIndex = biRowIndex*2 + 1;
-  if (biRowRemainder >= nMacroEnbSitesX)
+  Box macroUeBox;
+
+  if (nMacroEnbSites > 0)
     {
-      ++rowIndex;
+      uint32_t currentSite = nMacroEnbSites -1;
+      uint32_t biRowIndex = (currentSite / (nMacroEnbSitesX + nMacroEnbSitesX + 1));
+      uint32_t biRowRemainder = currentSite % (nMacroEnbSitesX + nMacroEnbSitesX + 1);
+      uint32_t rowIndex = biRowIndex*2 + 1;
+      if (biRowRemainder >= nMacroEnbSitesX)
+        {
+          ++rowIndex;
+        }
+      uint32_t nMacroEnbSitesY = rowIndex;
+      NS_LOG_LOGIC ("nMacroEnbSitesY = " << nMacroEnbSitesY);
+
+      macroUeBox = Box (-areaMarginFactor*interSiteDistance, 
+                        (nMacroEnbSitesX + areaMarginFactor)*interSiteDistance, 
+                        -areaMarginFactor*interSiteDistance, 
+                        (nMacroEnbSitesY -1)*interSiteDistance*sqrt(0.75) + areaMarginFactor*interSiteDistance,
+                        1.0, 2.0);
     }
-  uint32_t nMacroEnbSitesY = rowIndex;
-  NS_LOG_LOGIC ("nMacroEnbSitesY = " << nMacroEnbSitesY);
-
-  Box macroUeBox (-areaMarginFactor*interSiteDistance, 
-                  (nMacroEnbSitesX + areaMarginFactor)*interSiteDistance, 
-                  -areaMarginFactor*interSiteDistance, 
-                  (nMacroEnbSitesY -1)*interSiteDistance*sqrt(0.75) + areaMarginFactor*interSiteDistance,
-                  1.0, 2.0);
+  else
+    {
+      // still need the box to place femtocell blocks
+      macroUeBox = Box (0, 150, 0, 150, 1.0, 2.0);
+    }
   
   FemtocellBlockAllocator blockAllocator (macroUeBox, nApartmentsX, nFloors);
   blockAllocator.Create (nBlocks);
@@ -353,7 +415,17 @@
   mobility.SetPositionAllocator (positionAlloc);
   mobility.Install (homeUes);
   NetDeviceContainer homeUeDevs = lteHelper->InstallUeDevice (homeUes);
-  lteHelper->AttachToClosestEnb (homeUeDevs, homeEnbDevs);
+
+  NetDeviceContainer::Iterator ueDevIt;
+  NetDeviceContainer::Iterator enbDevIt;
+  // attach explicitly each home UE to its home eNB
+  for (ueDevIt = homeUeDevs.Begin (), 
+          enbDevIt = homeEnbDevs.Begin (); 
+       ueDevIt != homeUeDevs.End () && enbDevIt != homeEnbDevs.End (); 
+       ++ueDevIt, ++enbDevIt)
+    {
+      lteHelper->Attach (*ueDevIt, *enbDevIt);
+    }
 
 
   if (epc)
@@ -478,6 +550,10 @@
   Ptr<RadioEnvironmentMapHelper> remHelper;
   if (generateRem)
     {
+      PrintGnuplottableBuildingListToFile ("buildings.txt");
+      PrintGnuplottableEnbListToFile ("enbs.txt");
+      PrintGnuplottableUeListToFile ("ues.txt");
+
       remHelper = CreateObject<RadioEnvironmentMapHelper> ();
       remHelper->SetAttribute ("ChannelPath", StringValue ("/ChannelList/0"));
       remHelper->SetAttribute ("OutputFile", StringValue ("lena-dual-stripe.rem"));
@@ -488,6 +564,8 @@
       remHelper->SetAttribute ("Z", DoubleValue (1.5));
       remHelper->Install ();
       // simulation will stop right after the REM has been generated
+
+
     }
   else
     {
@@ -501,11 +579,6 @@
       lteHelper->EnablePdcpTraces ();
     }
 
-  if (printBuildingList)
-    {
-      PrintGnuplottableBuildingListToFile ("buildings.txt");
-    }
-
   Simulator::Run ();
 
   //GtkConfigStore config;
--- a/src/lte/examples/lena-rem-sector-antenna.cc	Fri May 18 10:30:14 2012 +0200
+++ b/src/lte/examples/lena-rem-sector-antenna.cc	Tue May 29 10:42:17 2012 +0200
@@ -164,12 +164,12 @@
   vector < NetDeviceContainer > ueDevs;
 
   // power setting in dBm for small cells
-  Config::SetDefault ("ns3::LteEnbPhy::TxPower", DoubleValue (10.0));
+  Config::SetDefault ("ns3::LteEnbPhy::TxPower", DoubleValue (20.0));
   enbDevs = lteHelper->InstallEnbDevice (oneSectorNodes);
 
 
   // power setting for three-sector macrocell
-  Config::SetDefault ("ns3::LteEnbPhy::TxPower", DoubleValue (30.0));
+  Config::SetDefault ("ns3::LteEnbPhy::TxPower", DoubleValue (43.0));
 
   // Beam width is made quite narrow so sectors can be noticed in the REM
   lteHelper->SetEnbAntennaModelType ("ns3::CosineAntennaModel");
--- a/src/lte/model/lte-amc.cc	Fri May 18 10:30:14 2012 +0200
+++ b/src/lte/model/lte-amc.cc	Tue May 29 10:42:17 2012 +0200
@@ -348,7 +348,7 @@
             double ber = 0.0;
             while (mcs < 28)
               {
-                ber = LteMiErrorModel::GetTbError (sinr, rbgMap, (uint16_t)GetTbSizeFromMcs (mcs, rbgSize), mcs);
+                ber = LteMiErrorModel::GetTbError (sinr, rbgMap, (uint16_t)GetTbSizeFromMcs (mcs, rbgSize) / 8, mcs);
                 if (ber > 0.1)
                   break;
                 mcs++;
--- a/src/lte/model/lte-mi-error-model.cc	Fri May 18 10:30:14 2012 +0200
+++ b/src/lte/model/lte-mi-error-model.cc	Tue May 29 10:42:17 2012 +0200
@@ -40,7 +40,6 @@
 #include <stdint.h>
 #include "stdlib.h"
 #include <ns3/lte-mi-error-model.h>
-//#include <ns3/lte-amc.h> // for DEBUGing
 
 
 
@@ -67,147 +66,173 @@
     5824, 5888, 5952, 6016, 6080, 6144   
   };
   
-  double MI_map_qpsk[MI_MAP_QPSK_SIZE] = {
-      0.241488960000000,0.246542900000000,0.251558600000000,0.256536500000000,0.261477000000000,0.266380510000000,0.271247420000000,0.276078100000000,0.280872930000000,0.285632250000000,0.290356410000000,0.295045750000000,0.299700590000000,0.304321240000000,0.308908030000000,0.313461230000000,0.317981160000000,0.322468090000000,0.326922300000000,0.331344060000000,0.335733640000000,0.340091280000000,0.344417260000000,0.348711800000000,0.352975150000000,0.357207550000000,0.361409220000000,0.364930950000000,0.369063590000000,0.373163910000000,0.377232300000000,0.381269140000000,0.385274790000000,0.389249620000000,0.393193970000000,0.397108200000000,0.400992630000000,0.404847590000000,0.408673420000000,0.412470430000000,0.416238920000000,0.419979200000000,0.423691560000000,0.427376310000000,0.431033730000000,0.434664100000000,0.438267690000000,0.441844780000000,0.445395640000000,0.448920520000000,0.452419680000000,0.455893390000000,0.459341880000000,0.462765400000000,0.466164190000000,0.469538500000000,0.472888540000000,0.476214560000000,0.479516780000000,0.482795410000000,0.486050690000000,0.489282820000000,0.492492030000000,0.495678510000000,0.498842470000000,0.501984120000000,0.505103670000000,0.508201300000000,0.511277210000000,0.514331590000000,0.517364640000000,0.520376540000000,0.523367480000000,0.526337640000000,0.529287190000000,0.532216320000000,0.535125210000000,0.538014010000000,0.540882910000000,0.543732080000000,0.546561670000000,0.549371860000000,0.552162810000000,0.554934680000000,0.557687620000000,0.560421800000000,0.563137360000000,0.565834470000000,0.568513260000000,0.571173900000000,0.573816530000000,0.576441300000000,0.579048340000000,0.581637810000000,0.584209840000000,0.586764580000000,0.589302160000000,0.591822710000000,0.594326380000000,0.596813300000000,0.599283600000000,0.601737400000000,0.604174850000000,0.606596060000000,0.609001170000000,0.611390290000000,0.613763560000000,0.616121100000000,0.618463020000000,0.620789450000000,0.623100500000000,0.625396300000000,0.627676970000000,0.629942600000000,0.632193330000000,0.634429260000000,0.636650510000000,0.638857190000000,0.641049400000000,0.643227250000000,0.645390860000000,0.647540330000000,0.649675770000000,0.651797270000000,0.653904950000000,0.655998910000000,0.658079240000000,0.660146050000000,0.662199440000000,0.664239510000000,0.666266360000000,0.668280070000000,0.670280760000000,0.672268510000000,0.674243420000000,0.676205580000000,0.678155080000000,0.680092020000000,0.682016490000000,0.683928580000000,0.685828370000000,0.687715960000000,0.689591440000000,0.691454880000000,0.693306380000000,0.695146030000000,0.696973900000000,0.698790090000000,0.700594670000000,0.702387730000000,0.704169340000000,0.705939600000000,0.707698580000000,0.709446360000000,0.711183020000000,0.712908640000000,0.714623290000000,0.716327060000000,0.718020020000000,0.719702250000000,0.721373810000000,0.723034800000000,0.724685270000000,0.726325300000000,0.727954970000000,0.729574350000000,0.731183510000000,0.732782520000000,0.734371450000000,0.735950370000000,0.737519350000000,0.739078460000000,0.740627770000000,0.742167340000000,0.743697240000000,0.745217540000000,0.746728300000000,0.748229600000000,0.749721480000000,0.751204030000000,0.752677300000000,0.754141350000000,0.755596250000000,0.757042070000000,0.758478850000000,0.759906670000000,0.761325590000000,0.762735660000000,0.764136940000000,0.765529500000000,0.766913400000000,0.768288690000000,0.769655420000000,0.771013670000000,0.772363480000000,0.773704920000000,0.775038030000000,0.776362880000000,0.777679510000000,0.778988000000000,0.780288380000000,0.781580710000000,0.782865060000000,0.784141460000000,0.785409980000000,0.786670670000000,0.787923570000000,0.789168750000000,0.790406240000000,0.791636110000000,0.792858410000000,0.794073170000000,0.795280460000000,0.796480330000000,0.797672820000000,0.798857970000000,0.800035850000000,0.801206500000000,0.802369960000000,0.803526280000000,0.804675510000000,0.805817700000000,0.806952890000000,0.808081130000000,0.809202470000000,0.810316940000000,0.811424600000000,0.812525490000000,0.813619650000000,0.814707120000000,0.815787960000000,0.816862210000000,0.817929900000000,0.818991080000000,0.820045790000000,0.821094080000000,0.822135980000000,0.823171540000000,0.824200800000000,0.825223800000000,0.826240580000000,0.827251180000000,0.828255640000000,0.829254010000000,0.830246310000000,0.831232590000000,0.832212890000000,0.833187250000000,0.834155700000000,0.835118290000000,0.836075040000000,0.837026010000000,0.837971210000000,0.838910710000000,0.839844520000000,0.840772690000000,0.841695250000000,0.842612230000000,0.843523690000000,0.844429640000000,0.845330120000000,0.846225180000000,0.847114840000000,0.847999130000000,0.848878100000000,0.849751780000000,0.850620200000000,0.851483390000000,0.852341390000000,0.853194230000000,0.854041940000000,0.854884560000000,0.855722120000000,0.856554650000000,0.857382180000000,0.858204740000000,0.859022370000000,0.859835100000000,0.860642950000000,0.861445970000000,0.862244170000000,0.863037590000000,0.863826270000000,0.864610220000000,0.865389480000000,0.866164090000000,0.866934060000000,0.867699430000000,0.868460220000000,0.869216480000000,0.869968210000000,0.870715460000000,0.871458260000000,0.872196620000000,0.872930570000000,0.873660150000000,0.874385390000000,0.875106300000000,0.875822920000000,0.876535280000000,0.877243390000000,0.877947290000000,0.878647000000000,0.879342550000000,0.880033970000000,0.880721280000000,0.881404500000000,0.882083670000000,0.882758810000000,0.883429930000000,0.884097080000000,0.884760270000000,0.885419520000000,0.886074870000000,0.886726330000000,0.887373930000000,0.888017700000000,0.888657650000000,0.889293810000000,0.889926210000000,0.890554870000000,0.891179810000000,0.891801060000000,0.892418630000000,0.893032560000000,0.893642850000000,0.894249540000000,0.894852650000000,0.895452200000000,0.896048210000000,0.896640710000000,0.897229710000000,0.897815230000000,0.898397310000000,0.898975950000000,0.899551190000000,0.900123040000000,0.900691520000000,0.901256650000000,0.901818460000000,0.902376960000000,0.902932180000000,0.903484130000000,0.904032840000000,0.904578320000000,0.905120600000000,0.905659690000000,0.906195620000000,0.906728400000000,0.907258050000000,0.907784600000000,0.908308050000000,0.908828440000000,0.909345770000000,0.909860080000000,0.910371360000000,0.910879660000000,0.911384970000000,0.911887330000000,0.912386740000000,0.912883230000000,0.913376820000000,0.913867520000000,0.914355350000000,0.914840330000000,0.915322470000000,0.915801790000000,0.916278320000000,0.916752060000000,0.917223030000000,0.917691250000000,0.918156740000000,0.918619520000000,0.919079590000000,0.919536980000000,0.919991710000000,0.920443780000000,0.920893220000000,0.921340040000000,0.921784250000000,0.922225880000000,0.922664940000000,0.923101440000000,0.923535400000000,0.923966840000000,0.924395760000000,0.924822190000000,0.925246140000000,0.925667630000000,0.926086670000000,0.926503270000000,0.926917450000000,0.927329230000000,0.927738610000000,0.928145620000000,0.928550270000000,0.928952570000000,0.929352530000000,0.929750180000000,0.930145510000000,0.930538560000000,0.930929330000000,0.931317830000000,0.931704090000000,0.932088100000000,0.932469900000000,0.932849480000000,0.933226860000000,0.933602060000000,0.933975090000000,0.934345960000000
-	};
-  double MI_map_qpsk_axis[MI_MAP_QPSK_SIZE] = {
-		-3.97940010000000,-3.87216140000000,-3.76750710000000,-3.66531540000000,-3.56547320000000,-3.46787490000000,-3.37242170000000,-3.27902140000000,-3.18758760000000,-3.09803920000000,-3.01030000000000,-2.92429820000000,-2.83996660000000,-2.75724130000000,-2.67606240000000,-2.59637310000000,-2.51811970000000,-2.44125140000000,-2.36572010000000,-2.29147990000000,-2.21848750000000,-2.14670160000000,-2.07608310000000,-2.00659450000000,-1.93820030000000,-1.87086640000000,-1.80456060000000,-1.73925200000000,-1.67491090000000,-1.61150910000000,-1.54901960000000,-1.48741650000000,-1.42667500000000,-1.36677140000000,-1.30768280000000,-1.24938740000000,-1.19186410000000,-1.13509270000000,-1.07905400000000,-1.02372910000000,-0.969100130000000,-0.915149810000000,-0.861861480000000,-0.809219080000000,-0.757207140000000,-0.705810740000000,-0.655015490000000,-0.604807470000000,-0.555173280000000,-0.506099930000000,-0.457574910000000,-0.409586080000000,-0.362121730000000,-0.315170510000000,-0.268721460000000,-0.222763950000000,-0.177287670000000,-0.132282660000000,-0.0877392430000000,-0.0436480540000000,0,0.0432137380000000,0.0860017180000000,0.128372250000000,0.170333390000000,0.211892990000000,0.253058650000000,0.293837780000000,0.334237550000000,0.374264980000000,0.413926850000000,0.453229790000000,0.492180230000000,0.530784430000000,0.569048510000000,0.606978400000000,0.644579890000000,0.681858620000000,0.718820070000000,0.755469610000000,0.791812460000000,0.827853700000000,0.863598310000000,0.899051110000000,0.934216850000000,0.969100130000000,1.00370550000000,1.03803720000000,1.07209970000000,1.10589710000000,1.13943350000000,1.17271300000000,1.20573930000000,1.23851640000000,1.27104800000000,1.30333770000000,1.33538910000000,1.36720570000000,1.39879090000000,1.43014800000000,1.46128040000000,1.49219110000000,1.52288340000000,1.55336040000000,1.58362490000000,1.61368000000000,1.64352860000000,1.67317330000000,1.70261720000000,1.73186270000000,1.76091260000000,1.78976950000000,1.81843590000000,1.84691430000000,1.87520720000000,1.90331700000000,1.93124600000000,1.95899650000000,1.98657090000000,2.01397120000000,2.04119980000000,2.06825880000000,2.09515010000000,2.12187600000000,2.14843850000000,2.17483940000000,2.20108090000000,2.22716470000000,2.25309280000000,2.27886700000000,2.30448920000000,2.32996110000000,2.35528450000000,2.38046100000000,2.40549250000000,2.43038050000000,2.45512670000000,2.47973270000000,2.50420000000000,2.52853030000000,2.55272510000000,2.57678570000000,2.60071390000000,2.62451090000000,2.64817820000000,2.67171730000000,2.69512940000000,2.71841610000000,2.74157850000000,2.76461800000000,2.78753600000000,2.81033370000000,2.83301230000000,2.85557310000000,2.87801730000000,2.90034610000000,2.92256070000000,2.94466230000000,2.96665190000000,2.98853080000000,3.01030000000000,3.03196060000000,3.05351370000000,3.07496040000000,3.09630170000000,3.11753860000000,3.13867220000000,3.15970350000000,3.18063330000000,3.20146290000000,3.22219290000000,3.24282460000000,3.26335860000000,3.28379600000000,3.30413770000000,3.32438460000000,3.34453750000000,3.36459730000000,3.38456490000000,3.40444110000000,3.42422680000000,3.44392270000000,3.46352970000000,3.48304860000000,3.50248020000000,3.52182520000000,3.54108440000000,3.56025860000000,3.57934850000000,3.59835480000000,3.61727840000000,3.63611980000000,3.65487980000000,3.67355920000000,3.69215860000000,3.71067860000000,3.72912000000000,3.74748350000000,3.76576960000000,3.78397900000000,3.80211240000000,3.82017040000000,3.83815370000000,3.85606270000000,3.87389830000000,3.89166080000000,3.90935110000000,3.92696950000000,3.94451680000000,3.96199350000000,3.97940010000000,3.99673720000000,4.01400540000000,4.03120520000000,4.04833720000000,4.06540180000000,4.08239970000000,4.09933120000000,4.11619710000000,4.13299760000000,4.14973350000000,4.16640510000000,4.18301290000000,4.19955750000000,4.21603930000000,4.23245870000000,4.24881640000000,4.26511260000000,4.28134790000000,4.29752280000000,4.31363760000000,4.32969290000000,4.34568900000000,4.36162650000000,4.37750560000000,4.39332690000000,4.40909080000000,4.42479770000000,4.44044800000000,4.45604200000000,4.47158030000000,4.48706320000000,4.50249110000000,4.51786440000000,4.53318340000000,4.54844860000000,4.56366030000000,4.57881900000000,4.59392490000000,4.60897840000000,4.62398000000000,4.63892990000000,4.65382850000000,4.66867620000000,4.68347330000000,4.69822020000000,4.71291710000000,4.72756450000000,4.74216260000000,4.75671190000000,4.77121250000000,4.78566500000000,4.80006940000000,4.81442630000000,4.82873580000000,4.84299840000000,4.85721430000000,4.87138380000000,4.88550720000000,4.89958480000000,4.91361690000000,4.92760390000000,4.94154590000000,4.95544340000000,4.96929650000000,4.98310550000000,4.99687080000000,5.01059260000000,5.02427120000000,5.03790680000000,5.05149980000000,5.06505030000000,5.07855870000000,5.09202520000000,5.10545010000000,5.11883360000000,5.13217600000000,5.14547750000000,5.15873840000000,5.17195900000000,5.18513940000000,5.19827990000000,5.21138080000000,5.22444230000000,5.23746470000000,5.25044810000000,5.26339280000000,5.27629900000000,5.28916700000000,5.30199700000000,5.31478920000000,5.32754380000000,5.34026110000000,5.35294120000000,5.36558440000000,5.37819100000000,5.39076100000000,5.40329470000000,5.41579240000000,5.42825430000000,5.44068040000000,5.45307120000000,5.46542660000000,5.47774710000000,5.49003260000000,5.50228350000000,5.51450000000000,5.52668220000000,5.53883030000000,5.55094450000000,5.56302500000000,5.57507200000000,5.58708570000000,5.59906630000000,5.61101380000000,5.62292860000000,5.63481090000000,5.64666060000000,5.65847820000000,5.67026370000000,5.68201720000000,5.69373910000000,5.70542940000000,5.71708830000000,5.72871600000000,5.74031270000000,5.75187840000000,5.76341350000000,5.77491800000000,5.78639210000000,5.79783600000000,5.80924980000000,5.82063360000000,5.83198770000000,5.84331220000000,5.85460730000000,5.86587300000000,5.87710970000000,5.88831730000000,5.89949600000000,5.91064610000000,5.92176760000000,5.93286070000000,5.94392550000000,5.95496220000000,5.96597100000000,5.97695190000000,5.98790510000000,5.99883070000000,6.00972900000000,6.02059990000000,6.03144370000000,6.04226050000000,6.05305050000000,6.06381370000000,6.07455020000000,6.08526030000000,6.09594410000000,6.10660160000000,6.11723310000000,6.12783860000000,6.13841820000000,6.14897220000000,6.15950050000000,6.17000340000000,6.18048100000000,6.19093330000000,6.20136050000000,6.21176280000000,6.22214020000000,6.23249290000000,6.24282100000000,6.25312450000000,6.26340370000000,6.27365860000000,6.28388930000000,6.29409600000000,6.30427880000000,6.31443770000000,6.32457290000000,6.33468460000000,6.34477270000000,6.35483750000000,6.36487900000000,6.37489730000000,6.38489260000000,6.39486490000000,6.40481440000000,6.41474110000000,6.42464520000000,6.43452680000000,6.44438590000000,6.45422270000000,6.46403730000000,6.47382970000000,6.48360010000000,6.49334860000000,6.50307520000000,6.51278010000000,6.52246340000000,6.53212510000000
-	};
-	
-  double MI_map_16qam[MI_MAP_16QAM_SIZE] = {
-		0.456130300000000,0.460154830000000,0.464125120000000,0.468042570000000,0.471908520000000,0.475724250000000,0.479491030000000,0.483210040000000,0.486882460000000,0.490509410000000,0.494091960000000,0.497631160000000,0.501128010000000,0.504583500000000,0.507998570000000,0.511374120000000,0.514711030000000,0.518010150000000,0.521272300000000,0.524498280000000,0.527688850000000,0.530844760000000,0.533966720000000,0.537055440000000,0.539786130000000,0.542806950000000,0.545795760000000,0.548753210000000,0.551679940000000,0.554576570000000,0.557443690000000,0.560281880000000,0.563091700000000,0.565873700000000,0.568628410000000,0.571356350000000,0.574058000000000,0.576733860000000,0.579384390000000,0.582010060000000,0.584611300000000,0.587188540000000,0.589742210000000,0.592272710000000,0.594780440000000,0.597265780000000,0.599729100000000,0.602170780000000,0.604591160000000,0.606990590000000,0.609369400000000,0.611727930000000,0.614066480000000,0.616385380000000,0.618684910000000,0.620965380000000,0.623227080000000,0.625470270000000,0.627695230000000,0.629902230000000,0.632091530000000,0.634263380000000,0.636418020000000,0.638555700000000,0.640676640000000,0.642781080000000,0.644869250000000,0.646941350000000,0.648997600000000,0.651038220000000,0.653063400000000,0.655073340000000,0.657068230000000,0.659048280000000,0.661013650000000,0.662964530000000,0.664901110000000,0.666823550000000,0.668732020000000,0.670626690000000,0.672507730000000,0.674375280000000,0.676229510000000,0.678070580000000,0.679898620000000,0.681713790000000,0.683516230000000,0.685306070000000,0.687083470000000,0.688848550000000,0.690601450000000,0.692342290000000,0.694071210000000,0.695788330000000,0.697493770000000,0.699187650000000,0.700870090000000,0.702541210000000,0.704201120000000,0.705849930000000,0.707487760000000,0.709114710000000,0.710730880000000,0.712336390000000,0.713931330000000,0.715515810000000,0.717089920000000,0.718653760000000,0.720207430000000,0.721751020000000,0.723284630000000,0.724808340000000,0.726322250000000,0.727826440000000,0.729321010000000,0.730806030000000,0.732281590000000,0.733747780000000,0.735204680000000,0.736652360000000,0.738090910000000,0.739520400000000,0.740940920000000,0.742352530000000,0.743755320000000,0.745149350000000,0.746534710000000,0.747911460000000,0.749279670000000,0.750639410000000,0.751990750000000,0.753333770000000,0.754668520000000,0.755995070000000,0.757313490000000,0.758623850000000,0.759926200000000,0.761220620000000,0.762507150000000,0.763785870000000,0.765056830000000,0.766320100000000,0.767575720000000,0.768823770000000,0.770064300000000,0.771297370000000,0.772523030000000,0.773741330000000,0.774952340000000,0.776156110000000,0.777352690000000,0.778542130000000,0.779724490000000,0.780899820000000,0.782068170000000,0.783229590000000,0.784384140000000,0.785531850000000,0.786672790000000,0.787806990000000,0.788934520000000,0.790055410000000,0.791169710000000,0.792277470000000,0.793378740000000,0.794473560000000,0.795561980000000,0.796644030000000,0.797719780000000,0.798789250000000,0.799852500000000,0.800909570000000,0.801960490000000,0.803005310000000,0.804044080000000,0.805076840000000,0.806103620000000,0.807124460000000,0.808139420000000,0.809148520000000,0.810151800000000,0.811149320000000,0.812141090000000,0.813127170000000,0.814107590000000,0.815082390000000,0.816051610000000,0.817015280000000,0.817973440000000,0.818926130000000,0.819873380000000,0.820815220000000,0.821751710000000,0.822682860000000,0.823608710000000,0.824529310000000,0.825444670000000,0.826354850000000,0.827259860000000,0.828159750000000,0.829054550000000,0.829944290000000,0.830829000000000,0.831708720000000,0.832583470000000,0.833453290000000,0.834318220000000,0.835178270000000,0.836033490000000,0.836883900000000,0.837729540000000,0.838570430000000,0.839406610000000,0.840238100000000,0.841064940000000,0.841887150000000,0.842704760000000,0.843517810000000,0.844326310000000,0.845130310000000,0.845929820000000,0.846724880000000,0.847515510000000,0.848301740000000,0.849083600000000,0.849861110000000,0.850634310000000,0.851403220000000,0.852167860000000,0.852928260000000,0.853684450000000,0.854436460000000,0.855184310000000,0.855928020000000,0.856667620000000,0.857403140000000,0.858134600000000,0.858862020000000,0.859585440000000,0.860304870000000,0.861020350000000,0.861731880000000,0.862439500000000,0.863143240000000,0.863843110000000,0.864539140000000,0.865231350000000,0.865919760000000,0.866604410000000,0.867285300000000,0.867962470000000,0.868635930000000,0.869305710000000,0.869971830000000,0.870634320000000,0.871293190000000,0.871948460000000,0.872600160000000,0.873248310000000,0.873892930000000,0.874534050000000,0.875171670000000,0.875805830000000,0.876436540000000,0.877063820000000,0.877687700000000,0.878308200000000,0.878925330000000,0.879539110000000,0.880149570000000,0.880756720000000,0.881360590000000,0.881961190000000,0.882558550000000,0.883152670000000,0.883743590000000,0.884331310000000,0.884915870000000,0.885497270000000,0.886075540000000,0.886650690000000,0.887222740000000,0.887791720000000,0.888357630000000,0.888920510000000,0.889480350000000,0.890037190000000,0.890591040000000,0.891141910000000,0.891689830000000,0.892234810000000,0.892776870000000,0.893316030000000,0.893852290000000,0.894385690000000,0.894916240000000,0.895443940000000,0.895968830000000,0.896490910000000,0.897010210000000,0.897526730000000,0.898040490000000,0.898551520000000,0.899059820000000,0.899565420000000,0.900068320000000,0.900568540000000,0.901066100000000,0.901561020000000,0.902053300000000,0.902542970000000,0.903030030000000,0.903514510000000,0.903996420000000,0.904475770000000,0.904952580000000,0.905426860000000,0.905898630000000,0.906367900000000,0.906834690000000,0.907299010000000,0.907760870000000,0.908220280000000,0.908677270000000,0.909131850000000,0.909584030000000,0.910033810000000,0.910481230000000,0.910926280000000,0.911368990000000,0.911809370000000,0.912247420000000,0.912683170000000,0.913116630000000,0.913547800000000,0.913976710000000,0.914403360000000,0.914827770000000,0.915249950000000,0.915669920000000,0.916087680000000,0.916503240000000,0.916916630000000,0.917327850000000,0.917736920000000,0.918143840000000,0.918548630000000,0.918951310000000,0.919351870000000,0.919750340000000,0.920146730000000,0.920541040000000,0.920933300000000,0.921323510000000,0.921711680000000,0.922097820000000,0.922481950000000,0.922864080000000,0.923244210000000,0.923622370000000,0.923998550000000,0.924372780000000,0.924745060000000,0.925115400000000,0.925483810000000,0.925850310000000,0.926214910000000,0.926577610000000,0.926938430000000,0.927297370000000,0.927654450000000,0.928009680000000,0.928363070000000,0.928714620000000,0.929064360000000,0.929412280000000,0.929758400000000,0.930102730000000,0.930445270000000,0.930786050000000,0.931125060000000,0.931462320000000,0.931797840000000,0.932131620000000,0.932463690000000,0.932794030000000,0.933122680000000,0.933449620000000,0.933774890000000,0.934098470000000,0.934420390000000,0.934740650000000,0.935059260000000,0.935376230000000,0.935691570000000,0.936005290000000,0.936317400000000,0.936627900000000,0.936936800000000,0.937244120000000,0.937549860000000,0.937854030000000,0.938156640000000,0.938457700000000,0.938757220000000,0.939055200000000,0.939351650000000,0.939646580000000,0.939940000000000,0.940231930000000,0.940522350000000,0.940811290000000,0.941098760000000,0.941384750000000,0.941669280000000,0.941952360000000,0.942234000000000,0.942514190000000,0.942792960000000,0.943070300000000,0.943346230000000,0.943620750000000,0.943893870000000,0.944165600000000,0.944435940000000,0.944704910000000,0.944972510000000,0.945238750000000,0.945503630000000,0.945767170000000,0.946029370000000,0.946290230000000,0.946549770000000,0.946807990000000,0.947064900000000,0.947320500000000,0.947574810000000,0.947827830000000,0.948079560000000,0.948330020000000,0.948579210000000,0.948827140000000,0.949073810000000,0.949319230000000,0.949563410000000,0.949806350000000,0.950048070000000,0.950288560000000,0.950527840000000,0.950765900000000,0.951002770000000,0.951238440000000,0.951472910000000,0.951706210000000,0.951938330000000,0.952169270000000,0.952399060000000,0.952627680000000,0.952855150000000,0.953081470000000,0.953306660000000,0.953530710000000,0.953753630000000,0.953975430000000,0.954196120000000,0.954415700000000,0.954634170000000,0.954851540000000,0.955067820000000,0.955283020000000,0.955497130000000,0.955710170000000,0.955922140000000,0.956133040000000,0.956342890000000,0.956551690000000,0.956759440000000,0.956966150000000,0.957171820000000,0.957376460000000,0.957580080000000,0.957782680000000,0.957984260000000,0.958184840000000,0.958384410000000,0.958582980000000,0.958780570000000,0.958977160000000,0.959172770000000,0.959367410000000,0.959561070000000,0.959753770000000,0.959945510000000,0.960136290000000,0.960326120000000,0.960515000000000,0.960702940000000,0.960889940000000,0.961076010000000,0.961261160000000,0.961445380000000,0.961628690000000,0.961811080000000,0.961992570000000,0.962173160000000,0.962352840000000,0.962531640000000,0.962709540000000,0.962886560000000,0.963062710000000,0.963237980000000,0.963412370000000,0.963585910000000,0.963758580000000,0.963930390000000,0.964101360000000,0.964271470000000,0.964440750000000,0.964609180000000,0.964776780000000,0.964943550000000,0.965109500000000,0.965274620000000,0.965438930000000,0.965602430000000,0.965765110000000,0.965926990000000,0.966088080000000,0.966248360000000,0.966407860000000,0.966566560000000,0.966724490000000,0.966881630000000,0.967038000000000,0.967193600000000,0.967348430000000,0.967502490000000,0.967655800000000,0.967808350000000,0.967960150000000,0.968111210000000,0.968261520000000,0.968411090000000,0.968559920000000,0.968708020000000,0.968855390000000,0.969002040000000,0.969147970000000,0.969293180000000,0.969437680000000,0.969581460000000,0.969724540000000,0.969866920000000,0.970008600000000,0.970149590000000,0.970289880000000,0.970429480000000,0.970568400000000,0.970706640000000,0.970844200000000,0.970981090000000,0.971117310000000,0.971252860000000,0.971387750000000,0.971521970000000,0.971655540000000,0.971788460000000,0.971920720000000,0.972052340000000,0.972183320000000,0.972313660000000,0.972443360000000,0.972572420000000,0.972700860000000,0.972828660000000,0.972955850000000,0.973082410000000,0.973208360000000,0.973333690000000,0.973458410000000,0.973582530000000,0.973706030000000,0.973828940000000,0.973951250000000,0.974072960000000,0.974194080000000,0.974314610000000,0.974434550000000,0.974553910000000,0.974672690000000,0.974790890000000,0.974908520000000,0.975025580000000,0.975142060000000,0.975257980000000,0.975373340000000,0.975488140000000,0.975602380000000,0.975716060000000,0.975829200000000,0.975941780000000
-	};
-  double MI_map_16qam_axis[MI_MAP_16QAM_SIZE] = {
-		4.77121250000000,4.84299840000000,4.91361690000000,4.98310550000000,5.05149980000000,5.11883360000000,5.18513940000000,5.25044810000000,5.31478920000000,5.37819100000000,5.44068040000000,5.50228350000000,5.56302500000000,5.62292860000000,5.68201720000000,5.74031270000000,5.79783600000000,5.85460730000000,5.91064610000000,5.96597100000000,6.02059990000000,6.07455020000000,6.12783860000000,6.18048100000000,6.23249290000000,6.28388930000000,6.33468460000000,6.38489260000000,6.43452680000000,6.48360010000000,6.53212510000000,6.58011400000000,6.62757830000000,6.67452950000000,6.72097860000000,6.76693610000000,6.81241240000000,6.85741740000000,6.90196080000000,6.94605200000000,6.98970000000000,7.03291380000000,7.07570180000000,7.11807230000000,7.16003340000000,7.20159300000000,7.24275870000000,7.28353780000000,7.32393760000000,7.36396500000000,7.40362690000000,7.44292980000000,7.48188030000000,7.52048450000000,7.55874860000000,7.59667840000000,7.63427990000000,7.67155870000000,7.70852010000000,7.74516970000000,7.78151250000000,7.81755370000000,7.85329840000000,7.88875120000000,7.92391690000000,7.95880020000000,7.99340550000000,8.02773730000000,8.06179970000000,8.09559710000000,8.12913360000000,8.16241300000000,8.19543940000000,8.22821650000000,8.26074800000000,8.29303770000000,8.32508910000000,8.35690570000000,8.38849090000000,8.41984800000000,8.45098040000000,8.48189120000000,8.51258350000000,8.54306040000000,8.57332500000000,8.60338010000000,8.63322860000000,8.66287340000000,8.69231720000000,8.72156270000000,8.75061260000000,8.77946950000000,8.80813590000000,8.83661440000000,8.86490730000000,8.89301700000000,8.92094600000000,8.94869660000000,8.97627090000000,9.00367130000000,9.03089990000000,9.05795880000000,9.08485020000000,9.11157610000000,9.13813850000000,9.16453950000000,9.19078090000000,9.21686480000000,9.24279290000000,9.26856710000000,9.29418930000000,9.31966110000000,9.34498450000000,9.37016110000000,9.39519250000000,9.42008050000000,9.44482670000000,9.46943270000000,9.49390010000000,9.51823040000000,9.54242510000000,9.56648580000000,9.59041390000000,9.61421090000000,9.63787830000000,9.66141730000000,9.68482950000000,9.70811610000000,9.73127850000000,9.75431810000000,9.77723610000000,9.80003370000000,9.82271230000000,9.84527310000000,9.86771730000000,9.89004620000000,9.91226080000000,9.93436230000000,9.95635190000000,9.97823080000000,10,10.0216610000000,10.0432140000000,10.0646600000000,10.0860020000000,10.1072390000000,10.1283720000000,10.1494030000000,10.1703330000000,10.1911630000000,10.2118930000000,10.2325250000000,10.2530590000000,10.2734960000000,10.2938380000000,10.3140850000000,10.3342380000000,10.3542970000000,10.3742650000000,10.3941410000000,10.4139270000000,10.4336230000000,10.4532300000000,10.4727490000000,10.4921800000000,10.5115250000000,10.5307840000000,10.5499590000000,10.5690490000000,10.5880550000000,10.6069780000000,10.6258200000000,10.6445800000000,10.6632590000000,10.6818590000000,10.7003790000000,10.7188200000000,10.7371840000000,10.7554700000000,10.7736790000000,10.7918120000000,10.8098700000000,10.8278540000000,10.8457630000000,10.8635980000000,10.8813610000000,10.8990510000000,10.9166700000000,10.9342170000000,10.9516940000000,10.9691000000000,10.9864370000000,11.0037050000000,11.0209050000000,11.0380370000000,11.0551020000000,11.0721000000000,11.0890310000000,11.1058970000000,11.1226980000000,11.1394340000000,11.1561050000000,11.1727130000000,11.1892580000000,11.2057390000000,11.2221590000000,11.2385160000000,11.2548130000000,11.2710480000000,11.2872230000000,11.3033380000000,11.3193930000000,11.3353890000000,11.3513270000000,11.3672060000000,11.3830270000000,11.3987910000000,11.4144980000000,11.4301480000000,11.4457420000000,11.4612800000000,11.4767630000000,11.4921910000000,11.5075640000000,11.5228830000000,11.5381490000000,11.5533600000000,11.5685190000000,11.5836250000000,11.5986780000000,11.6136800000000,11.6286300000000,11.6435290000000,11.6583760000000,11.6731730000000,11.6879200000000,11.7026170000000,11.7172650000000,11.7318630000000,11.7464120000000,11.7609130000000,11.7753650000000,11.7897690000000,11.8041260000000,11.8184360000000,11.8326980000000,11.8469140000000,11.8610840000000,11.8752070000000,11.8892850000000,11.9033170000000,11.9173040000000,11.9312460000000,11.9451430000000,11.9589970000000,11.9728060000000,11.9865710000000,12.0002930000000,12.0139710000000,12.0276070000000,12.0412000000000,12.0547500000000,12.0682590000000,12.0817250000000,12.0951500000000,12.1085340000000,12.1218760000000,12.1351780000000,12.1484380000000,12.1616590000000,12.1748390000000,12.1879800000000,12.2010810000000,12.2141420000000,12.2271650000000,12.2401480000000,12.2530930000000,12.2659990000000,12.2788670000000,12.2916970000000,12.3044890000000,12.3172440000000,12.3299610000000,12.3426410000000,12.3552840000000,12.3678910000000,12.3804610000000,12.3929950000000,12.4054920000000,12.4179540000000,12.4303800000000,12.4427710000000,12.4551270000000,12.4674470000000,12.4797330000000,12.4919840000000,12.5042000000000,12.5163820000000,12.5285300000000,12.5406450000000,12.5527250000000,12.5647720000000,12.5767860000000,12.5887660000000,12.6007140000000,12.6126290000000,12.6245110000000,12.6363610000000,12.6481780000000,12.6599640000000,12.6717170000000,12.6834390000000,12.6951290000000,12.7067880000000,12.7184160000000,12.7300130000000,12.7415780000000,12.7531140000000,12.7646180000000,12.7760920000000,12.7875360000000,12.7989500000000,12.8103340000000,12.8216880000000,12.8330120000000,12.8443070000000,12.8555730000000,12.8668100000000,12.8780170000000,12.8891960000000,12.9003460000000,12.9114680000000,12.9225610000000,12.9336260000000,12.9446620000000,12.9556710000000,12.9666520000000,12.9776050000000,12.9885310000000,12.9994290000000,13.0103000000000,13.0211440000000,13.0319610000000,13.0427510000000,13.0535140000000,13.0642500000000,13.0749600000000,13.0856440000000,13.0963020000000,13.1069330000000,13.1175390000000,13.1281180000000,13.1386720000000,13.1492010000000,13.1597030000000,13.1701810000000,13.1806330000000,13.1910610000000,13.2014630000000,13.2118400000000,13.2221930000000,13.2325210000000,13.2428250000000,13.2531040000000,13.2633590000000,13.2735890000000,13.2837960000000,13.2939790000000,13.3041380000000,13.3142730000000,13.3243850000000,13.3344730000000,13.3445380000000,13.3545790000000,13.3645970000000,13.3745930000000,13.3845650000000,13.3945140000000,13.4044410000000,13.4143450000000,13.4242270000000,13.4340860000000,13.4439230000000,13.4537370000000,13.4635300000000,13.4733000000000,13.4830490000000,13.4927750000000,13.5024800000000,13.5121630000000,13.5218250000000,13.5314650000000,13.5410840000000,13.5506820000000,13.5602590000000,13.5698140000000,13.5793480000000,13.5888620000000,13.5983550000000,13.6078270000000,13.6172780000000,13.6267090000000,13.6361200000000,13.6455100000000,13.6548800000000,13.6642300000000,13.6735590000000,13.6828690000000,13.6921590000000,13.7014280000000,13.7106790000000,13.7199090000000,13.7291200000000,13.7383110000000,13.7474830000000,13.7566360000000,13.7657700000000,13.7748840000000,13.7839790000000,13.7930550000000,13.8021120000000,13.8111510000000,13.8201700000000,13.8291710000000,13.8381540000000,13.8471170000000,13.8560630000000,13.8649900000000,13.8738980000000,13.8827890000000,13.8916610000000,13.9005150000000,13.9093510000000,13.9181690000000,13.9269700000000,13.9357520000000,13.9445170000000,13.9532640000000,13.9619930000000,13.9707050000000,13.9794000000000,13.9880770000000,13.9967370000000,14.0053800000000,14.0140050000000,14.0226140000000,14.0312050000000,14.0397800000000,14.0483370000000,14.0568780000000,14.0654020000000,14.0739090000000,14.0824000000000,14.0908740000000,14.0993310000000,14.1077720000000,14.1161970000000,14.1246050000000,14.1329980000000,14.1413740000000,14.1497330000000,14.1580770000000,14.1664050000000,14.1747170000000,14.1830130000000,14.1912930000000,14.1995570000000,14.2078060000000,14.2160390000000,14.2242570000000,14.2324590000000,14.2406450000000,14.2488160000000,14.2569720000000,14.2651130000000,14.2732380000000,14.2813480000000,14.2894430000000,14.2975230000000,14.3055880000000,14.3136380000000,14.3216730000000,14.3296930000000,14.3376980000000,14.3456890000000,14.3536650000000,14.3616260000000,14.3695730000000,14.3775060000000,14.3854230000000,14.3933270000000,14.4012160000000,14.4090910000000,14.4169510000000,14.4247980000000,14.4326300000000,14.4404480000000,14.4482520000000,14.4560420000000,14.4638180000000,14.4715800000000,14.4793290000000,14.4870630000000,14.4947840000000,14.5024910000000,14.5101850000000,14.5178640000000,14.5255310000000,14.5331830000000,14.5408230000000,14.5484490000000,14.5560610000000,14.5636600000000,14.5712460000000,14.5788190000000,14.5863780000000,14.5939250000000,14.6014580000000,14.6089780000000,14.6164860000000,14.6239800000000,14.6314610000000,14.6389300000000,14.6463860000000,14.6538290000000,14.6612590000000,14.6686760000000,14.6760810000000,14.6834730000000,14.6908530000000,14.6982200000000,14.7055750000000,14.7129170000000,14.7202470000000,14.7275640000000,14.7348700000000,14.7421630000000,14.7494430000000,14.7567120000000,14.7639680000000,14.7712130000000,14.7784450000000,14.7856650000000,14.7928730000000,14.8000690000000,14.8072540000000,14.8144260000000,14.8215870000000,14.8287360000000,14.8358730000000,14.8429980000000,14.8501120000000,14.8572140000000,14.8643050000000,14.8713840000000,14.8784510000000,14.8855070000000,14.8925520000000,14.8995850000000,14.9066070000000,14.9136170000000,14.9206160000000,14.9276040000000,14.9345810000000,14.9415460000000,14.9485000000000,14.9554430000000,14.9623750000000,14.9692960000000,14.9762060000000,14.9831060000000,14.9899940000000,14.9968710000000,15.0037370000000,15.0105930000000,15.0174370000000,15.0242710000000,15.0310940000000,15.0379070000000,15.0447090000000,15.0515000000000,15.0582800000000,15.0650500000000,15.0718100000000,15.0785590000000,15.0852970000000,15.0920250000000,15.0987430000000,15.1054500000000,15.1121470000000,15.1188340000000,15.1255100000000,15.1321760000000,15.1388320000000,15.1454780000000,15.1521130000000,15.1587380000000,15.1653540000000,15.1719590000000,15.1785540000000,15.1851390000000
-	};
-	
-	
-  double MI_map_64qam[MI_MAP_64QAM_SIZE] = {
-		0.594727140000000,0.597397600000000,0.600038840000000,0.602651650000000,0.605236780000000,0.607794940000000,0.610326790000000,0.612832980000000,0.615314110000000,0.617770790000000,0.620203550000000,0.622612930000000,0.624999450000000,0.627363570000000,0.629705780000000,0.632026500000000,0.634326170000000,0.636605200000000,0.638863960000000,0.641102840000000,0.643322200000000,0.645522370000000,0.647703700000000,0.649866490000000,0.652011060000000,0.653921260000000,0.656028510000000,0.658118030000000,0.660190110000000,0.662245020000000,0.664283030000000,0.666304390000000,0.668309340000000,0.670298130000000,0.672270970000000,0.674228110000000,0.676169740000000,0.678096090000000,0.680007360000000,0.681903740000000,0.683785420000000,0.685652600000000,0.687505460000000,0.689344180000000,0.691168920000000,0.692979860000000,0.694777160000000,0.696560970000000,0.698331470000000,0.700088790000000,0.701833100000000,0.703564520000000,0.705283220000000,0.706989320000000,0.708682960000000,0.710364280000000,0.712033410000000,0.713690470000000,0.715335590000000,0.716968900000000,0.718590510000000,0.720200540000000,0.721799110000000,0.723386330000000,0.724962320000000,0.726527190000000,0.728081030000000,0.729623970000000,0.731156100000000,0.732677520000000,0.734188340000000,0.735688660000000,0.737178580000000,0.738658180000000,0.740127580000000,0.741586850000000,0.743036090000000,0.744475400000000,0.745904850000000,0.747324550000000,0.748734580000000,0.750135010000000,0.751525950000000,0.752907460000000,0.754279630000000,0.755642550000000,0.756996300000000,0.758340940000000,0.759676570000000,0.761003250000000,0.762321070000000,0.763630100000000,0.764930410000000,0.766222070000000,0.767505170000000,0.768779760000000,0.770045930000000,0.771303740000000,0.772553250000000,0.773794550000000,0.775027690000000,0.776252740000000,0.777469770000000,0.778678850000000,0.779880030000000,0.781073380000000,0.782258970000000,0.783436860000000,0.784607110000000,0.785769770000000,0.786924920000000,0.788072610000000,0.789212890000000,0.790345840000000,0.791471500000000,0.792589930000000,0.793701200000000,0.794805350000000,0.795902440000000,0.796992530000000,0.798075670000000,0.799151910000000,0.800221320000000,0.801283940000000,0.802339820000000,0.803389010000000,0.804431580000000,0.805467560000000,0.806497010000000,0.807519980000000,0.808536520000000,0.809546670000000,0.810550490000000,0.811548020000000,0.812539320000000,0.813524420000000,0.814503370000000,0.815476230000000,0.816443030000000,0.817403820000000,0.818358650000000,0.819307570000000,0.820250600000000,0.821187810000000,0.822119230000000,0.823044900000000,0.823964880000000,0.824879190000000,0.825787880000000,0.826691000000000,0.827588580000000,0.828480670000000,0.829367300000000,0.830248520000000,0.831124360000000,0.831994870000000,0.832860070000000,0.833720020000000,0.834574750000000,0.835424300000000,0.836268700000000,0.837107990000000,0.837942220000000,0.838771400000000,0.839595590000000,0.840414820000000,0.841229120000000,0.842038530000000,0.842843080000000,0.843642820000000,0.844437760000000,0.845227950000000,0.846013420000000,0.846794210000000,0.847570340000000,0.848341850000000,0.849108780000000,0.849871150000000,0.850629000000000,0.851382360000000,0.852131270000000,0.852875740000000,0.853615820000000,0.854351530000000,0.855082900000000,0.855809980000000,0.856532770000000,0.857251320000000,0.857965660000000,0.858675810000000,0.859381810000000,0.860083670000000,0.860781440000000,0.861475130000000,0.862164790000000,0.862850420000000,0.863532070000000,0.864209760000000,0.864883520000000,0.865553370000000,0.866219340000000,0.866881460000000,0.867539760000000,0.868194250000000,0.868844970000000,0.869491940000000,0.870135190000000,0.870774740000000,0.871410620000000,0.872042850000000,0.872671460000000,0.873296470000000,0.873917910000000,0.874535800000000,0.875150160000000,0.875761010000000,0.876368400000000,0.876972320000000,0.877572810000000,0.878169900000000,0.878763590000000,0.879353930000000,0.879940920000000,0.880524600000000,0.881104970000000,0.881682080000000,0.882255930000000,0.882826540000000,0.883393950000000,0.883958170000000,0.884519220000000,0.885077130000000,0.885631910000000,0.886183580000000,0.886732170000000,0.887277690000000,0.887820170000000,0.888359630000000,0.888896080000000,0.889429540000000,0.889960040000000,0.890487590000000,0.891012220000000,0.891533940000000,0.892052770000000,0.892568730000000,0.893081840000000,0.893592110000000,0.894099570000000,0.894604240000000,0.895106120000000,0.895605250000000,0.896101630000000,0.896595290000000,0.897086240000000,0.897574500000000,0.898060090000000,0.898543020000000,0.899023320000000,0.899500990000000,0.899976060000000,0.900448540000000,0.900918450000000,0.901385800000000,0.901850610000000,0.902312910000000,0.902772690000000,0.903229990000000,0.903684800000000,0.904137160000000,0.904587080000000,0.905034570000000,0.905479640000000,0.905922320000000,0.906362610000000,0.906800540000000,0.907236110000000,0.907669350000000,0.908100260000000,0.908528860000000,0.908955170000000,0.909379200000000,0.909800960000000,0.910220480000000,0.910637750000000,0.911052800000000,0.911465640000000,0.911876290000000,0.912284750000000,0.912691050000000,0.913095180000000,0.913497180000000,0.913897050000000,0.914294800000000,0.914690450000000,0.915084010000000,0.915475490000000,0.915864910000000,0.916252280000000,0.916637610000000,0.917020910000000,0.917402200000000,0.917781490000000,0.918158790000000,0.918534110000000,0.918907470000000,0.919278870000000,0.919648330000000,0.920015870000000,0.920381480000000,0.920745190000000,0.921107010000000,0.921466940000000,0.921825000000000,0.922181210000000,0.922535560000000,0.922888070000000,0.923238760000000,0.923587630000000,0.923934700000000,0.924279980000000,0.924623470000000,0.924965190000000,0.925305140000000,0.925643350000000,0.925979810000000,0.926314550000000,0.926647560000000,0.926978870000000,0.927308470000000,0.927636390000000,0.927962630000000,0.928287190000000,0.928610100000000,0.928931360000000,0.929250980000000,0.929568970000000,0.929885330000000,0.930200090000000,0.930513250000000,0.930824810000000,0.931134790000000,0.931443200000000,0.931750040000000,0.932055330000000,0.932359080000000,0.932661280000000,0.932961960000000,0.933261120000000,0.933558770000000,0.933854920000000,0.934149580000000,0.934442750000000,0.934734450000000,0.935024690000000,0.935313460000000,0.935600790000000,0.935886670000000,0.936171120000000,0.936454150000000,0.936735770000000,0.937015970000000,0.937294770000000,0.937572190000000,0.937848220000000,0.938122870000000,0.938396160000000,0.938668080000000,0.938938660000000,0.939207890000000,0.939475780000000,0.939742350000000,0.940007590000000,0.940271520000000,0.940534140000000,0.940795470000000,0.941055500000000,0.941314250000000,0.941571720000000,0.941827930000000,0.942082870000000,0.942336550000000,0.942588990000000,0.942840190000000,0.943090150000000,0.943338890000000,0.943586410000000,0.943832710000000,0.944077810000000,0.944321710000000,0.944564410000000,0.944805930000000,0.945046270000000,0.945285440000000,0.945523440000000,0.945760280000000,0.945995970000000,0.946230510000000,0.946463920000000,0.946696180000000,0.946927330000000,0.947157340000000,0.947386250000000,0.947614050000000,0.947840740000000,0.948066340000000,0.948290840000000,0.948514270000000,0.948736610000000,0.948957880000000,0.949178090000000,0.949397230000000,0.949615320000000,0.949832360000000,0.950048360000000,0.950263320000000,0.950477250000000,0.950690150000000,0.950902040000000,0.951112910000000,0.951322770000000,0.951531620000000,0.951739480000000,0.951946340000000,0.952152220000000,0.952357120000000,0.952561040000000,0.952763980000000,0.952965970000000,0.953166990000000,0.953367060000000,0.953566170000000,0.953764340000000,0.953961570000000,0.954157870000000,0.954353240000000,0.954547680000000,0.954741200000000,0.954933810000000,0.955125510000000,0.955316300000000,0.955506190000000,0.955695190000000,0.955883300000000,0.956070520000000,0.956256860000000,0.956442320000000,0.956626920000000,0.956810640000000,0.956993510000000,0.957175510000000,0.957356670000000,0.957536970000000,0.957716430000000,0.957895060000000,0.958072840000000,0.958249800000000,0.958425930000000,0.958601240000000,0.958775730000000,0.958949410000000,0.959122280000000,0.959294350000000,0.959465610000000,0.959636080000000,0.959805760000000,0.959974650000000,0.960142760000000,0.960310090000000,0.960476640000000,0.960642420000000,0.960807440000000,0.960971690000000,0.961135180000000,0.961297920000000,0.961459910000000,0.961621150000000,0.961781640000000,0.961941400000000,0.962100420000000,0.962258710000000,0.962416280000000,0.962573110000000,0.962729230000000,0.962884630000000,0.963039320000000,0.963193300000000,0.963346580000000,0.963499150000000,0.963651030000000,0.963802210000000,0.963952700000000,0.964102500000000,0.964251620000000,0.964400050000000,0.964547820000000,0.964694900000000,0.964841320000000,0.964987080000000,0.965132160000000,0.965276590000000,0.965420370000000,0.965563490000000,0.965705960000000,0.965847790000000,0.965988970000000,0.966129510000000,0.966269420000000,0.966408690000000,0.966547340000000,0.966685350000000,0.966822750000000,0.966959520000000,0.967095680000000,0.967231220000000,0.967366160000000,0.967500480000000,0.967634200000000,0.967767320000000,0.967899840000000,0.968031770000000,0.968163100000000,0.968293840000000,0.968424000000000,0.968553570000000,0.968682560000000,0.968810980000000,0.968938820000000,0.969066090000000,0.969192790000000,0.969318920000000,0.969444490000000,0.969569500000000,0.969693950000000,0.969817850000000,0.969941190000000,0.970063990000000,0.970186240000000,0.970307950000000,0.970429110000000,0.970549740000000,0.970669830000000,0.970789380000000,0.970908410000000,0.971026910000000,0.971144880000000,0.971262330000000,0.971379260000000,0.971495680000000,0.971611580000000,0.971726960000000,0.971841840000000,0.971956210000000,0.972070080000000,0.972183440000000,0.972296300000000,0.972408670000000,0.972520540000000,0.972631920000000,0.972742810000000,0.972853210000000,0.972963120000000,0.973072560000000,0.973181510000000,0.973289980000000,0.973397980000000,0.973505510000000,0.973612560000000,0.973719150000000,0.973825270000000,0.973930920000000,0.974036110000000,0.974140850000000,0.974245120000000,0.974348940000000,0.974452310000000,0.974555230000000,0.974657690000000,0.974759720000000,0.974861290000000,0.974962430000000,0.975063120000000,0.975163380000000,0.975263200000000,0.975362590000000,0.975461550000000,0.975560070000000,0.975658170000000,0.975755850000000,0.975853100000000,0.975949930000000,0.976046340000000,0.976142330000000,0.976237910000000,0.976333080000000,0.976427830000000,0.976522170000000,0.976616110000000,0.976709640000000,0.976802770000000,0.976895500000000,0.976987830000000,0.977079760000000,0.977171290000000,0.977262430000000,0.977353180000000,0.977443540000000,0.977533510000000,0.977623090000000,0.977712290000000,0.977801110000000,0.977889540000000,0.977977600000000,0.978065280000000,0.978152580000000,0.978239510000000,0.978326070000000,0.978412260000000,0.978498080000000,0.978583530000000,0.978668620000000,0.978753340000000,0.978837700000000,0.978921700000000,0.979005350000000,0.979088640000000,0.979171570000000,0.979254150000000,0.979336380000000,0.979418260000000,0.979499790000000,0.979580970000000,0.979661810000000,0.979742310000000,0.979822460000000,0.979902280000000,0.979981750000000,0.980060890000000,0.980139700000000,0.980218170000000,0.980296300000000,0.980374110000000,0.980451590000000,0.980528740000000,0.980605560000000,0.980682060000000,0.980758240000000,0.980834090000000,0.980909630000000,0.980984850000000,0.981059750000000,0.981134330000000,0.981208600000000,0.981282560000000,0.981356200000000,0.981429540000000,0.981502560000000,0.981575280000000,0.981647700000000,0.981719810000000,0.981791620000000,0.981863120000000,0.981934330000000,0.982005240000000,0.982075850000000,0.982146160000000,0.982216180000000,0.982285910000000,0.982355350000000,0.982424490000000,0.982493350000000,0.982561920000000,0.982630200000000,0.982698190000000,0.982765910000000,0.982833340000000
-	};
-  double MI_map_64qam_axis[MI_MAP_64QAM_SIZE] = {
-		11.7609130000000,11.8184360000000,11.8752070000000,11.9312460000000,11.9865710000000,12.0412000000000,12.0951500000000,12.1484380000000,12.2010810000000,12.2530930000000,12.3044890000000,12.3552840000000,12.4054920000000,12.4551270000000,12.5042000000000,12.5527250000000,12.6007140000000,12.6481780000000,12.6951290000000,12.7415780000000,12.7875360000000,12.8330120000000,12.8780170000000,12.9225610000000,12.9666520000000,13.0103000000000,13.0535140000000,13.0963020000000,13.1386720000000,13.1806330000000,13.2221930000000,13.2633590000000,13.3041380000000,13.3445380000000,13.3845650000000,13.4242270000000,13.4635300000000,13.5024800000000,13.5410840000000,13.5793480000000,13.6172780000000,13.6548800000000,13.6921590000000,13.7291200000000,13.7657700000000,13.8021120000000,13.8381540000000,13.8738980000000,13.9093510000000,13.9445170000000,13.9794000000000,14.0140050000000,14.0483370000000,14.0824000000000,14.1161970000000,14.1497330000000,14.1830130000000,14.2160390000000,14.2488160000000,14.2813480000000,14.3136380000000,14.3456890000000,14.3775060000000,14.4090910000000,14.4404480000000,14.4715800000000,14.5024910000000,14.5331830000000,14.5636600000000,14.5939250000000,14.6239800000000,14.6538290000000,14.6834730000000,14.7129170000000,14.7421630000000,14.7712130000000,14.8000690000000,14.8287360000000,14.8572140000000,14.8855070000000,14.9136170000000,14.9415460000000,14.9692960000000,14.9968710000000,15.0242710000000,15.0515000000000,15.0785590000000,15.1054500000000,15.1321760000000,15.1587380000000,15.1851390000000,15.2113810000000,15.2374650000000,15.2633930000000,15.2891670000000,15.3147890000000,15.3402610000000,15.3655840000000,15.3907610000000,15.4157920000000,15.4406800000000,15.4654270000000,15.4900330000000,15.5145000000000,15.5388300000000,15.5630250000000,15.5870860000000,15.6110140000000,15.6348110000000,15.6584780000000,15.6820170000000,15.7054290000000,15.7287160000000,15.7518780000000,15.7749180000000,15.7978360000000,15.8206340000000,15.8433120000000,15.8658730000000,15.8883170000000,15.9106460000000,15.9328610000000,15.9549620000000,15.9769520000000,15.9988310000000,16.0206000000000,16.0422610000000,16.0638140000000,16.0852600000000,16.1066020000000,16.1278390000000,16.1489720000000,16.1700030000000,16.1909330000000,16.2117630000000,16.2324930000000,16.2531250000000,16.2736590000000,16.2940960000000,16.3144380000000,16.3346850000000,16.3548370000000,16.3748970000000,16.3948650000000,16.4147410000000,16.4345270000000,16.4542230000000,16.4738300000000,16.4933490000000,16.5127800000000,16.5321250000000,16.5513840000000,16.5705590000000,16.5896480000000,16.6086550000000,16.6275780000000,16.6464200000000,16.6651800000000,16.6838590000000,16.7024590000000,16.7209790000000,16.7394200000000,16.7577830000000,16.7760700000000,16.7942790000000,16.8124120000000,16.8304700000000,16.8484540000000,16.8663630000000,16.8841980000000,16.9019610000000,16.9196510000000,16.9372690000000,16.9548170000000,16.9722930000000,16.9897000000000,17.0070370000000,17.0243050000000,17.0415050000000,17.0586370000000,17.0757020000000,17.0927000000000,17.1096310000000,17.1264970000000,17.1432980000000,17.1600330000000,17.1767050000000,17.1933130000000,17.2098570000000,17.2263390000000,17.2427590000000,17.2591160000000,17.2754130000000,17.2916480000000,17.3078230000000,17.3239380000000,17.3399930000000,17.3559890000000,17.3719260000000,17.3878060000000,17.4036270000000,17.4193910000000,17.4350980000000,17.4507480000000,17.4663420000000,17.4818800000000,17.4973630000000,17.5127910000000,17.5281640000000,17.5434830000000,17.5587490000000,17.5739600000000,17.5891190000000,17.6042250000000,17.6192780000000,17.6342800000000,17.6492300000000,17.6641280000000,17.6789760000000,17.6937730000000,17.7085200000000,17.7232170000000,17.7378640000000,17.7524630000000,17.7670120000000,17.7815130000000,17.7959650000000,17.8103690000000,17.8247260000000,17.8390360000000,17.8532980000000,17.8675140000000,17.8816840000000,17.8958070000000,17.9098850000000,17.9239170000000,17.9379040000000,17.9518460000000,17.9657430000000,17.9795960000000,17.9934050000000,18.0071710000000,18.0208930000000,18.0345710000000,18.0482070000000,18.0618000000000,18.0753500000000,18.0888590000000,18.1023250000000,18.1157500000000,18.1291340000000,18.1424760000000,18.1557770000000,18.1690380000000,18.1822590000000,18.1954390000000,18.2085800000000,18.2216810000000,18.2347420000000,18.2477650000000,18.2607480000000,18.2736930000000,18.2865990000000,18.2994670000000,18.3122970000000,18.3250890000000,18.3378440000000,18.3505610000000,18.3632410000000,18.3758840000000,18.3884910000000,18.4010610000000,18.4135950000000,18.4260920000000,18.4385540000000,18.4509800000000,18.4633710000000,18.4757270000000,18.4880470000000,18.5003330000000,18.5125830000000,18.5248000000000,18.5369820000000,18.5491300000000,18.5612440000000,18.5733250000000,18.5853720000000,18.5973860000000,18.6093660000000,18.6213140000000,18.6332290000000,18.6451110000000,18.6569610000000,18.6687780000000,18.6805640000000,18.6923170000000,18.7040390000000,18.7157290000000,18.7273880000000,18.7390160000000,18.7506130000000,18.7621780000000,18.7737130000000,18.7852180000000,18.7966920000000,18.8081360000000,18.8195500000000,18.8309340000000,18.8422880000000,18.8536120000000,18.8649070000000,18.8761730000000,18.8874100000000,18.8986170000000,18.9097960000000,18.9209460000000,18.9320680000000,18.9431610000000,18.9542250000000,18.9652620000000,18.9762710000000,18.9872520000000,18.9982050000000,19.0091310000000,19.0200290000000,19.0309000000000,19.0417440000000,19.0525600000000,19.0633500000000,19.0741140000000,19.0848500000000,19.0955600000000,19.1062440000000,19.1169020000000,19.1275330000000,19.1381390000000,19.1487180000000,19.1592720000000,19.1698000000000,19.1803030000000,19.1907810000000,19.2012330000000,19.2116610000000,19.2220630000000,19.2324400000000,19.2427930000000,19.2531210000000,19.2634240000000,19.2737040000000,19.2839590000000,19.2941890000000,19.3043960000000,19.3145790000000,19.3247380000000,19.3348730000000,19.3449850000000,19.3550730000000,19.3651370000000,19.3751790000000,19.3851970000000,19.3951930000000,19.4051650000000,19.4151140000000,19.4250410000000,19.4349450000000,19.4448270000000,19.4546860000000,19.4645230000000,19.4743370000000,19.4841300000000,19.4939000000000,19.5036490000000,19.5133750000000,19.5230800000000,19.5327630000000,19.5424250000000,19.5520650000000,19.5616840000000,19.5712820000000,19.5808580000000,19.5904140000000,19.5999480000000,19.6094620000000,19.6189550000000,19.6284270000000,19.6378780000000,19.6473090000000,19.6567200000000,19.6661100000000,19.6754800000000,19.6848290000000,19.6941590000000,19.7034690000000,19.7127580000000,19.7220280000000,19.7312790000000,19.7405090000000,19.7497200000000,19.7589110000000,19.7680830000000,19.7772360000000,19.7863690000000,19.7954840000000,19.8045790000000,19.8136550000000,19.8227120000000,19.8317510000000,19.8407700000000,19.8497710000000,19.8587540000000,19.8677170000000,19.8766630000000,19.8855900000000,19.8944980000000,19.9033890000000,19.9122610000000,19.9211150000000,19.9299510000000,19.9387690000000,19.9475690000000,19.9563520000000,19.9651170000000,19.9738640000000,19.9825930000000,19.9913050000000,20,20.0086770000000,20.0173370000000,20.0259800000000,20.0346050000000,20.0432140000000,20.0518050000000,20.0603800000000,20.0689370000000,20.0774780000000,20.0860020000000,20.0945090000000,20.1030000000000,20.1114740000000,20.1199310000000,20.1283720000000,20.1367970000000,20.1452050000000,20.1535980000000,20.1619740000000,20.1703330000000,20.1786770000000,20.1870050000000,20.1953170000000,20.2036130000000,20.2118930000000,20.2201570000000,20.2284060000000,20.2366390000000,20.2448570000000,20.2530590000000,20.2612450000000,20.2694160000000,20.2775720000000,20.2857130000000,20.2938380000000,20.3019480000000,20.3100430000000,20.3181230000000,20.3261880000000,20.3342380000000,20.3422730000000,20.3502930000000,20.3582980000000,20.3662890000000,20.3742650000000,20.3822260000000,20.3901730000000,20.3981060000000,20.4060230000000,20.4139270000000,20.4218160000000,20.4296910000000,20.4375510000000,20.4453980000000,20.4532300000000,20.4610480000000,20.4688520000000,20.4766420000000,20.4844180000000,20.4921800000000,20.4999290000000,20.5076630000000,20.5153840000000,20.5230910000000,20.5307840000000,20.5384640000000,20.5461310000000,20.5537830000000,20.5614230000000,20.5690490000000,20.5766610000000,20.5842600000000,20.5918460000000,20.5994190000000,20.6069780000000,20.6145250000000,20.6220580000000,20.6295780000000,20.6370860000000,20.6445800000000,20.6520610000000,20.6595300000000,20.6669860000000,20.6744280000000,20.6818590000000,20.6892760000000,20.6966810000000,20.7040730000000,20.7114530000000,20.7188200000000,20.7261750000000,20.7335170000000,20.7408470000000,20.7481640000000,20.7554700000000,20.7627630000000,20.7700430000000,20.7773120000000,20.7845680000000,20.7918120000000,20.7990450000000,20.8062650000000,20.8134730000000,20.8206690000000,20.8278540000000,20.8350260000000,20.8421870000000,20.8493360000000,20.8564730000000,20.8635980000000,20.8707120000000,20.8778140000000,20.8849050000000,20.8919840000000,20.8990510000000,20.9061070000000,20.9131520000000,20.9201850000000,20.9272060000000,20.9342170000000,20.9412160000000,20.9482040000000,20.9551800000000,20.9621460000000,20.9691000000000,20.9760430000000,20.9829750000000,20.9898960000000,20.9968060000000,21.0037050000000,21.0105940000000,21.0174710000000,21.0243370000000,21.0311930000000,21.0380370000000,21.0448710000000,21.0516940000000,21.0585070000000,21.0653090000000,21.0721000000000,21.0788800000000,21.0856500000000,21.0924100000000,21.0991590000000,21.1058970000000,21.1126250000000,21.1193430000000,21.1260500000000,21.1327470000000,21.1394340000000,21.1461100000000,21.1527760000000,21.1594320000000,21.1660770000000,21.1727130000000,21.1793380000000,21.1859540000000,21.1925590000000,21.1991540000000,21.2057390000000,21.2123150000000,21.2188800000000,21.2254350000000,21.2319810000000,21.2385160000000,21.2450420000000,21.2515580000000,21.2580650000000,21.2645610000000,21.2710480000000,21.2775250000000,21.2839930000000,21.2904510000000,21.2968990000000,21.3033380000000,21.3097670000000,21.3161870000000,21.3225970000000,21.3289980000000,21.3353890000000,21.3417710000000,21.3481440000000,21.3545070000000,21.3608610000000,21.3672060000000,21.3735410000000,21.3798670000000,21.3861840000000,21.3924920000000,21.3987910000000,21.4050800000000,21.4113610000000,21.4176320000000,21.4238950000000,21.4301480000000,21.4363920000000,21.4426280000000,21.4488540000000,21.4550720000000,21.4612800000000,21.4674800000000,21.4736710000000,21.4798530000000,21.4860270000000,21.4921910000000,21.4983470000000,21.5044940000000,21.5106330000000,21.5167620000000,21.5228830000000,21.5289960000000,21.5351000000000,21.5411950000000,21.5472820000000,21.5533600000000,21.5594300000000,21.5654920000000,21.5715440000000,21.5775890000000,21.5836250000000,21.5896530000000,21.5956720000000,21.6016830000000,21.6076860000000,21.6136800000000,21.6196660000000,21.6256440000000,21.6316140000000,21.6375750000000,21.6435290000000,21.6494740000000,21.6554110000000,21.6613400000000,21.6672610000000,21.6731730000000,21.6790780000000,21.6849750000000,21.6908640000000,21.6967440000000,21.7026170000000,21.7084820000000,21.7143390000000,21.7201880000000,21.7260290000000,21.7318630000000,21.7376880000000,21.7435060000000,21.7493160000000,21.7551180000000,21.7609130000000
-  };
+  ;
   
 uint16_t cbMiSizeTable [9] = {40, 104, 160, 256, 512, 1024, 2560, 4032, 6144};
 
-  
-double bEcrTable [9][27] = {
-  
+
+double MI_map_qpsk[MI_MAP_QPSK_SIZE] = {
+  0.0690003489341297,0.0716227274726117,0.0742340978953440,0.0768346104980025,0.0794244103447761,0.0820036374801004,0.0845724271431926,0.0871309099810427,0.0896792122569310,0.0922174560525495,0.0947457594625196,0.0972642367806063,0.0997729986772915,0.102272152368619,0.104761801776403,0.107242047680000,0.109712987859947,0.112174717233782,0.114627327984429,0.117070909681513,0.119505549395992,0.121931331808479,0.124348339311615,0.126756652106854,0.129156348295983,0.131547503967713,0.133930193279620,0.136304488535748,0.138670460260116,0.141028177266400,0.143377706724007,0.145719114220782,0.148052463822533,0.150377818129578,0.152695238330494,0.155004784253224,0.157306514413717,0.159600486062226,0.161886755227418,0.164165376758411,0.166436404364862,0.168699890655220,0.170955887173241,0.173204444432860,0.175445611951529,0.177679438282080,0.179905971043210,0.182125256948655,0.184337341835134,0.186542270689104,0.188740087672416,0.190930836146914,0.193114558698026,0.195291297157414,0.197461092624719,0.199623985488445,0.201780015446038,0.203929221523178,0.206071642092341,0.208207314890659,0.210336277037108,0.212458565049058,0.214574214858220,0.216683261826010,0.218785740758360,0.220881685920000,0.222971131048238,0.225054109366258,0.227130653595954,0.229200795970327,0.231264568245459,0.233322001712082,0.235373127206765,0.237417975122726,0.239456575420291,0.241488957637017,0.243515150897483,0.245535183922773,0.247549085039656,0.249556882189479,0.251558602936785,0.253554274477663,0.255543923647842,0.257527576930545,0.259505260464099,0.261477000049324,0.263442821156701,0.265402748933330,0.267356808209687,0.269305023506185,0.271247419039542,0.273184018728981,0.275114846202242,0.277039924801432,0.278959277588713,0.280872927351831,0.282780896609496,0.284683207616614,0.286579882369384,0.288470942610247,0.290356409832718,0.292236305286078,0.294110649979955,0.295979464688778,0.297842769956116,0.299700586098916,0.301552933211619,0.303399831170183,0.305241299636004,0.307077358059734,0.308908025685008,0.310733321552085,0.312553264501390,0.314367873176978,0.316177166029912,0.317981161321561,0.319779877126821,0.321573331337258,0.323361541664177,0.325144525641625,0.326922300629316,0.328694883815500,0.330462292219754,0.332224542695721,0.333981651933781,0.335733636463664,0.337480512657007,0.339222296729849,0.340959004745076,0.342690652614815,0.344417256102769,0.346138830826504,0.347855392259695,0.349566955734310,0.351273536442761,0.352975149440000,0.354671809645581,0.356363531845667,0.358050330695007,0.359732220718866,0.361409216314917,0.363081331755096,0.364748581187413,0.365760085328701,0.367414435567153,0.369063590345858,0.370707574758377,0.372346413657952,0.373980131661624,0.375608753154257,0.377232302292463,0.378850803008427,0.380464279013651,0.382072753802601,0.383676250656272,0.385274792645668,0.386868402635202,0.388457103286017,0.390040917059232,0.391619866219112,0.393193972836167,0.394763258790181,0.396327745773173,0.397887455292293,0.399442408672650,0.400992627060087,0.402538131423884,0.404078942559405,0.405615081090699,0.407146567473028,0.408673421995349,0.410195664782751,0.411713315798825,0.413226394847994,0.414734921577795,0.416238915481109,0.417738395898345,0.419233382019585,0.420723892886679,0.422209947395301,0.423691564296960,0.425168762200976,0.426641559576410,0.428109974753962,0.429574025927829,0.431033731157521,0.432489108369656,0.433940175359702,0.435386949793697,0.436829449209937,0.438267691020623,0.439701692513483,0.441131470853366,0.442557043083795,0.443978426128502,0.445395636792933,0.446808691765718,0.448217607620120,0.449622400815456,0.451023087698496,0.452419684504825,0.453812207360195,0.455200672281845,0.456585095179796,0.457965491858126,0.459341878016225,0.460714269250023,0.462082681053196,0.463447128818359,0.464807627838230,0.466164193306775,0.467516840320339,0.468865583878754,0.470210438886424,0.471551420153401,0.472888542396436,0.474221820240013,0.475551268217370,0.476876900771498,0.478198732256128,0.479516776936698,0.480831048991307,0.482141562511653,0.483448331503954,0.484751369889858,0.486050691507333,0.487346310111549,0.488638239375742,0.489926492892065,0.491211084172426,0.492492026649314,0.493769333676610,0.495043018530388,0.496313094409703,0.497579574437364,0.498842471660700,0.500101799052307,0.501357569510799,0.502609795861526,0.503858490857300,0.505103667179099,0.506345337436768,0.507583514169703,0.508818209847531,0.510049436870774,0.511277207571509,0.512501534214016,0.513722428995414,0.514939904046294,0.516153971431339,0.517364643149933,0.518571931136767,0.519775847262431,0.520976403334003,0.522173611095627,0.523367482229080,0.524558028354337,0.525745261030125,0.526929191754467,0.528109831965227,0.529287193040638,0.530461286299827,0.531632123003332,0.532799714353619,0.533964071495577,0.535125205517021,0.536283127449183,0.537437848267194,0.538589378890561,0.539737730183644,0.540882912956114,0.542024937963420,0.543163815907238,0.544299557435920,0.545432173144935,0.546561673577308,0.547688069224050,0.548811370524581,0.549931587867153,0.551048731589264,0.552162811978068,0.553273839270780,0.554381823655071,0.555486775269472,0.556588704203755,0.557687620499322,0.558783534149586,0.559876455100345,0.560966393250155,0.562053358450695,0.563137360507132,0.564218409178475,0.565296514177934,0.566371685173266,0.567443931787123,0.568513263597390,0.569579690137527,0.570643220896900,0.571703865321112,0.572761632812328,0.573816532729596,0.574868574389170,0.575917767064821,0.576964119988149,0.578007642348892,0.579048343295230,0.580086231934086,0.581121317331422,0.582153608512535,0.583183114462351,0.584209844125704,0.585233806407631,0.586255010173647,0.587273464250025,0.588289177424073,0.589302158444405,0.590312416021210,0.591319958826520,0.592324795494474,0.593326934621578,0.594326384766964,0.595323154452643,0.596317252163764,0.597308686348855,0.598297465420080,0.599283597753478,0.600267091689206,0.601247955531782,0.602226197550319,0.603201825978762,0.604174849016119,0.605145274826694,0.606113111540312,0.607078367252547,0.608041050024944,0.609001167885238,0.609958728827579,0.610913740812743,0.611866211768347,0.612816149589066,0.613763562136839,0.614708457241078,0.615650842698875,0.616590726275206,0.617528115703136,0.618463018684014,0.619395442887674,0.620325395952633,0.621252885486284,0.622177919065087,0.623100504234766,0.624020648510489,0.624938359377065,0.625853644289121,0.626766510671293,0.627676965918402,0.628585017395639,0.629490672438743,0.630393938354174,0.631294822419294,0.632193331882539,0.633089473963589,0.633983255853542,0.634874684715080,0.635763767682640,0.636650511862579,0.637534924333335,0.638417012145596,0.639296782322459,0.640174241859589,0.641049397725379,0.641922256861109,0.642792826181100,0.643661112572869,0.644527122897282,0.645390863988709,0.646252342655170,0.647111565678489,0.647968539814439,0.648823271792888,0.649675768317950,0.650526036068123,0.651374081696436,0.652219911830588,0.653063533073093,0.653904952001416,0.654744175168111,0.655581209100961,0.656416060303112,0.657248735253208,0.658079240405527,0.658907582190110,0.659733767012895,0.660557801255848,0.661379691277091,0.662199443411030,0.663017063968485,0.663832559236813,0.664645935480037,0.665457198938967,0.666266355831323,0.667073412351863,0.667878374672495,0.668681248942408,0.669482041288181,0.670280757813911,0.671077404601323,0.671871987709891,0.672664513176952,0.673454987017822,0.674243415225909,0.675029803772825,0.675814158608500,0.676596485661295,0.677376790838106,0.678155080024481,0.678931359084725,0.679705633862007,0.680477910178470,0.681248193835337,0.682016490613012,0.682782806271192,0.683547146548964,0.684309517164914,0.685069923817224,0.685828372183780,0.686584867922264,0.687339416670264,0.688092024045367,0.688842695645258,0.689591437047823,0.690338253811239,0.691083151474075,0.691826135555389,0.692567211554818,0.693306384952679,0.694043661210056,0.694779045768899,0.695512544052111,0.696244161463647,0.696973903388596,0.697701775193280,0.698427782225337,0.699151929813817,0.699874223269263,0.700594667883805,0.701313268931245,0.702030031667144,0.702744961328908,0.703458063135872,0.704169342289390,0.704878803972913,0.705586453352076,0.706292295574782,0.706996335771284,0.707698579054265,0.708399030518923,0.709097695243048,0.709794578287106,0.710489684694317,0.711183019490737,0.711874587685330,0.712564394270055,0.713252444219938,0.713938742493152,0.714623294031091,0.715306103758449,0.715987176583295,0.716666517397146,0.717344131075047,0.718020022475638,0.718694196441235,0.719366657797898,0.720037411355506,0.720706461907829,0.721373814232600,0.722039473091587,0.722703443230664,0.723365729379878,0.724026336253524,0.724685268550213,0.725342530952939,0.725998128129151,0.726652064730817,0.727304345394498,0.727954974741409,0.728603957377491,0.729251297893474,0.729897000864946,0.730541070852416,0.731183512401383,0.731824330042397,0.732463528291126,0.733101111648419,0.733737084600371,0.734371451618386,0.735004217159237,0.735635385665134,0.736264961563782,0.736892949268446,0.737519353178008,0.738144177677033,0.738767427135826,0.739389105910496,0.740009218343011,0.740627768761262,0.741244761479122,0.741860200796502,0.742474090999411,0.743086436360017,0.743697241136699,0.744306509574111,0.744914245903234,0.745520454341437,0.746125139092530,0.746728304346822,0.747329954281178,0.747930093059073,0.748528724830645,0.749125853732755,0.749721483889038,0.750315619409959,0.750908264392865,0.751499422922041,0.752089099068763,0.752677296891347,0.753264020435210,0.753849273732912,0.754433060804219,0.755015385656146,0.755596252283013,0.756175664666496,0.756753626775676,0.757330142567093,0.757905215984793,0.758478850960381,0.759051051413067,0.759621821249720,0.760191164364916,0.760759084640984,0.761325585948060,0.761890672144130,0.762454347075082,0.763016614574754,0.763577478464979,0.764136942555635,0.764695010644690,0.765251686518250,0.765806973950608,0.766360876704287,0.766913398530085,0.767464543167128,0.768014314342907,0.768562715773328,0.769109751162760,0.769655424204071,0.770199738578682,0.770742697956607,0.771284305996498,0.771824566345689,0.772363482640238,0.772901058504974,0.773437297553538,0.773972203388427,0.774505779601036,0.775038029771701,0.775568957469741,0.776098566253503,0.776626859670398,0.777153841256950,0.777679514538830,0.778203883030906,0.778726950237274,0.779248719651309,0.779769194755698,0.780288379022484,0.780806275913106,0.781322888878439,0.781838221358831,0.782352276784149,0.782865058573812,0.783376570136834,0.783886814871861,0.784395796167212,0.784903517400915,0.785409981940749,0.785915193144278,0.786419154358893,0.786921868921846,0.787423340160292,0.787923571391323,0.788422565922008,0.788920327049428,0.789416858060713,0.789912162233082,0.790406242833874,0.790899103120589,0.791390746340924,0.791881175732807,0.792370394524432,0.792858405934299,0.793345213171246,0.793830819434485,0.794315227913637,0.794798441788770,0.795280464230428,0.795761298399672,0.796240947448110,0.796719414517932,0.797196702741946,0.797672815243614,0.798147755137077,0.798621525527200,0.799094129509597,0.799565570170669,0.800035850587634,0.800504973828565,0.800972942952416,0.801439761009061,0.801905431039322,0.802369956075006,0.802833339138932,0.803295583244968,0.803756691398058,0.804216666594261,0.804675511820773,0.805133230055969,0.805589824269425,0.806045297421956,0.806499652465644,0.806952892343868,0.807405019991339,0.807856038334126,0.808305950289689,0.808754758766908,0.809202466666116,0.809649076879126,0.810094592289261,0.810539015771388,0.810982350191941,0.811424598408958,0.811865763272103,0.812305847622701,0.812744854293766,0.813182786110026,0.813619645887958,0.814055436435812,0.814490160553643,0.814923821033336,0.815356420658636,0.815787962205180,0.816218448440517,0.816647882124143,0.817076266007528,0.817503602834138,0.817929895339472,0.818355146251079,0.818779358288595,0.819202534163764,0.819624676580468,0.820045788234751,0.820465871814850,0.820884930001221,0.821302965466561,0.821719980875839,0.822135978886325,0.822550962147607,0.822964933301628,0.823377894982703,0.823789849817552,0.824200800425321,0.824610749417610,0.825019699398499,0.825427652964571,0.825834612704941,0.826240581201277,0.826645561027831,0.827049554751458,0.827452564931645,0.827854594120533,0.828255644862944,0.828655719696407,0.829054821151176,0.829452951750264,0.829850114009459,0.830246310437353,0.830641543535362,0.831035815797757,0.831429129711679,0.831821487757172,0.832212892407198,0.832603346127667,0.832992851377459,0.833381410608444,0.833769026265511,0.834155700786586,0.834541436602659,0.834926236137804,0.835310101809205,0.835693036027176,0.836075041195186,0.836456119709880,0.836836273961102,0.837215506331919,0.837593819198639,0.837971214930841,0.838347695891388,0.838723264436456,0.839097922915554,0.839471673671544,0.839844519040665,0.840216461352555,0.840587502930271,0.840957646090311,0.841326893142636,0.841695246390691,0.842062708131428,0.842429280655323,0.842794966246402,0.843159767182260,0.843523685734080,0.843886724166656,0.844248884738415,0.844610169701435,0.844970581301467,0.845330121777955,0.845688793364056,0.846046598286665,0.846403538766425,0.846759617017759,0.847114835248883,0.847469195661827,0.847822700452456,0.848175351810490,0.848527151919523,0.848878102957045,0.849228207094457,0.849577466497095,0.849925883324247,0.850273459729174,0.850620197859128,0.850966099855372,0.851311167853200,0.851655403981954,0.851998810365043,0.852341389119967,0.852683142358329,0.853024072185856,0.853364180702422,0.853703470002060,0.854041942172986,0.854379599297614,0.854716443452576,0.855052476708740,0.855387701131230,0.855722118779441,0.856055731707059,0.856388541962080,0.856720551586826,0.857051762617964,0.857382177086524,0.857711797017917,0.858040624431952,0.858368661342853,0.858695909759279,0.859022371684340
+};
+
+double MI_map_qpsk_axis[MI_MAP_QPSK_SIZE] = {
+  0.100000000000000,0.104000000000000,0.108000000000000,0.112000000000000,0.116000000000000,0.120000000000000,0.124000000000000,0.128000000000000,0.132000000000000,0.136000000000000,0.140000000000000,0.144000000000000,0.148000000000000,0.152000000000000,0.156000000000000,0.160000000000000,0.164000000000000,0.168000000000000,0.172000000000000,0.176000000000000,0.180000000000000,0.184000000000000,0.188000000000000,0.192000000000000,0.196000000000000,0.200000000000000,0.204000000000000,0.208000000000000,0.212000000000000,0.216000000000000,0.220000000000000,0.224000000000000,0.228000000000000,0.232000000000000,0.236000000000000,0.240000000000000,0.244000000000000,0.248000000000000,0.252000000000000,0.256000000000000,0.260000000000000,0.264000000000000,0.268000000000000,0.272000000000000,0.276000000000000,0.280000000000000,0.284000000000000,0.288000000000000,0.292000000000000,0.296000000000000,0.300000000000000,0.304000000000000,0.308000000000000,0.312000000000000,0.316000000000000,0.320000000000000,0.324000000000000,0.328000000000000,0.332000000000000,0.336000000000000,0.340000000000000,0.344000000000000,0.348000000000000,0.352000000000000,0.356000000000000,0.360000000000000,0.364000000000000,0.368000000000000,0.372000000000000,0.376000000000000,0.380000000000000,0.384000000000000,0.388000000000000,0.392000000000000,0.396000000000000,0.400000000000000,0.404000000000000,0.408000000000000,0.412000000000000,0.416000000000000,0.420000000000000,0.424000000000000,0.428000000000000,0.432000000000000,0.436000000000000,0.440000000000000,0.444000000000000,0.448000000000000,0.452000000000000,0.456000000000000,0.460000000000000,0.464000000000000,0.468000000000000,0.472000000000000,0.476000000000000,0.480000000000000,0.484000000000000,0.488000000000000,0.492000000000000,0.496000000000000,0.500000000000000,0.504000000000000,0.508000000000000,0.512000000000000,0.516000000000000,0.520000000000000,0.524000000000000,0.528000000000000,0.532000000000000,0.536000000000000,0.540000000000000,0.544000000000000,0.548000000000000,0.552000000000000,0.556000000000000,0.560000000000000,0.564000000000000,0.568000000000000,0.572000000000000,0.576000000000000,0.580000000000000,0.584000000000000,0.588000000000000,0.592000000000000,0.596000000000000,0.600000000000000,0.604000000000000,0.608000000000000,0.612000000000000,0.616000000000000,0.620000000000000,0.624000000000000,0.628000000000000,0.632000000000000,0.636000000000000,0.640000000000000,0.644000000000000,0.648000000000000,0.652000000000000,0.656000000000000,0.660000000000000,0.664000000000000,0.668000000000000,0.672000000000000,0.676000000000000,0.680000000000000,0.684000000000000,0.688000000000000,0.692000000000000,0.696000000000000,0.700000000000000,0.704000000000000,0.708000000000000,0.712000000000000,0.716000000000000,0.720000000000000,0.724000000000000,0.728000000000000,0.732000000000000,0.736000000000000,0.740000000000000,0.744000000000000,0.748000000000000,0.752000000000000,0.756000000000000,0.760000000000000,0.764000000000000,0.768000000000000,0.772000000000000,0.776000000000000,0.780000000000000,0.784000000000000,0.788000000000000,0.792000000000000,0.796000000000000,0.800000000000000,0.804000000000000,0.808000000000000,0.812000000000000,0.816000000000000,0.820000000000000,0.824000000000000,0.828000000000000,0.832000000000000,0.836000000000000,0.840000000000000,0.844000000000000,0.848000000000000,0.852000000000000,0.856000000000000,0.860000000000000,0.864000000000000,0.868000000000000,0.872000000000000,0.876000000000000,0.880000000000000,0.884000000000000,0.888000000000000,0.892000000000000,0.896000000000000,0.900000000000000,0.904000000000000,0.908000000000000,0.912000000000000,0.916000000000000,0.920000000000000,0.924000000000000,0.928000000000000,0.932000000000000,0.936000000000000,0.940000000000000,0.944000000000000,0.948000000000000,0.952000000000000,0.956000000000000,0.960000000000000,0.964000000000000,0.968000000000000,0.972000000000000,0.976000000000000,0.980000000000000,0.984000000000000,0.988000000000000,0.992000000000000,0.996000000000000,1,1.00400000000000,1.00800000000000,1.01200000000000,1.01600000000000,1.02000000000000,1.02400000000000,1.02800000000000,1.03200000000000,1.03600000000000,1.04000000000000,1.04400000000000,1.04800000000000,1.05200000000000,1.05600000000000,1.06000000000000,1.06400000000000,1.06800000000000,1.07200000000000,1.07600000000000,1.08000000000000,1.08400000000000,1.08800000000000,1.09200000000000,1.09600000000000,1.10000000000000,1.10400000000000,1.10800000000000,1.11200000000000,1.11600000000000,1.12000000000000,1.12400000000000,1.12800000000000,1.13200000000000,1.13600000000000,1.14000000000000,1.14400000000000,1.14800000000000,1.15200000000000,1.15600000000000,1.16000000000000,1.16400000000000,1.16800000000000,1.17200000000000,1.17600000000000,1.18000000000000,1.18400000000000,1.18800000000000,1.19200000000000,1.19600000000000,1.20000000000000,1.20400000000000,1.20800000000000,1.21200000000000,1.21600000000000,1.22000000000000,1.22400000000000,1.22800000000000,1.23200000000000,1.23600000000000,1.24000000000000,1.24400000000000,1.24800000000000,1.25200000000000,1.25600000000000,1.26000000000000,1.26400000000000,1.26800000000000,1.27200000000000,1.27600000000000,1.28000000000000,1.28400000000000,1.28800000000000,1.29200000000000,1.29600000000000,1.30000000000000,1.30400000000000,1.30800000000000,1.31200000000000,1.31600000000000,1.32000000000000,1.32400000000000,1.32800000000000,1.33200000000000,1.33600000000000,1.34000000000000,1.34400000000000,1.34800000000000,1.35200000000000,1.35600000000000,1.36000000000000,1.36400000000000,1.36800000000000,1.37200000000000,1.37600000000000,1.38000000000000,1.38400000000000,1.38800000000000,1.39200000000000,1.39600000000000,1.40000000000000,1.40400000000000,1.40800000000000,1.41200000000000,1.41600000000000,1.42000000000000,1.42400000000000,1.42800000000000,1.43200000000000,1.43600000000000,1.44000000000000,1.44400000000000,1.44800000000000,1.45200000000000,1.45600000000000,1.46000000000000,1.46400000000000,1.46800000000000,1.47200000000000,1.47600000000000,1.48000000000000,1.48400000000000,1.48800000000000,1.49200000000000,1.49600000000000,1.50000000000000,1.50400000000000,1.50800000000000,1.51200000000000,1.51600000000000,1.52000000000000,1.52400000000000,1.52800000000000,1.53200000000000,1.53600000000000,1.54000000000000,1.54400000000000,1.54800000000000,1.55200000000000,1.55600000000000,1.56000000000000,1.56400000000000,1.56800000000000,1.57200000000000,1.57600000000000,1.58000000000000,1.58400000000000,1.58800000000000,1.59200000000000,1.59600000000000,1.60000000000000,1.60400000000000,1.60800000000000,1.61200000000000,1.61600000000000,1.62000000000000,1.62400000000000,1.62800000000000,1.63200000000000,1.63600000000000,1.64000000000000,1.64400000000000,1.64800000000000,1.65200000000000,1.65600000000000,1.66000000000000,1.66400000000000,1.66800000000000,1.67200000000000,1.67600000000000,1.68000000000000,1.68400000000000,1.68800000000000,1.69200000000000,1.69600000000000,1.70000000000000,1.70400000000000,1.70800000000000,1.71200000000000,1.71600000000000,1.72000000000000,1.72400000000000,1.72800000000000,1.73200000000000,1.73600000000000,1.74000000000000,1.74400000000000,1.74800000000000,1.75200000000000,1.75600000000000,1.76000000000000,1.76400000000000,1.76800000000000,1.77200000000000,1.77600000000000,1.78000000000000,1.78400000000000,1.78800000000000,1.79200000000000,1.79600000000000,1.80000000000000,1.80400000000000,1.80800000000000,1.81200000000000,1.81600000000000,1.82000000000000,1.82400000000000,1.82800000000000,1.83200000000000,1.83600000000000,1.84000000000000,1.84400000000000,1.84800000000000,1.85200000000000,1.85600000000000,1.86000000000000,1.86400000000000,1.86800000000000,1.87200000000000,1.87600000000000,1.88000000000000,1.88400000000000,1.88800000000000,1.89200000000000,1.89600000000000,1.90000000000000,1.90400000000000,1.90800000000000,1.91200000000000,1.91600000000000,1.92000000000000,1.92400000000000,1.92800000000000,1.93200000000000,1.93600000000000,1.94000000000000,1.94400000000000,1.94800000000000,1.95200000000000,1.95600000000000,1.96000000000000,1.96400000000000,1.96800000000000,1.97200000000000,1.97600000000000,1.98000000000000,1.98400000000000,1.98800000000000,1.99200000000000,1.99600000000000,2,2.00400000000000,2.00800000000000,2.01200000000000,2.01600000000000,2.02000000000000,2.02400000000000,2.02800000000000,2.03200000000000,2.03600000000000,2.04000000000000,2.04400000000000,2.04800000000000,2.05200000000000,2.05600000000000,2.06000000000000,2.06400000000000,2.06800000000000,2.07200000000000,2.07600000000000,2.08000000000000,2.08400000000000,2.08800000000000,2.09200000000000,2.09600000000000,2.10000000000000,2.10400000000000,2.10800000000000,2.11200000000000,2.11600000000000,2.12000000000000,2.12400000000000,2.12800000000000,2.13200000000000,2.13600000000000,2.14000000000000,2.14400000000000,2.14800000000000,2.15200000000000,2.15600000000000,2.16000000000000,2.16400000000000,2.16800000000000,2.17200000000000,2.17600000000000,2.18000000000000,2.18400000000000,2.18800000000000,2.19200000000000,2.19600000000000,2.20000000000000,2.20400000000000,2.20800000000000,2.21200000000000,2.21600000000000,2.22000000000000,2.22400000000000,2.22800000000000,2.23200000000000,2.23600000000000,2.24000000000000,2.24400000000000,2.24800000000000,2.25200000000000,2.25600000000000,2.26000000000000,2.26400000000000,2.26800000000000,2.27200000000000,2.27600000000000,2.28000000000000,2.28400000000000,2.28800000000000,2.29200000000000,2.29600000000000,2.30000000000000,2.30400000000000,2.30800000000000,2.31200000000000,2.31600000000000,2.32000000000000,2.32400000000000,2.32800000000000,2.33200000000000,2.33600000000000,2.34000000000000,2.34400000000000,2.34800000000000,2.35200000000000,2.35600000000000,2.36000000000000,2.36400000000000,2.36800000000000,2.37200000000000,2.37600000000000,2.38000000000000,2.38400000000000,2.38800000000000,2.39200000000000,2.39600000000000,2.40000000000000,2.40400000000000,2.40800000000000,2.41200000000000,2.41600000000000,2.42000000000000,2.42400000000000,2.42800000000000,2.43200000000000,2.43600000000000,2.44000000000000,2.44400000000000,2.44800000000000,2.45200000000000,2.45600000000000,2.46000000000000,2.46400000000000,2.46800000000000,2.47200000000000,2.47600000000000,2.48000000000000,2.48400000000000,2.48800000000000,2.49200000000000,2.49600000000000,2.50000000000000,2.50400000000000,2.50800000000000,2.51200000000000,2.51600000000000,2.52000000000000,2.52400000000000,2.52800000000000,2.53200000000000,2.53600000000000,2.54000000000000,2.54400000000000,2.54800000000000,2.55200000000000,2.55600000000000,2.56000000000000,2.56400000000000,2.56800000000000,2.57200000000000,2.57600000000000,2.58000000000000,2.58400000000000,2.58800000000000,2.59200000000000,2.59600000000000,2.60000000000000,2.60400000000000,2.60800000000000,2.61200000000000,2.61600000000000,2.62000000000000,2.62400000000000,2.62800000000000,2.63200000000000,2.63600000000000,2.64000000000000,2.64400000000000,2.64800000000000,2.65200000000000,2.65600000000000,2.66000000000000,2.66400000000000,2.66800000000000,2.67200000000000,2.67600000000000,2.68000000000000,2.68400000000000,2.68800000000000,2.69200000000000,2.69600000000000,2.70000000000000,2.70400000000000,2.70800000000000,2.71200000000000,2.71600000000000,2.72000000000000,2.72400000000000,2.72800000000000,2.73200000000000,2.73600000000000,2.74000000000000,2.74400000000000,2.74800000000000,2.75200000000000,2.75600000000000,2.76000000000000,2.76400000000000,2.76800000000000,2.77200000000000,2.77600000000000,2.78000000000000,2.78400000000000,2.78800000000000,2.79200000000000,2.79600000000000,2.80000000000000,2.80400000000000,2.80800000000000,2.81200000000000,2.81600000000000,2.82000000000000,2.82400000000000,2.82800000000000,2.83200000000000,2.83600000000000,2.84000000000000,2.84400000000000,2.84800000000000,2.85200000000000,2.85600000000000,2.86000000000000,2.86400000000000,2.86800000000000,2.87200000000000,2.87600000000000,2.88000000000000,2.88400000000000,2.88800000000000,2.89200000000000,2.89600000000000,2.90000000000000,2.90400000000000,2.90800000000000,2.91200000000000,2.91600000000000,2.92000000000000,2.92400000000000,2.92800000000000,2.93200000000000,2.93600000000000,2.94000000000000,2.94400000000000,2.94800000000000,2.95200000000000,2.95600000000000,2.96000000000000,2.96400000000000,2.96800000000000,2.97200000000000,2.97600000000000,2.98000000000000,2.98400000000000,2.98800000000000,2.99200000000000,2.99600000000000,3,3.00400000000000,3.00800000000000,3.01200000000000,3.01600000000000,3.02000000000000,3.02400000000000,3.02800000000000,3.03200000000000,3.03600000000000,3.04000000000000,3.04400000000000,3.04800000000000,3.05200000000000,3.05600000000000,3.06000000000000,3.06400000000000,3.06800000000000,3.07200000000000,3.07600000000000,3.08000000000000,3.08400000000000,3.08800000000000,3.09200000000000,3.09600000000000,3.10000000000000,3.10400000000000,3.10800000000000,3.11200000000000,3.11600000000000,3.12000000000000,3.12400000000000,3.12800000000000,3.13200000000000,3.13600000000000,3.14000000000000,3.14400000000000,3.14800000000000,3.15200000000000,3.15600000000000,3.16000000000000 
+};
+
+
+double MI_map_16qam[MI_MAP_16QAM_SIZE] = {
+  0.311657658918262,0.312950120539691,0.314237413971671,0.315519576122440,0.316796643531803,0.318068652376208,0.319335638473721,0.320597637288904,0.321854683937597,0.323106813191606,0.324354059483297,0.325596456910107,0.326834039238967,0.328066839910638,0.329294892043971,0.330518228440083,0.331736881586456,0.332950883660966,0.334160266535828,0.335365061781484,0.336565300670404,0.337761014180833,0.338952233000467,0.340138987530061,0.341321307886976,0.342499223908667,0.343672765156109,0.344841960917162,0.346006840209880,0.347167431785766,0.348323764132971,0.349475865479440,0.350623763796002,0.351767486799416,0.352907061955363,0.354042516481386,0.355173877349791,0.356301171290494,0.357424424793826,0.358543664113292,0.359658915268288,0.360770204046774,0.361877556007904,0.362980996484621,0.364080550586204,0.365176243200783,0.366268098997813,0.367356142430507,0.368440397738239,0.369520888948905,0.370597639881256,0.371670674147187,0.372740015154002,0.373805686106636,0.374867710009856,0.375926109670419,0.376980907699207,0.378032126513326,0.379079788338180,0.380123915209511,0.381164528975415,0.382201651298323,0.383235303656960,0.384265507348277,0.385292283489353,0.386315653019272,0.387335636700973,0.388352255123081,0.389365528701704,0.390375477682212,0.391382122140992,0.392385481987174,0.393385576964342,0.394382426652219,0.395376050468322,0.396366467669612,0.397353697354107,0.398337758462481,0.399318669779643,0.400296449936292,0.401271117410453,0.402242690528999,0.403211187469144,0.404176626259925,0.405139024783662,0.406098400777399,0.407054771834328,0.408008155405198,0.408958568799700,0.409906029187841,0.410850553601299,0.411792158934762,0.412730861947246,0.413666679263405,0.414599627374820,0.415529722641272,0.416456981292003,0.417381419426958,0.418303053018017,0.419221897910207,0.420137969822903,0.421051284351017,0.421961856966165,0.422869703017829,0.423774837734502,0.424677276224815,0.425577033478664,0.426474124368308,0.427368563649465,0.428260365962391,0.429149545832951,0.430036117673671,0.430920095784783,0.431801494355260,0.432680327463833,0.433556609080000,0.434430353065026,0.435301573172926,0.436170283051446,0.437036496243021,0.437900226185734,0.438761486214258,0.439620289560789,0.440476649355968,0.441330578629795,0.442182090312532,0.443031197235597,0.443877912132443,0.444722247639439,0.445564216296728,0.446241386800635,0.447078224576877,0.447912700343638,0.448744826834002,0.449574616685344,0.450402082440181,0.451227236547016,0.452050091361174,0.452870659145633,0.453688952071835,0.454504982220502,0.455318761582433,0.456130302059296,0.456939615464412,0.457746713523533,0.458551607875603,0.459354310073525,0.460154831584905,0.460953183792799,0.461749377996449,0.462543425412006,0.463335337173257,0.464125124332333,0.464912797860415,0.465698368648435,0.466481847507761,0.467263245170889,0.468042572292111,0.468819839448194,0.469595057139034,0.470368235788318,0.471139385744175,0.471908517279813,0.472675640594161,0.473440765812498,0.474203902987074,0.474965062097733,0.475724253052520,0.476481485688287,0.477236769771296,0.477990114997806,0.478741530994668,0.479491027319901,0.480238613463271,0.480984298846859,0.481728092825629,0.482470004687985,0.483210043656323,0.483948218887585,0.484684539473797,0.485419014442608,0.486151652757823,0.486882463319931,0.487611454966627,0.488338636473329,0.489064016553688,0.489787603860101,0.490509406984209,0.491229434457395,0.491947694751280,0.492664196278209,0.493378947391734,0.494091956387095,0.494803231501696,0.495512780915570,0.496220612751849,0.496926735077223,0.497631155902401,0.498333883182558,0.499034924817788,0.499734288653544,0.500431982481084,0.501128014037901,0.501822391008160,0.502515121023123,0.503206211661574,0.503895670450239,0.504583504864202,0.505269722327319,0.505954330212623,0.506637335842736,0.507318746490262,0.507998569378189,0.508676811680282,0.509353480521475,0.510028582978256,0.510702126079049,0.511374116804597,0.512044562088338,0.512713468816774,0.513380843829845,0.514046693921296,0.514711025839036,0.515373846285498,0.516035161918000,0.516694979349094,0.517353305146920,0.518010145835549,0.518665507895329,0.519319397763227,0.519971821833164,0.520622786456354,0.521272297941633,0.521920362555787,0.522566986523883,0.523212176029587,0.523855937215487,0.524498276183410,0.525139198994738,0.525778711670719,0.526416820192776,0.527053530502813,0.527688848503523,0.528322780058684,0.528955330993462,0.529586507094702,0.530216314111229,0.530844757754133,0.531471843697058,0.532097577576492,0.532721964992045,0.533345011506736,0.533966722647266,0.534587103904300,0.535206160732734,0.535823898551975,0.536440322746201,0.537055438664637,0.537669251621813,0.538281766897828,0.538892989738615,0.539178067273364,0.539786132274396,0.540392889758560,0.540998345208540,0.541602504072463,0.542205371764164,0.542806953663444,0.543407255116323,0.544006281435298,0.544604037899594,0.545200529755413,0.545795762216181,0.546389740462796,0.546982469643869,0.547573954875970,0.548164201243860,0.548753213800733,0.549340997568455,0.549927557537787,0.550512898668628,0.551097025890235,0.551679944101458,0.552261658170959,0.552842172937442,0.553421493209870,0.553999623767686,0.554576569361034,0.555152334710972,0.555726924509689,0.556300343420714,0.556872596079132,0.557443687091790,0.558013621037505,0.558582402467269,0.559150035904457,0.559716525845022,0.560281876757703,0.560846093084222,0.561409179239477,0.561971139611745,0.562531978562869,0.563091700428456,0.563650309518066,0.564207810115402,0.564764206478494,0.565319502839892,0.565873703406846,0.566426812361491,0.566978833861027,0.567529772037904,0.568079630999995,0.568628414830776,0.569176127589504,0.569722773311388,0.570268356007764,0.570812879666266,0.571356348250997,0.571898765702698,0.572440135938915,0.572980462854166,0.573519750320104,0.574058002185683,0.574595222277320,0.575131414399054,0.575666582332706,0.576200729838040,0.576733860652918,0.577265978493456,0.577797087054178,0.578327190008172,0.578856291007238,0.579384393682044,0.579911501642270,0.580437618476764,0.580962747753680,0.581486893020633,0.582010057804838,0.582532245613257,0.583053459932742,0.583573704230175,0.584092981952606,0.584611296527401,0.585128651362370,0.585645049845912,0.586160495347147,0.586674991216051,0.587188540783595,0.587701147361870,0.588212814244225,0.588723544705397,0.589233342001638,0.589742209370846,0.590250150032694,0.590757167188753,0.591263264022623,0.591768443700053,0.592272709369068,0.592776064160089,0.593278511186061,0.593780053542566,0.594280694307948,0.594780436543432,0.595279283293242,0.595777237584716,0.596274302428425,0.596770480818288,0.597265775731686,0.597760190129576,0.598253726956604,0.598746389141218,0.599238179595775,0.599729101216658,0.600219156884380,0.600708349463695,0.601196681803704,0.601684156737964,0.602170777084593,0.602656545646377,0.603141465210871,0.603625538550505,0.604108768422687,0.604591157569906,0.605072708719830,0.605553424585410,0.606033307864980,0.606512361242351,0.606990587386916,0.607467988953743,0.607944568583673,0.608420328903419,0.608895272525656,0.609369402049119,0.609842720058696,0.610315229125524,0.610786931807076,0.611257830647258,0.611727928176496,0.612197226911830,0.612665729357001,0.613133438002544,0.613600355325870,0.614066483791360,0.614531825850448,0.614996383941710,0.615460160490949,0.615923157911278,0.616385378603209,0.616846824954733,0.617307499341405,0.617767404126425,0.618226541660722,0.618684914283036,0.619142524319995,0.619599374086200,0.620055465884300,0.620510802005075,0.620965384727511,0.621419216318882,0.621872299034823,0.622324635119409,0.622776226805229,0.623227076313467,0.623677185853969,0.624126557625324,0.624575193814935,0.625023096599094,0.625470268143052,0.625916710601093,0.626362426116607,0.626807416822160,0.627251684839564,0.627695232279947,0.628138061243826,0.628580173821171,0.629021572091478,0.629462258123835,0.629902233976989,0.630341501699417,0.630780063329388,0.631217920895030,0.631655076414398,0.632091531895540,0.632527289336557,0.632962350725669,0.633396718041284,0.633830393252054,0.634263378316940,0.634695675185279,0.635127285796839,0.635558212081886,0.635988455961242,0.636418019346346,0.636846904139316,0.637275112233006,0.637702645511069,0.638129505848011,0.638555695109255,0.638981215151193,0.639406067821249,0.639830254957933,0.640253778390900,0.640676639941004,0.641098841420355,0.641520384632376,0.641941271371856,0.642361503425005,0.642781082569512,0.643200010574591,0.643618289201045,0.644035920201310,0.644452905319515,0.644869246291528,0.645284944845014,0.645700002699482,0.646114421566339,0.646528203148942,0.646941349142644,0.647353861234850,0.647765741105063,0.648176990424934,0.648587610858312,0.648997604061295,0.649406971682274,0.649815715361982,0.650223836733548,0.650631337422535,0.651038219046995,0.651444483217509,0.651850131537241,0.652255165601978,0.652659587000179,0.653063397313018,0.653466598114432,0.653869190971165,0.654271177442811,0.654672559081860,0.655073337433740,0.655473514036863,0.655873090422668,0.656272068115661,0.656670448633460,0.657068233486839,0.657465424179768,0.657862022209452,0.658258029066380,0.658653446234359,0.659048275190558,0.659442517405548,0.659836174343345,0.660229247461446,0.660621738210870,0.661013648036199,0.661404978375616,0.661795730660945,0.662185906317689,0.662575506765066,0.662964533416053,0.663352987677419,0.663740870949762,0.664128184627552,0.664514930099163,0.664901108746911,0.665286721947090,0.665671771070013,0.666056257480040,0.666440182535622,0.666823547589330,0.667206353987895,0.667588603072241,0.667970296177519,0.668351434633144,0.668732019762828,0.669112052884615,0.669491535310911,0.669870468348525,0.670248853298696,0.670626691457129,0.671003984114027,0.671380732554126,0.671756938056725,0.672132601895717,0.672507725339626,0.672882309651635,0.673256356089618,0.673629865906174,0.674002840348655,0.674375280659198,0.674747188074758,0.675118563827135,0.675489409143006,0.675859725243957,0.676229513346510,0.676598774662154,0.676967510397375,0.677335721753685,0.677703409927650,0.678070576110922,0.678437221490264,0.678803347247580,0.679168954559946,0.679534044599635,0.679898618534144,0.680262677526226,0.680626222733914,0.680989255310550,0.681351776404812,0.681713787160742,0.682075288717770,0.682436282210744,0.682796768769954,0.683156749521160,0.683516225585618,0.683875198080104,0.684233668116943,0.684591636804033,0.684949105244868,0.685306074538567,0.685662545779900,0.686018520059308,0.686373998462931,0.686728982072633,0.687083471966025,0.687437469216490,0.687790974893207,0.688143990061174,0.688496515781235,0.688848553110099,0.689200103100368,0.689551166800557,0.689901745255117,0.690251839504462,0.690601450584988,0.690950579529097,0.691299227365220,0.691647395117839,0.691995083807507,0.692342294450876,0.692689028060711,0.693035285645921,0.693381068211572,0.693726376758914,0.694071212285399,0.694415575784706,0.694759468246760,0.695102890657750,0.695445844000157,0.695788329252769,0.696130347390701,0.696471899385420,0.696812986204762,0.697153608812953,0.697493768170630,0.697833465234857,0.698172700959150,0.698511476293495,0.698849792184364,0.699187649574739,0.699525049404130,0.699861992608591,0.700198480120743,0.700534512869792,0.700870091781545,0.701205217778434,0.701539891779528,0.701874114700556,0.702207887453923,0.702541210948731,0.702874086090792,0.703206513782652,0.703538494923604,0.703870030409707,0.704201121133804,0.704531767985541,0.704861971851382,0.705191733614625,0.705521054155423,0.705849934350799,0.706178375074663,0.706506377197826,0.706833941588023,0.707161069109924,0.707487760625153,0.707814016992302,0.708139839066952,0.708465227701683,0.708790183746095,0.709114708046822,0.709438801447546,0.709762464789016,0.710085698909062,0.710408504642612,0.710730882821704,0.711052834275504,0.711374359830321,0.711695460309622,0.712016136534047,0.712336389321422,0.712656219486779,0.712975627842363,0.713294615197654,0.713613182359379,0.713931330131523,0.714249059315349,0.714566370709408,0.714883265109557,0.715199743308968,0.715515806098148,0.715831454264947,0.716146688594576,0.716461509869620,0.716775918870051,0.717089916373239,0.717403503153972,0.717716679984462,0.718029447634365,0.718341806870788,0.718653758458309,0.718965303158981,0.719276441732355,0.719587174935486,0.719897503522947,0.720207428246845,0.720516949856830,0.720826069100108,0.721134786721456,0.721443103463231,0.721751020065387,0.722058537265481,0.722365655798690,0.722672376397823,0.722978699793329,0.723284626713314,0.723590157883548,0.723895294027483,0.724200035866257,0.724504384118712,0.724808339501404,0.725111902728611,0.725415074512349,0.725717855562382,0.726020246586232,0.726322248289192,0.726623861374335,0.726925086542528,0.727225924492439,0.727526375920552,0.727826441521177,0.728126121986458,0.728425418006387,0.728724330268813,0.729022859459453,0.729321006261904,0.729618771357650,0.729916155426075,0.730213159144474,0.730509783188062,0.730806028229982,0.731101894941321,0.731397383991114,0.731692496046358,0.731987231772020,0.732281591831049,0.732575576884382,0.732869187590958,0.733162424607725,0.733455288589651,0.733747780189734,0.734039900059010,0.734331648846563,0.734623027199535,0.734914035763136,0.735204675180651,0.735494946093450,0.735784849141002,0.736074384960875,0.736363554188753,0.736652357458442,0.736940795401878,0.737228868649139,0.737516577828450,0.737803923566195,0.738090906486925,0.738377527213364,0.738663786366423,0.738949684565204,0.739235222427010,0.739520400567354,0.739805219599967,0.740089680136806,0.740373782788065,0.740657528162179,0.740940916865834,0.741223949503978,0.741506626679825,0.741788948994865,0.742070917048873,0.742352531439914,0.742633792764357,0.742914701616873,0.743195258590453,0.743475464276410,0.743755319264390,0.744034824142374,0.744313979496694,0.744592785912035,0.744871243971442,0.745149354256332,0.745427117346498,0.745704533820116,0.745981604253757,0.746258329222388,0.746534709299384,0.746810745056534,0.747086437064048,0.747361785890563,0.747636792103153,0.747911456267333,0.748185778947068,0.748459760704780,0.748733402101353,0.749006703696145,0.749279666046988,0.749552289710199,0.749824575240586,0.750096523191456,0.750368134114619,0.750639408560396,0.750910347077629,0.751180950213680,0.751451218514446,0.751721152524359,0.751990752786397,0.752260019842088,0.752528954231515,0.752797556493329,0.753065827164745,0.753333766781560,0.753601375878148,0.753868654987476,0.754135604641103,0.754402225369190,0.754668517700506,0.754934482162430,0.755200119280965,0.755465429580736,0.755730413584999,0.755995071815650,0.756259404793226,0.756523413036913,0.756787097064554,0.757050457392650,0.757313494536370,0.757576209009556,0.757838601324726,0.758100671993084,0.758362421524521,0.758623850427625,0.758884959209684,0.759145748376690,0.759406218433351,0.759666369883087,0.759926203228045,0.760185718969098,0.760444917605852,0.760703799636653,0.760962365558590,0.761220615867503,0.761478551057985,0.761736171623389,0.761993478055836,0.762250470846214,0.762507150484188,0.762763517458204,0.763019572255492,0.763275315362075,0.763530747262772,0.763785868441201,0.764040679379786,0.764295180559764,0.764549372461186,0.764803255562924,0.765056830342675
+};
+
+
+double MI_map_16qam_axis[MI_MAP_16QAM_SIZE] = {
+  1.58000000000000,1.59000000000000,1.60000000000000,1.61000000000000,1.62000000000000,1.63000000000000,1.64000000000000,1.65000000000000,1.66000000000000,1.67000000000000,1.68000000000000,1.69000000000000,1.70000000000000,1.71000000000000,1.72000000000000,1.73000000000000,1.74000000000000,1.75000000000000,1.76000000000000,1.77000000000000,1.78000000000000,1.79000000000000,1.80000000000000,1.81000000000000,1.82000000000000,1.83000000000000,1.84000000000000,1.85000000000000,1.86000000000000,1.87000000000000,1.88000000000000,1.89000000000000,1.90000000000000,1.91000000000000,1.92000000000000,1.93000000000000,1.94000000000000,1.95000000000000,1.96000000000000,1.97000000000000,1.98000000000000,1.99000000000000,2,2.01000000000000,2.02000000000000,2.03000000000000,2.04000000000000,2.05000000000000,2.06000000000000,2.07000000000000,2.08000000000000,2.09000000000000,2.10000000000000,2.11000000000000,2.12000000000000,2.13000000000000,2.14000000000000,2.15000000000000,2.16000000000000,2.17000000000000,2.18000000000000,2.19000000000000,2.20000000000000,2.21000000000000,2.22000000000000,2.23000000000000,2.24000000000000,2.25000000000000,2.26000000000000,2.27000000000000,2.28000000000000,2.29000000000000,2.30000000000000,2.31000000000000,2.32000000000000,2.33000000000000,2.34000000000000,2.35000000000000,2.36000000000000,2.37000000000000,2.38000000000000,2.39000000000000,2.40000000000000,2.41000000000000,2.42000000000000,2.43000000000000,2.44000000000000,2.45000000000000,2.46000000000000,2.47000000000000,2.48000000000000,2.49000000000000,2.50000000000000,2.51000000000000,2.52000000000000,2.53000000000000,2.54000000000000,2.55000000000000,2.56000000000000,2.57000000000000,2.58000000000000,2.59000000000000,2.60000000000000,2.61000000000000,2.62000000000000,2.63000000000000,2.64000000000000,2.65000000000000,2.66000000000000,2.67000000000000,2.68000000000000,2.69000000000000,2.70000000000000,2.71000000000000,2.72000000000000,2.73000000000000,2.74000000000000,2.75000000000000,2.76000000000000,2.77000000000000,2.78000000000000,2.79000000000000,2.80000000000000,2.81000000000000,2.82000000000000,2.83000000000000,2.84000000000000,2.85000000000000,2.86000000000000,2.87000000000000,2.88000000000000,2.89000000000000,2.90000000000000,2.91000000000000,2.92000000000000,2.93000000000000,2.94000000000000,2.95000000000000,2.96000000000000,2.97000000000000,2.98000000000000,2.99000000000000,3,3.01000000000000,3.02000000000000,3.03000000000000,3.04000000000000,3.05000000000000,3.06000000000000,3.07000000000000,3.08000000000000,3.09000000000000,3.10000000000000,3.11000000000000,3.12000000000000,3.13000000000000,3.14000000000000,3.15000000000000,3.16000000000000,3.17000000000000,3.18000000000000,3.19000000000000,3.20000000000000,3.21000000000000,3.22000000000000,3.23000000000000,3.24000000000000,3.25000000000000,3.26000000000000,3.27000000000000,3.28000000000000,3.29000000000000,3.30000000000000,3.31000000000000,3.32000000000000,3.33000000000000,3.34000000000000,3.35000000000000,3.36000000000000,3.37000000000000,3.38000000000000,3.39000000000000,3.40000000000000,3.41000000000000,3.42000000000000,3.43000000000000,3.44000000000000,3.45000000000000,3.46000000000000,3.47000000000000,3.48000000000000,3.49000000000000,3.50000000000000,3.51000000000000,3.52000000000000,3.53000000000000,3.54000000000000,3.55000000000000,3.56000000000000,3.57000000000000,3.58000000000000,3.59000000000000,3.60000000000000,3.61000000000000,3.62000000000000,3.63000000000000,3.64000000000000,3.65000000000000,3.66000000000000,3.67000000000000,3.68000000000000,3.69000000000000,3.70000000000000,3.71000000000000,3.72000000000000,3.73000000000000,3.74000000000000,3.75000000000000,3.76000000000000,3.77000000000000,3.78000000000000,3.79000000000000,3.80000000000000,3.81000000000000,3.82000000000000,3.83000000000000,3.84000000000000,3.85000000000000,3.86000000000000,3.87000000000000,3.88000000000000,3.89000000000000,3.90000000000000,3.91000000000000,3.92000000000000,3.93000000000000,3.94000000000000,3.95000000000000,3.96000000000000,3.97000000000000,3.98000000000000,3.99000000000000,4,4.01000000000000,4.02000000000000,4.03000000000000,4.04000000000000,4.05000000000000,4.06000000000000,4.07000000000000,4.08000000000000,4.09000000000000,4.10000000000000,4.11000000000000,4.12000000000000,4.13000000000000,4.14000000000000,4.15000000000000,4.16000000000000,4.17000000000000,4.18000000000000,4.19000000000000,4.20000000000000,4.21000000000000,4.22000000000000,4.23000000000000,4.24000000000000,4.25000000000000,4.26000000000000,4.27000000000000,4.28000000000000,4.29000000000000,4.30000000000000,4.31000000000000,4.32000000000000,4.33000000000000,4.34000000000000,4.35000000000000,4.36000000000000,4.37000000000000,4.38000000000000,4.39000000000000,4.40000000000000,4.41000000000000,4.42000000000000,4.43000000000000,4.44000000000000,4.45000000000000,4.46000000000000,4.47000000000000,4.48000000000000,4.49000000000000,4.50000000000000,4.51000000000000,4.52000000000000,4.53000000000000,4.54000000000000,4.55000000000000,4.56000000000000,4.57000000000000,4.58000000000000,4.59000000000000,4.60000000000000,4.61000000000000,4.62000000000000,4.63000000000000,4.64000000000000,4.65000000000000,4.66000000000000,4.67000000000000,4.68000000000000,4.69000000000000,4.70000000000000,4.71000000000000,4.72000000000000,4.73000000000000,4.74000000000000,4.75000000000000,4.76000000000000,4.77000000000000,4.78000000000000,4.79000000000000,4.80000000000000,4.81000000000000,4.82000000000000,4.83000000000000,4.84000000000000,4.85000000000000,4.86000000000000,4.87000000000000,4.88000000000000,4.89000000000000,4.90000000000000,4.91000000000000,4.92000000000000,4.93000000000000,4.94000000000000,4.95000000000000,4.96000000000000,4.97000000000000,4.98000000000000,4.99000000000000,5,5.01000000000000,5.02000000000000,5.03000000000000,5.04000000000000,5.05000000000000,5.06000000000000,5.07000000000000,5.08000000000000,5.09000000000000,5.10000000000000,5.11000000000000,5.12000000000000,5.13000000000000,5.14000000000000,5.15000000000000,5.16000000000000,5.17000000000000,5.18000000000000,5.19000000000000,5.20000000000000,5.21000000000000,5.22000000000000,5.23000000000000,5.24000000000000,5.25000000000000,5.26000000000000,5.27000000000000,5.28000000000000,5.29000000000000,5.30000000000000,5.31000000000000,5.32000000000000,5.33000000000000,5.34000000000000,5.35000000000000,5.36000000000000,5.37000000000000,5.38000000000000,5.39000000000000,5.40000000000000,5.41000000000000,5.42000000000000,5.43000000000000,5.44000000000000,5.45000000000000,5.46000000000000,5.47000000000000,5.48000000000000,5.49000000000000,5.50000000000000,5.51000000000000,5.52000000000000,5.53000000000000,5.54000000000000,5.55000000000000,5.56000000000000,5.57000000000000,5.58000000000000,5.59000000000000,5.60000000000000,5.61000000000000,5.62000000000000,5.63000000000000,5.64000000000000,5.65000000000000,5.66000000000000,5.67000000000000,5.68000000000000,5.69000000000000,5.70000000000000,5.71000000000000,5.72000000000000,5.73000000000000,5.74000000000000,5.75000000000000,5.76000000000000,5.77000000000000,5.78000000000000,5.79000000000000,5.80000000000000,5.81000000000000,5.82000000000000,5.83000000000000,5.84000000000000,5.85000000000000,5.86000000000000,5.87000000000000,5.88000000000000,5.89000000000000,5.90000000000000,5.91000000000000,5.92000000000000,5.93000000000000,5.94000000000000,5.95000000000000,5.96000000000000,5.97000000000000,5.98000000000000,5.99000000000000,6,6.01000000000000,6.02000000000000,6.03000000000000,6.04000000000000,6.05000000000000,6.06000000000000,6.07000000000000,6.08000000000000,6.09000000000000,6.10000000000000,6.11000000000000,6.12000000000000,6.13000000000000,6.14000000000000,6.15000000000000,6.16000000000000,6.17000000000000,6.18000000000000,6.19000000000000,6.20000000000000,6.21000000000000,6.22000000000000,6.23000000000000,6.24000000000000,6.25000000000000,6.26000000000000,6.27000000000000,6.28000000000000,6.29000000000000,6.30000000000000,6.31000000000000,6.32000000000000,6.33000000000000,6.34000000000000,6.35000000000000,6.36000000000000,6.37000000000000,6.38000000000000,6.39000000000000,6.40000000000000,6.41000000000000,6.42000000000000,6.43000000000000,6.44000000000000,6.45000000000000,6.46000000000000,6.47000000000000,6.48000000000000,6.49000000000000,6.50000000000000,6.51000000000000,6.52000000000000,6.53000000000000,6.54000000000000,6.55000000000000,6.56000000000000,6.57000000000000,6.58000000000000,6.59000000000000,6.60000000000000,6.61000000000000,6.62000000000000,6.63000000000000,6.64000000000000,6.65000000000000,6.66000000000000,6.67000000000000,6.68000000000000,6.69000000000000,6.70000000000000,6.71000000000000,6.72000000000000,6.73000000000000,6.74000000000000,6.75000000000000,6.76000000000000,6.77000000000000,6.78000000000000,6.79000000000000,6.80000000000000,6.81000000000000,6.82000000000000,6.83000000000000,6.84000000000000,6.85000000000000,6.86000000000000,6.87000000000000,6.88000000000000,6.89000000000000,6.90000000000000,6.91000000000000,6.92000000000000,6.93000000000000,6.94000000000000,6.95000000000000,6.96000000000000,6.97000000000000,6.98000000000000,6.99000000000000,7,7.01000000000000,7.02000000000000,7.03000000000000,7.04000000000000,7.05000000000000,7.06000000000000,7.07000000000000,7.08000000000000,7.09000000000000,7.10000000000000,7.11000000000000,7.12000000000000,7.13000000000000,7.14000000000000,7.15000000000000,7.16000000000000,7.17000000000000,7.18000000000000,7.19000000000000,7.20000000000000,7.21000000000000,7.22000000000000,7.23000000000000,7.24000000000000,7.25000000000000,7.26000000000000,7.27000000000000,7.28000000000000,7.29000000000000,7.30000000000000,7.31000000000000,7.32000000000000,7.33000000000000,7.34000000000000,7.35000000000000,7.36000000000000,7.37000000000000,7.38000000000000,7.39000000000000,7.40000000000000,7.41000000000000,7.42000000000000,7.43000000000000,7.44000000000000,7.45000000000000,7.46000000000000,7.47000000000000,7.48000000000000,7.49000000000000,7.50000000000000,7.51000000000000,7.52000000000000,7.53000000000000,7.54000000000000,7.55000000000000,7.56000000000000,7.57000000000000,7.58000000000000,7.59000000000000,7.60000000000000,7.61000000000000,7.62000000000000,7.63000000000000,7.64000000000000,7.65000000000000,7.66000000000000,7.67000000000000,7.68000000000000,7.69000000000000,7.70000000000000,7.71000000000000,7.72000000000000,7.73000000000000,7.74000000000000,7.75000000000000,7.76000000000000,7.77000000000000,7.78000000000000,7.79000000000000,7.80000000000000,7.81000000000000,7.82000000000000,7.83000000000000,7.84000000000000,7.85000000000000,7.86000000000000,7.87000000000000,7.88000000000000,7.89000000000000,7.90000000000000,7.91000000000000,7.92000000000000,7.93000000000000,7.94000000000000,7.95000000000000,7.96000000000000,7.97000000000000,7.98000000000000,7.99000000000000,8,8.01000000000000,8.02000000000000,8.03000000000000,8.04000000000000,8.05000000000000,8.06000000000000,8.07000000000000,8.08000000000000,8.09000000000000,8.10000000000000,8.11000000000000,8.12000000000000,8.13000000000000,8.14000000000000,8.15000000000000,8.16000000000000,8.17000000000000,8.18000000000000,8.19000000000000,8.20000000000000,8.21000000000000,8.22000000000000,8.23000000000000,8.24000000000000,8.25000000000000,8.26000000000000,8.27000000000000,8.28000000000000,8.29000000000000,8.30000000000000,8.31000000000000,8.32000000000000,8.33000000000000,8.34000000000000,8.35000000000000,8.36000000000000,8.37000000000000,8.38000000000000,8.39000000000000,8.40000000000000,8.41000000000000,8.42000000000000,8.43000000000000,8.44000000000000,8.45000000000000,8.46000000000000,8.47000000000000,8.48000000000000,8.49000000000000,8.50000000000000,8.51000000000000,8.52000000000000,8.53000000000000,8.54000000000000,8.55000000000000,8.56000000000000,8.57000000000000,8.58000000000000,8.59000000000000,8.60000000000000,8.61000000000000,8.62000000000000,8.63000000000000,8.64000000000000,8.65000000000000,8.66000000000000,8.67000000000000,8.68000000000000,8.69000000000000,8.70000000000000,8.71000000000000,8.72000000000000,8.73000000000000,8.74000000000000,8.75000000000000,8.76000000000000,8.77000000000000,8.78000000000000,8.79000000000000,8.80000000000000,8.81000000000000,8.82000000000000,8.83000000000000,8.84000000000000,8.85000000000000,8.86000000000000,8.87000000000000,8.88000000000000,8.89000000000000,8.90000000000000,8.91000000000000,8.92000000000000,8.93000000000000,8.94000000000000,8.95000000000000,8.96000000000000,8.97000000000000,8.98000000000000,8.99000000000000,9,9.01000000000000,9.02000000000000,9.03000000000000,9.04000000000000,9.05000000000000,9.06000000000000,9.07000000000000,9.08000000000000,9.09000000000000,9.10000000000000,9.11000000000000,9.12000000000000,9.13000000000000,9.14000000000000,9.15000000000000,9.16000000000000,9.17000000000000,9.18000000000000,9.19000000000000,9.20000000000000,9.21000000000000,9.22000000000000,9.23000000000000,9.24000000000000,9.25000000000000,9.26000000000000,9.27000000000000,9.28000000000000,9.29000000000000,9.30000000000000,9.31000000000000,9.32000000000000,9.33000000000000,9.34000000000000,9.35000000000000,9.36000000000000,9.37000000000000,9.38000000000000,9.39000000000000,9.40000000000000,9.41000000000000,9.42000000000000,9.43000000000000,9.44000000000000,9.45000000000000,9.46000000000000,9.47000000000000,9.48000000000000,9.49000000000000,9.50000000000000,9.51000000000000,9.52000000000000,9.53000000000000,9.54000000000000,9.55000000000000,9.56000000000000,9.57000000000000,9.58000000000000,9.59000000000000,9.60000000000000,9.61000000000000,9.62000000000000,9.63000000000000,9.64000000000000,9.65000000000000,9.66000000000000,9.67000000000000,9.68000000000000,9.69000000000000,9.70000000000000,9.71000000000000,9.72000000000000,9.73000000000000,9.74000000000000,9.75000000000000,9.76000000000000,9.77000000000000,9.78000000000000,9.79000000000000,9.80000000000000,9.81000000000000,9.82000000000000,9.83000000000000,9.84000000000000,9.85000000000000,9.86000000000000,9.87000000000000,9.88000000000000,9.89000000000000,9.90000000000000,9.91000000000000,9.92000000000000,9.93000000000000,9.94000000000000,9.95000000000000,9.96000000000000,9.97000000000000,9.98000000000000,9.99000000000000,10
+};
+
+
+double MI_map_64qam[MI_MAP_64QAM_SIZE] = {
+  0.425799529860325,0.432152765542146,0.438303333109796,0.444263205182515,0.450043499926380,0.455654548839940,0.461105958376616,0.466406666073195,0.471564991764758,0.476588684391735,0.481484964841807,0.486260565215892,0.490921764861760,0.495474423479624,0.499924011570203,0.504275638466426,0.508316095962828,0.512480868968701,0.516559604267418,0.520556384497397,0.524475035168484,0.528319142485428,0.532092069836711,0.535796973058398,0.539436814572552,0.543014376490667,0.546532272764480,0.549992960459215,0.553398750217790,0.556751815978591,0.560054204004096,0.563307841272820,0.566514543282682,0.569676021309938,0.572793889164217,0.575869669476956,0.578904799557506,0.581900636848503,0.584858464009598,0.587779493656374,0.590664872779198,0.593515686864887,0.596332963742270,0.599117677171195,0.601870750193001,0.604593058259183,0.607285432153689,0.609948660723186,0.612583493428562,0.615190642729957,0.617770786316747,0.620324569193049,0.622852605628593,0.625355480984068,0.627833753419418,0.630287955492967,0.632718595658690,0.635126159668431,0.637511111885396,0.639873896514816,0.642214938757252,0.644534645889648,0.646833408278874,0.649111600332195,0.651369581388777,0.653607696556073,0.655608484392638,0.657805717412332,0.659983677718680,0.662142681139671,0.664283032363931,0.666405025526737,0.668508944760826,0.670595064714242,0.672663651037313,0.674714960840703,0.676749243126363,0.678766739193092,0.680767683018287,0.682752301617383,0.684720815382362,0.686673438400645,0.688610378755565,0.690531838809586,0.692438015471299,0.694329100447223,0.696205280479322,0.698066737569122,0.699913649189236,0.701746188483077,0.703564524453455,0.705368822140750,0.707159242791271,0.708935944016411,0.710699079943126,0.712448801356279,0.714185255833317,0.715908587871746,0.717618939009822,0.719316447940871,0.721001250621597,0.722673480374747,0.724333267986447,0.725980741798532,0.727616027796153,0.729239249690943,0.730850528999982,0.732449985120826,0.734037735402802,0.735613895214796,0.737178578009731,0.738731895385921,0.740273957145479,0.741804871349938,0.743324744373253,0.744833680952319,0.746331784235150,0.747819155826846,0.749295895833466,0.750762102903929,0.752217874270045,0.753663305784784,0.755098491958862,0.756523525995766,0.757938499825260,0.759343504135493,0.760738628403754,0.762123960925963,0.763499588844953,0.764865598177612,0.766222073840946,0.767569099677114,0.768906758477484,0.770235132005777,0.771554301020318,0.772864345295472,0.774165343642269,0.775457373928296,0.776740513096859,0.778014837185474,0.779280421343709,0.780537339850405,0.781785666130325,0.783025472770225,0.784256831534413,0.785479813379787,0.786694488470398,0.787900926191545,0.789099195163442,0.790289363254448,0.791471497593914,0.792645664584633,0.793811929914931,0.794970358570407,0.796121014845337,0.797263962353755,0.798399264040234,0.799526982190367,0.800647178440967,0.801759913789999,0.802865248606254,0.803963242638769,0.805053955026016,0.806137444304855,0.807213768419270,0.808282984728894,0.809345150017332,0.810400320500280,0.811448551833468,0.812489899120409,0.813524416919983,0.814552159253849,0.815573179613692,0.816587530968313,0.817595265770578,0.818596435964203,0.819591092990417,0.820579287794472,0.821561070832035,0.822536492075441,0.823505601019831,0.824468446689165,0.825425077642123,0.826375541977893,0.827319887341849,0.828258160931124,0.829190409500083,0.830116679365692,0.831037016412797,0.831951466099307,0.832860073461282,0.833762883117939,0.834659939276567,0.835551285737364,0.836436965898189,0.837317022759230,0.838191498927611,0.839060436621904,0.839923877676581,0.840781863546392,0.841634435310673,0.842481633677584,0.843323498988284,0.844160071221040,0.844991389995275,0.845817494575551,0.846638423875496,0.847454216461666,0.848264910557361,0.849070544046372,0.849871154476679,0.850666779064099,0.851457454695876,0.852243217934223,0.853024105019807,0.853800151875197,0.854571394108254,0.855337867015476,0.856099605585298,0.856856644501345,0.857609018145645,0.858356760601792,0.859099905658072,0.859838486810540,0.860572537266066,0.861302089945333,0.862027177485795,0.862747832244604,0.863464086301487,0.864175971461601,0.864883519258332,0.865586760956078,0.866285727552980,0.866980449783629,0.867670958121734,0.868357282782756,0.869039453726513,0.869717500659743,0.870391453038652,0.871061340071411,0.871727190720637,0.872389033705835,0.873046897505813,0.873700810361071,0.874350800276154,0.874996895021982,0.875639122138150,0.876277508935201,0.876912082496870,0.877542869682304,0.878169897128256,0.878793191251247,0.879412778249713,0.880028684106114,0.880640934589032,0.881249555255233,0.881854571451712,0.882456008317711,0.883053890786716,0.883648243588427,0.884239091250713,0.884826458101536,0.885410368270855,0.885990845692519,0.886567914106118,0.887141597058834,0.887711917907260,0.888278899819195,0.888842565775432,0.889402938571516,0.889960040819480,0.890513894949575,0.891064523211966,0.891611947678416,0.892156190243955,0.892697272628524,0.893235216378603,0.893770042868823,0.894301773303559,0.894830428718505,0.895356029982234,0.895878597797741,0.896398152703964,0.896914715077295,0.897428305133075,0.897938942927067,0.898446648356916,0.898951441163598,0.899453340932846,0.899952367096565,0.900448538934234,0.900941875574287,0.901432395995483,0.901920119028266,0.902405063356100,0.902887247516799,0.903366689903843,0.903843408767670,0.904317422216969,0.904788748219949,0.905257404605599,0.905723409064933,0.906186779152225,0.906647532286227,0.907105685751380,0.907561256699007,0.908014262148496,0.908464718988472,0.908912643977957,0.909358053747514,0.909800964800386,0.910241393513615,0.910679356139161,0.911114868804997,0.911547947516201,0.911978608156038,0.912406866487023,0.912832738151982,0.913256238675097,0.913677383462941,0.914096187805506,0.914512666877219,0.914926835737943,0.915338709333977,0.915748302499040,0.916155629955243,0.916560706314060,0.916963546077282,0.917364163637964,0.917762573281363,0.918158789185863,0.918552825423898,0.918944695962863,0.919334414666011,0.919721995293345,0.920107451502508,0.920490796849650,0.920872044790299,0.921251208680219,0.921628301776257,0.922003337237186,0.922376328124537,0.922747287403428,0.923116227943374,0.923483162519103,0.923848103811354,0.924211064407671,0.924572056803190,0.924931093401418,0.925288186515000,0.925643348366488,0.925996591089095,0.926347926727443,0.926697367238308,0.927044924491352,0.927390610269852,0.927734436271422,0.928076414108724,0.928416555310182,0.928754871320675,0.929091373502235,0.929426073134737,0.929758981416575,0.930090109465339,0.930419468318485,0.930747068933993,0.931072922191030,0.931397038890590,0.931719429756146,0.932040105434284,0.932359076495335,0.932676353434002,0.932991946669978,0.933305866548562,0.933618123341268,0.933928727246427,0.934237688389781,0.934545016825084,0.934850722534678,0.935154815430080,0.935457305352558,0.935758202073696,0.936057515295968,0.936355254653287,0.936651429711569,0.936946049969278,0.937239124857973,0.937530663742845,0.937820675923255,0.938109170633261,0.938396157042145,0.938681644254934,0.938965641312914,0.939248157194139,0.939529200813942,0.939808781025436,0.940086906620007,0.940363586327811,0.940638828818259,0.940912642700505,0.941185036523922,0.941456018778579,0.941725597895711,0.941993782248186,0.942260580150969,0.942525999861578,0.942790049580541,0.943052737451843,0.943314071563375,0.943574059947377,0.943832710580874,0.944090031386110,0.944346030230983,0.944600714929465,0.944854093242033,0.945106172876082,0.945356961486342,0.945606466675294,0.945854695993572,0.946101656940372,0.946347356963852,0.946591803461529,0.946835003780675,0.947076965218706,0.947317695023567,0.947557200394124,0.947795488480533,0.948032566384627,0.948268441160285,0.948503119813805,0.948736609304268,0.948968916543906,0.949200048398461,0.949430011687544,0.949658813184989,0.949886459619203,0.950112957673521,0.950338313986543,0.950562535152485,0.950785627721511,0.951007598200077,0.951228453051260,0.951448198695091,0.951666841508883,0.951884387827557,0.952100843943963,0.952316216109200,0.952530510532938,0.952743733383722,0.952955890789296,0.953166988836902,0.953377033573592,0.953586031006531,0.953793987103297,0.954000907792180,0.954206798962479,0.954411666464793,0.954615516111316,0.954818353676125,0.955020184895462,0.955221015468023,0.955420851055236,0.955619697281543,0.955817559734673,0.956014443965919,0.956210355490410,0.956405299787380,0.956599282300436,0.956792308437822,0.956984383572683,0.957175513043328,0.957365702153483,0.957554956172555,0.957743280335878,0.957930679844975,0.958117159867796,0.958302725538980,0.958487381960088,0.958671134199857,0.958853987294433,0.959035946247621,0.959217016031113,0.959397201584732,0.959576507816660,0.959754939603674,0.959932501791373,0.960109199194410,0.960285036596717,0.960460018751725,0.960634150382595,0.960807436182432,0.960979880814507,0.961151488912474,0.961322265080584,0.961492213893903,0.961661339898516,0.961829647611747,0.961997141522358,0.962163826090764,0.962329705749233,0.962494784902090,0.962659067925920,0.962822559169769,0.962985262955340,0.963147183577191,0.963308325302933,0.963468692373418,0.963628289002937,0.963787119379405,0.963945187664557,0.964102497994129,0.964259054478047,0.964414861200612,0.964569922220681,0.964724241571851,0.964877823262637,0.965030671276653,0.965182789572787,0.965334182085377,0.965484852724386,0.965634805375577,0.965784043900681,0.965932572137569,0.966080393900422,0.966227512979896,0.966373933143291,0.966519658134713,0.966664691675240,0.966809037463084,0.966952699173750,0.967095680460197,0.967237984953000,0.967379616260498,0.967520577968961,0.967660873642736,0.967800506824406,0.967939481034939,0.968077799773840,0.968215466519302,0.968352484728355,0.968488857837010,0.968624589260409,0.968759682392970,0.968894140608528,0.969027967260483,0.969161165681936,0.969293739185835,0.969425691065112,0.969557024592820,0.969687743022276,0.969817849587190,0.969947347501806,0.970076239961035,0.970204530140587,0.970332221197102,0.970459316268287,0.970585818473037,0.970711730911575,0.970837056665570,0.970961798798270,0.971085960354628,0.971209544361425,0.971332553827393,0.971454991743346,0.971576861082290,0.971698164799557,0.971818905832916,0.971939087102697,0.972058711511910,0.972177781946360,0.972296301274765,0.972414272348874,0.972531698003577,0.972648581057026,0.972764924310741,0.972880730549728,0.972996002542588,0.973110743041627,0.973224954782968,0.973338640486660,0.973451802856782,0.973564444581555,0.973676568333449,0.973788176769283,0.973899272530336,0.974009858242448,0.974119936516125,0.974229509946639,0.974338581114133,0.974447152583720,0.974555226905582,0.974662806615074,0.974769894232819,0.974876492264805,0.974982603202487,0.975088229522879,0.975193373688653,0.975298038148231,0.975402225335882,0.975505937671815,0.975609177562271,0.975711947399617,0.975814249562435,0.975916086415616,0.976017460310448,0.976118373584707,0.976218828562744,0.976318827555575,0.976418372860967,0.976517466763529,0.976616111534792,0.976714309433298,0.976812062704687,0.976909373581777,0.977006244284652,0.977102677020741,0.977198673984903,0.977294237359509,0.977389369314524,0.977484072007585,0.977578347584082,0.977672198177240,0.977765625908194,0.977858632886072,0.977951221208068,0.978043392959523,0.978135150213998,0.978226495033355,0.978317429467828,0.978407955556099,0.978498075325375,0.978587790791458,0.978677103958823,0.978766016820685,0.978854531359077,0.978942649544919,0.979030373338087,0.979117704687488,0.979204645531130,0.979291197796188,0.979377363399073,0.979463144245509,0.979548542230591,0.979633559238856,0.979718197144355,0.979802457810712,0.979886343091196,0.979969854828785,0.980052994856231,0.980135764996123,0.980218167060957,0.980300202853193,0.980381874165323,0.980463182779933,0.980544130469765,0.980624718997779,0.980704950117214,0.980784825571653,0.980864347095078,0.980943516411935,0.981022335237191,0.981100805276397,0.981178928225740,0.981256705772112,0.981334139593159,0.981411231357343,0.981487982723999,0.981564395343393,0.981640470856775,0.981716210896438,0.981791617085776,0.981866691039334,0.981941434362866,0.982015848653390,0.982089935499241,0.982163696480127,0.982237133167180,0.982310247123007,0.982383039901752,0.982455513049136,0.982527668102518,0.982599506590944,0.982671030035196,0.982742239947848,0.982813137833309,0.982883725187881,0.982954003499805,0.983023974249309,0.983093638908661,0.983162998942216,0.983232055806461,0.983300810950072,0.983369265813951,0.983437421831281,0.983505280427573,0.983572843020706,0.983640111020982,0.983707085831166,0.983773768846536,0.983840161454926,0.983906265036770,0.983972080965153,0.984037610605846,0.984102855317361,0.984167816450986,0.984232495350835,0.984296893353885,0.984361011790027,0.984424851982101,0.984488415245946,0.984551702890434,0.984614716217520,0.984677456522277,0.984739925092941,0.984802123210953,0.984864052150994,0.984925713181035,0.984987107562366,0.985048236549646,0.985109101390936,0.985169703327743,0.985230043595053,0.985290123421378,0.985349944028789,0.985409506632955
+};
+
+double MI_map_64qam_axis[MI_MAP_64QAM_SIZE] = {
+  6.30000000000000,6.51000000000000,6.72000000000000,6.93000000000000,7.14000000000000,7.35000000000000,7.56000000000000,7.77000000000000,7.98000000000000,8.19000000000000,8.40000000000000,8.61000000000000,8.82000000000000,9.03000000000000,9.24000000000000,9.45000000000000,9.66000000000000,9.87000000000000,10.0800000000000,10.2900000000000,10.5000000000000,10.7100000000000,10.9200000000000,11.1300000000000,11.3400000000000,11.5500000000000,11.7600000000000,11.9700000000000,12.1800000000000,12.3900000000000,12.6000000000000,12.8100000000000,13.0200000000000,13.2300000000000,13.4400000000000,13.6500000000000,13.8600000000000,14.0700000000000,14.2800000000000,14.4900000000000,14.7000000000000,14.9100000000000,15.1200000000000,15.3300000000000,15.5400000000000,15.7500000000000,15.9600000000000,16.1700000000000,16.3800000000000,16.5900000000000,16.8000000000000,17.0100000000000,17.2200000000000,17.4300000000000,17.6400000000000,17.8500000000000,18.0600000000000,18.2700000000000,18.4800000000000,18.6900000000000,18.9000000000000,19.1100000000000,19.3200000000000,19.5300000000000,19.7400000000000,19.9500000000000,20.1600000000000,20.3700000000000,20.5800000000000,20.7900000000000,21,21.2100000000000,21.4200000000000,21.6300000000000,21.8400000000000,22.0500000000000,22.2600000000000,22.4700000000000,22.6800000000000,22.8900000000000,23.1000000000000,23.3100000000000,23.5200000000000,23.7300000000000,23.9400000000000,24.1500000000000,24.3600000000000,24.5700000000000,24.7800000000000,24.9900000000000,25.2000000000000,25.4100000000000,25.6200000000000,25.8300000000000,26.0400000000000,26.2500000000000,26.4600000000000,26.6700000000000,26.8800000000000,27.0900000000000,27.3000000000000,27.5100000000000,27.7200000000000,27.9300000000000,28.1400000000000,28.3500000000000,28.5600000000000,28.7700000000000,28.9800000000000,29.1900000000000,29.4000000000000,29.6100000000000,29.8200000000000,30.0300000000000,30.2400000000000,30.4500000000000,30.6600000000000,30.8700000000000,31.0800000000000,31.2900000000000,31.5000000000000,31.7100000000000,31.9200000000000,32.1300000000000,32.3400000000000,32.5500000000000,32.7600000000000,32.9700000000000,33.1800000000000,33.3900000000000,33.6000000000000,33.8100000000000,34.0200000000000,34.2300000000000,34.4400000000000,34.6500000000000,34.8600000000000,35.0700000000000,35.2800000000000,35.4900000000000,35.7000000000000,35.9100000000000,36.1200000000000,36.3300000000000,36.5400000000000,36.7500000000000,36.9600000000000,37.1700000000000,37.3800000000000,37.5900000000000,37.8000000000000,38.0100000000000,38.2200000000000,38.4300000000000,38.6400000000000,38.8500000000000,39.0600000000000,39.2700000000000,39.4800000000000,39.6900000000000,39.9000000000000,40.1100000000000,40.3200000000000,40.5300000000000,40.7400000000000,40.9500000000000,41.1600000000000,41.3700000000000,41.5800000000000,41.7900000000000,42.0000000000000,42.2100000000000,42.4200000000000,42.6300000000000,42.8400000000000,43.0500000000000,43.2600000000000,43.4700000000000,43.6800000000000,43.8900000000000,44.1000000000000,44.3100000000000,44.5200000000000,44.7300000000000,44.9400000000000,45.1500000000000,45.3600000000000,45.5700000000000,45.7800000000000,45.9900000000000,46.2000000000000,46.4100000000000,46.6200000000000,46.8300000000000,47.0400000000000,47.2500000000000,47.4600000000000,47.6700000000000,47.8800000000000,48.0900000000000,48.3000000000000,48.5100000000000,48.7200000000000,48.9300000000000,49.1400000000000,49.3500000000000,49.5600000000000,49.7700000000000,49.9800000000000,50.1900000000000,50.4000000000000,50.6100000000000,50.8200000000000,51.0300000000000,51.2400000000000,51.4500000000000,51.6600000000000,51.8700000000000,52.0800000000000,52.2900000000000,52.5000000000000,52.7100000000000,52.9200000000000,53.1300000000000,53.3400000000000,53.5500000000000,53.7600000000000,53.9700000000000,54.1800000000000,54.3900000000000,54.6000000000000,54.8100000000000,55.0200000000000,55.2300000000000,55.4400000000000,55.6500000000000,55.8600000000000,56.0700000000000,56.2800000000000,56.4900000000000,56.7000000000000,56.9100000000000,57.1200000000000,57.3300000000000,57.5400000000000,57.7500000000000,57.9600000000000,58.1700000000000,58.3800000000000,58.5900000000000,58.8000000000000,59.0100000000000,59.2200000000000,59.4300000000000,59.6400000000000,59.8500000000000,60.0600000000000,60.2700000000000,60.4800000000000,60.6900000000000,60.9000000000000,61.1100000000000,61.3200000000000,61.5300000000000,61.7400000000000,61.9500000000000,62.1600000000000,62.3700000000000,62.5800000000000,62.7900000000000,63.0000000000000,63.2100000000000,63.4200000000000,63.6300000000000,63.8400000000000,64.0500000000000,64.2600000000000,64.4700000000000,64.6800000000000,64.8900000000000,65.1000000000000,65.3100000000000,65.5200000000000,65.7300000000000,65.9400000000000,66.1500000000000,66.3600000000000,66.5700000000000,66.7800000000000,66.9900000000000,67.2000000000000,67.4100000000000,67.6200000000000,67.8300000000000,68.0400000000000,68.2500000000000,68.4600000000000,68.6700000000000,68.8800000000000,69.0900000000000,69.3000000000000,69.5100000000000,69.7200000000000,69.9300000000000,70.1400000000000,70.3500000000000,70.5600000000000,70.7700000000000,70.9800000000000,71.1900000000000,71.4000000000000,71.6100000000000,71.8200000000000,72.0300000000000,72.2400000000000,72.4500000000000,72.6600000000000,72.8700000000000,73.0800000000000,73.2900000000000,73.5000000000000,73.7100000000000,73.9200000000000,74.1300000000000,74.3400000000000,74.5500000000000,74.7600000000000,74.9700000000000,75.1800000000000,75.3900000000000,75.6000000000000,75.8100000000000,76.0200000000000,76.2300000000000,76.4400000000000,76.6500000000000,76.8600000000000,77.0700000000000,77.2800000000000,77.4900000000000,77.7000000000000,77.9100000000000,78.1200000000000,78.3300000000000,78.5400000000000,78.7500000000000,78.9600000000000,79.1700000000000,79.3800000000000,79.5900000000000,79.8000000000000,80.0100000000000,80.2200000000000,80.4300000000000,80.6400000000000,80.8500000000000,81.0600000000000,81.2700000000000,81.4800000000000,81.6900000000000,81.9000000000000,82.1100000000000,82.3200000000000,82.5300000000000,82.7400000000000,82.9500000000000,83.1600000000000,83.3700000000000,83.5800000000000,83.7900000000000,84,84.2100000000000,84.4200000000000,84.6300000000000,84.8400000000000,85.0500000000000,85.2600000000000,85.4700000000000,85.6800000000000,85.8900000000000,86.1000000000000,86.3100000000000,86.5200000000000,86.7300000000000,86.9400000000000,87.1500000000000,87.3600000000000,87.5700000000000,87.7800000000000,87.9900000000000,88.2000000000000,88.4100000000000,88.6200000000000,88.8300000000000,89.0400000000000,89.2500000000000,89.4600000000000,89.6700000000000,89.8800000000000,90.0900000000000,90.3000000000000,90.5100000000000,90.7200000000000,90.9300000000000,91.1400000000000,91.3500000000000,91.5600000000000,91.7700000000000,91.9800000000000,92.1900000000000,92.4000000000000,92.6100000000000,92.8200000000000,93.0300000000000,93.2400000000000,93.4500000000000,93.6600000000000,93.8700000000000,94.0800000000000,94.2900000000000,94.5000000000000,94.7100000000000,94.9200000000000,95.1300000000000,95.3400000000000,95.5500000000000,95.7600000000000,95.9700000000000,96.1800000000000,96.3900000000000,96.6000000000000,96.8100000000000,97.0200000000000,97.2300000000000,97.4400000000000,97.6500000000000,97.8600000000000,98.0700000000000,98.2800000000000,98.4900000000000,98.7000000000000,98.9100000000000,99.1200000000000,99.3300000000000,99.5400000000000,99.7500000000000,99.9600000000000,100.170000000000,100.380000000000,100.590000000000,100.800000000000,101.010000000000,101.220000000000,101.430000000000,101.640000000000,101.850000000000,102.060000000000,102.270000000000,102.480000000000,102.690000000000,102.900000000000,103.110000000000,103.320000000000,103.530000000000,103.740000000000,103.950000000000,104.160000000000,104.370000000000,104.580000000000,104.790000000000,105,105.210000000000,105.420000000000,105.630000000000,105.840000000000,106.050000000000,106.260000000000,106.470000000000,106.680000000000,106.890000000000,107.100000000000,107.310000000000,107.520000000000,107.730000000000,107.940000000000,108.150000000000,108.360000000000,108.570000000000,108.780000000000,108.990000000000,109.200000000000,109.410000000000,109.620000000000,109.830000000000,110.040000000000,110.250000000000,110.460000000000,110.670000000000,110.880000000000,111.090000000000,111.300000000000,111.510000000000,111.720000000000,111.930000000000,112.140000000000,112.350000000000,112.560000000000,112.770000000000,112.980000000000,113.190000000000,113.400000000000,113.610000000000,113.820000000000,114.030000000000,114.240000000000,114.450000000000,114.660000000000,114.870000000000,115.080000000000,115.290000000000,115.500000000000,115.710000000000,115.920000000000,116.130000000000,116.340000000000,116.550000000000,116.760000000000,116.970000000000,117.180000000000,117.390000000000,117.600000000000,117.810000000000,118.020000000000,118.230000000000,118.440000000000,118.650000000000,118.860000000000,119.070000000000,119.280000000000,119.490000000000,119.700000000000,119.910000000000,120.120000000000,120.330000000000,120.540000000000,120.750000000000,120.960000000000,121.170000000000,121.380000000000,121.590000000000,121.800000000000,122.010000000000,122.220000000000,122.430000000000,122.640000000000,122.850000000000,123.060000000000,123.270000000000,123.480000000000,123.690000000000,123.900000000000,124.110000000000,124.320000000000,124.530000000000,124.740000000000,124.950000000000,125.160000000000,125.370000000000,125.580000000000,125.790000000000,126,126.210000000000,126.420000000000,126.630000000000,126.840000000000,127.050000000000,127.260000000000,127.470000000000,127.680000000000,127.890000000000,128.100000000000,128.310000000000,128.520000000000,128.730000000000,128.940000000000,129.150000000000,129.360000000000,129.570000000000,129.780000000000,129.990000000000,130.200000000000,130.410000000000,130.620000000000,130.830000000000,131.040000000000,131.250000000000,131.460000000000,131.670000000000,131.880000000000,132.090000000000,132.300000000000,132.510000000000,132.720000000000,132.930000000000,133.140000000000,133.350000000000,133.560000000000,133.770000000000,133.980000000000,134.190000000000,134.400000000000,134.610000000000,134.820000000000,135.030000000000,135.240000000000,135.450000000000,135.660000000000,135.870000000000,136.080000000000,136.290000000000,136.500000000000,136.710000000000,136.920000000000,137.130000000000,137.340000000000,137.550000000000,137.760000000000,137.970000000000,138.180000000000,138.390000000000,138.600000000000,138.810000000000,139.020000000000,139.230000000000,139.440000000000,139.650000000000,139.860000000000,140.070000000000,140.280000000000,140.490000000000,140.700000000000,140.910000000000,141.120000000000,141.330000000000,141.540000000000,141.750000000000,141.960000000000,142.170000000000,142.380000000000,142.590000000000,142.800000000000,143.010000000000,143.220000000000,143.430000000000,143.640000000000,143.850000000000,144.060000000000,144.270000000000,144.480000000000,144.690000000000,144.900000000000,145.110000000000,145.320000000000,145.530000000000,145.740000000000,145.950000000000,146.160000000000,146.370000000000,146.580000000000,146.790000000000,147,147.210000000000,147.420000000000,147.630000000000,147.840000000000,148.050000000000,148.260000000000,148.470000000000,148.680000000000,148.890000000000,149.100000000000,149.310000000000,149.520000000000,149.730000000000,149.940000000000,150.150000000000,150.360000000000,150.570000000000,150.780000000000,150.990000000000,151.200000000000,151.410000000000,151.620000000000,151.830000000000,152.040000000000,152.250000000000,152.460000000000,152.670000000000,152.880000000000,153.090000000000,153.300000000000,153.510000000000,153.720000000000,153.930000000000,154.140000000000,154.350000000000,154.560000000000,154.770000000000,154.980000000000,155.190000000000,155.400000000000,155.610000000000,155.820000000000,156.030000000000,156.240000000000,156.450000000000,156.660000000000,156.870000000000,157.080000000000,157.290000000000,157.500000000000,157.710000000000,157.920000000000,158.130000000000,158.340000000000
+};
+
+
+
+
+double bEcrTable [9][29] = {
   // CB of 40 bits
   {
-    0.2346, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000,
+    0.1777, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000,
     -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000,
-    -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000
+    -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000,
+    -1.000, -1.000
   },  
   // CB of 104 bits
   {
-  0.1897, 0.2628, 0.3270, 0.3732, 0.4743, 0.5855, -1.000, -1.000, -1.000,
-  -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000,
-  -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000
+    0.1423, 0.1753, 0.1882, 0.2499, -1.000, -1.000, -1.000, -1.000, -1.000,
+    -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000,
+    -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000,
+    -1.000, -1.000    
   },
   // CB of 160
   {
-    0.1806, 0.2501, 0.3115, 0.3565, 0.4519, 0.5580, 0.6471, 0.7317, 0.8101,
-    0.8449, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, 
-    -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000
+    0.1354, 0.1655, 0.1812, 0.2351, 0.2873, 0.3462, -1.000, -1.000, -1.000,
+    -1.0000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, 
+    -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000,
+    -1.000, -1.000        
   },
   // CB of 256
   {
-    0.1733, 0.2406, 0.3009, 0.3442, 0.4312, 0.5341, 0.6207, 0.7054, 0.7813,
-    0.8483, 0.5288, 0.5599, 0.6001, 0.6380, -1.000, -1.000, -1.000, -1.000, 
-    -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000
+    0.1304, 0.1584, 0.1735, 0.2265, 0.2782, 0.3340, 0.3927, 0.4785, 0.5566,
+    -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, 
+    -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000,
+    -1.000, -1.000        
   },
   // CB of 512
   {
-    0.1669, 0.2309, 0.2916, 0.3334, 0.4139, 0.5148, 0.5984, 0.6810, 0.7559,
-    0.8163, 0.5047, 0.5352, 0.5754, 0.6153, 0.6544, 0.6836, 0.7295, 0.7890,
-    0.8516, 0.6533, 0.6897, 0.7260, -1.000, -1.000, -1.000, -1.000, -1.000
+    0.1257, 0.1528, 0.1667, 0.2188, 0.2680, 0.3229, 0.3818, 0.4607, 0.5373,
+    0.6081, 0.7451, 0.4049, 0.4472, 0.4975, -1.000, -1.000, -1.000, -1.000,
+    -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000,
+    -1.000, -1.000        
   },
   // CB of 1024
   {
-    0.1639, 0.2264, 0.2871, 0.3288, 0.4049, 0.5053, 0.5873, 0.6681, 0.7455,
-    0.8040, 0.4987, 0.5275, 0.5648, 0.6037, 0.6422, 0.6717, 0.7182, 0.7770,
-    0.8393, 0.6378, 0.6769, 0.7151, 0.7517, 0.7838, 0.8391, 0.8837, 0.9320
+    0.1224, 0.1497, 0.1638, 0.2139, 0.2636, 0.3195, 0.3768, 0.4520, 0.5269,
+    0.5963, 0.7412, 0.3979, 0.4399, 0.4894, 0.6422, 0.6034, 0.6619, 0.7538,
+    0.7743, 0.5627, 0.6089, 0.6577, 0.7049, 0.7508, -1.000, -1.000, -1.000,
+    -1.000, -1.000            
   },
   // CB of 2560
   {
-    0.1617, 0.2237, 0.2842, 0.3257, 0.3995, 0.4997, 0.5809, 0.6607, 0.7369,
-    0.7980, 0.4944, 0.5234, 0.5602, 0.5973, 0.6365, 0.6649, 0.7105, 0.7711, 
-    0.8308, 0.6339, 0.6699, 0.7069, 0.7435, 0.7788, 0.8312, 0.8737, 0.9196
+    0.1211, 0.1480, 0.1615, 0.2119, 0.2611, 0.3157, 0.3735, 0.4458, 0.5205,
+    0.5902, 0.7376, 0.3939, 0.4351, 0.4851, 0.6365, 0.5976, 0.6554, 0.7442, 
+    0.7701, 0.5619, 0.6056, 0.6521, 0.6982, 0.7441, 0.7874, 0.8315, 0.8735,
+    0.9089, 0.9369            
   },
   // CB of 4032
   {
-    0.1612, 0.2235, 0.2837, 0.3254, 0.3982, 0.4981, 0.5793, 0.6589, 0.7349,
-    0.7959, 0.4949, 0.5215, 0.5566, 0.5939, 0.6535, 0.6621, 0.7081, 0.7692, 
-    0.8281, 0.6313, 0.6695, 0.7076, 0.7435, 0.7788, 0.8296, 0.8703, 0.9168
+    0.1208, 0.1477, 0.1612, 0.2112, 0.2606, 0.3153, 0.3728, 0.4441, 0.5185,
+    0.5882, 0.7349, 0.3921, 0.4338, 0.4871, 0.6535, 0.5940, 0.6527, 0.7430, 
+    0.7699, 0.5591, 0.6027, 0.6512, 0.6981, 0.7437, 0.7873, 0.8301, 0.8702,
+    0.9082, 0.9339            
   },
   // CB of 6144
   {
-    0.1611, 0.2233, 0.2835, 0.3253, 0.3980, 0.4978, 0.5786, 0.6578, 0.7342,
-    0.7947, 0.4930, 0.5222, 0.5588, 0.5952, 0.6339, 0.6625, 0.7085, 0.7689, 
-    0.8273, 0.6306, 0.6674, 0.7045, 0.7404, 0.7757, 0.8283, 0.8690, 0.9153
+    0.1207, 0.1474, 0.1612, 0.2111, 0.2605, 0.3153, 0.3726, 0.4439, 0.5193,
+    0.5882, 0.7369, 0.3921, 0.4339, 0.4833, 0.6339, 0.5952, 0.6528, 0.7420, 
+    0.7664, 0.5600, 0.6027, 0.6494, 0.6948, 0.7407, 0.7842, 0.8284, 0.8692,
+    0.9058, 0.9325            
   },
-
 };
-
-
-double cEcrTable [9][27] = {
+  
+  
+double cEcrTable [9][29] = {
   // CB of 40 bits
   {
-    0.0435, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000,
+    0.0342, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000,
     -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000,
-    -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000
+    -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000,
+    -1.000, -1.000            
   },
   // CB of 104 bits
   {
-    0.0257, 0.0342, 0.0410, 0.0434, 0.0516, 0.0578, -1.000, -1.000, -1.000,
+    0.0198, 0.0239, 0.0248, 0.0320, -1.000, -1.000, -1.000, -1.000, -1.000,
     -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000,
-    -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000
+    -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000,
+    -1.000, -1.000            
   },
   // CB of 160 bits
   {
-    0.0205, 0.0275, 0.0332, 0.0357, 0.0414, 0.0471, 0.0500, 0.0499, 0.0472,
-    0.0424, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, 
-    -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000
+    0.0157, 0.0190, 0.0204, 0.0252, 0.0310, 0.0348, -1.0000, -1.000, -1.000,
+    -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, 
+    -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000,
+    -1.000, -1.000            
   },
   // CB of 256 bits
   {
-    0.0160, 0.0216, 0.0263, 0.0291, 0.0330, 0.0378, 0.0396, 0.0411, 0.0401,
-    0.0364, 0.0314, 0.0336, 0.0346, 0.0361, -1.000, -1.000, -1.000, -1.000, 
-    -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000
+    0.0123, 0.0149, 0.0163, 0.0212, 0.0252, 0.0298, 0.0304, 0.0341, 0.0382,
+    -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, 
+    -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000,
+    -1.000, -1.000            
   },
   // CB of 512 bits
   {
-    0.0111, 0.0148, 0.0189, 0.0206, 0.0230, 0.0267, 0.0280, 0.0294, 0.0295, 
-    0.0281, 0.0229, 0.0235, 0.0247, 0.0252, 0.0257, 0.0269, 0.0272, 0.0263,
-    0.0246, 0.0236, 0.0253, 0.0255, -1.000, -1.000, -1.000, -1.000, -1.000
+    0.0085, 0.0106, 0.0109, 0.0140, 0.0178, 0.0217, 0.0219, 0.0249, 0.0270, 
+    0.0292, 0.0293, 0.0206, 0.0220, 0.0235, 0.0257, -1.000, -1.000, -1.000,
+    -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000,
+    -1.000, -1.000            
   },
   // CB of 1024 bits
   {
-    0.0079, 0.0105, 0.0133, 0.0148, 0.0159, 0.0183, 0.0197, 0.0211, 0.0213,
-    0.0206, 0.0164, 0.0167, 0.0174, 0.0181, 0.0183, 0.0187, 0.0196, 0.0193,
-    0.0184, 0.0171, 0.0179, 0.0187, 0.0192, 0.0187, 0.0182, 0.0169, 0.0139
+    0.0061, 0.0074, 0.0078, 0.0102, 0.0121, 0.0138, 0.0163, 0.0178, 0.0207,
+    0.0198, 0.0203, 0.0137, 0.0154, 0.0164, 0.0183, 0.0188, 0.0188, 0.0220,
+    0.0215, 0.0157, 0.0169, 0.0185, 0.0189, 0.0200, -1.000, -1.000, -1.000,
+    -1.000, -1.000            
   },
   // CB of 2560 bits
   {
-    0.0051, 0.0065, 0.0083, 0.0095, 0.0103, 0.0118, 0.0126, 0.0129, 0.0134,
-    0.0131, 0.0101, 0.0106, 0.0109, 0.0111, 0.0116, 0.0118, 0.0125, 0.0122,
-    0.0118, 0.0105, 0.0114, 0.0115, 0.0119, 0.0120, 0.0116, 0.0107, 0.0096
+    0.0040, 0.0047, 0.0050, 0.0063, 0.0079, 0.0091, 0.0101, 0.0117, 0.0123,
+    0.0129, 0.0123, 0.0091, 0.0095, 0.0102, 0.0116, 0.0114, 0.0119, 0.0116,
+    0.0123, 0.0096, 0.0104, 0.0109, 0.0108, 0.0118, 0.0122, 0.0117, 0.0110,
+    0.0097, 0.0085            
   },
   // CB of 4032 bits
   {
-    0.0040, 0.0053, 0.0067, 0.0075, 0.0082, 0.0096, 0.0101, 0.0107, 0.0108,
-    0.0105, 0.0086, 0.0087, 0.0087, 0.0090, 0.0095, 0.0094, 0.0100, 0.0099,
-    0.0096, 0.0086, 0.0092, 0.0094, 0.0095, 0.0097, 0.0091, 0.0086, 0.0078
+    0.0032, 0.0038, 0.0039, 0.0051, 0.0063, 0.0072, 0.0079, 0.0084, 0.0100,
+    0.0106, 0.0106, 0.0074, 0.0078, 0.0090, 0.0095, 0.0089, 0.0092, 0.0101,
+    0.0096, 0.0080, 0.0081, 0.0090, 0.0091, 0.0095, 0.0096, 0.0094, 0.0086,
+    0.0078, 0.0071            
   },
   // CB of 6144 bits
   {
-    0.0032, 0.0044, 0.0054, 0.0062, 0.0069, 0.0077, 0.0083, 0.0087, 0.0088,
-    0.0083, 0.0068, 0.0069, 0.0073, 0.0073, 0.0077, 0.0079, 0.0080, 0.0080,
-    0.0078, 0.0068, 0.0073, 0.0075, 0.0077, 0.0079, 0.0075, 0.0067, 0.0063
+    0.0025, 0.0032, 0.0032, 0.0042, 0.0054, 0.0059, 0.0064, 0.0073, 0.0081,
+    0.0076, 0.0083, 0.0058, 0.0064, 0.0070, 0.0077, 0.0074, 0.0080, 0.0080,
+    0.0080, 0.0061, 0.0066, 0.0069, 0.0080, 0.0081, 0.0080, 0.0077, 0.0068,
+    0.0066, 0.0058            
   }
-  
+    
 };
 
 
@@ -227,11 +252,11 @@
       if (mcs <= 10) // QPSK
         {
           int tr = 0;
-          while ((tr<MI_MAP_QPSK_SIZE)&&(MI_map_qpsk_axis[tr] < sinr_db))
+          while ((tr<MI_MAP_QPSK_SIZE)&&(MI_map_qpsk_axis[tr] < sinrLin))
             {
               tr++;
             }
-          if (sinr_db > MI_map_qpsk_axis[MI_MAP_QPSK_SIZE-1])
+          if (sinrLin > MI_map_qpsk_axis[MI_MAP_QPSK_SIZE-1])
             {
               MI = 1;
             }
@@ -246,11 +271,11 @@
           if (mcs > 10 && mcs < 20 )	// 16-QAM
             {
               int tr = 0;
-              while ((tr<MI_MAP_16QAM_SIZE)&&(MI_map_16qam_axis[tr] < sinr_db))
+              while ((tr<MI_MAP_16QAM_SIZE)&&(MI_map_16qam_axis[tr] < sinrLin))
                 {
                   tr++;
                 }
-              if (sinr_db > MI_map_16qam_axis[MI_MAP_16QAM_SIZE-1])
+              if (sinrLin > MI_map_16qam_axis[MI_MAP_16QAM_SIZE-1])
                 {
                   MI = 1;
                 }
@@ -263,11 +288,11 @@
           else // 64-QAM
             {
               int tr = 0;
-              while ((tr<MI_MAP_64QAM_SIZE)&&(MI_map_64qam_axis[tr] < sinr_db))
+              while ((tr<MI_MAP_64QAM_SIZE)&&(MI_map_64qam_axis[tr] < sinrLin))
                 {
                   tr++;
                 }
-              if (sinr_db > MI_map_64qam_axis[MI_MAP_64QAM_SIZE-1])
+              if (sinrLin > MI_map_64qam_axis[MI_MAP_64QAM_SIZE-1])
                 {
                   MI = 1;
                 }
@@ -278,7 +303,7 @@
                 }
             }
         }
-     NS_LOG_LOGIC (" RB " << map.at (i) << "Minimum SNR = " << sinr_db << " dB, MCS = " << (uint16_t)mcs << ", MI = " << MI);
+      NS_LOG_LOGIC (" RB " << map.at (i) << "Minimum SNR = " << sinr_db << " V, MCS = " << (uint16_t)mcs << ", MI = " << MI);
       MIsum += MI;
     }
   MI = MIsum / map.size ();
@@ -293,17 +318,17 @@
   NS_LOG_FUNCTION (mib << (uint32_t) mcs << (uint32_t) cbSize);
   double b = 0;
   double c = 0;
-  NS_ASSERT_MSG (mcs < 32, "MCS out of range");
+  NS_ASSERT_MSG (mcs < 29, "MCS out of range [0..28]");
   int tbsIndex = TbsIndex[mcs];
   int cbIndex = 1;
-  while ((cbIndex < 9)&&(cbMiSizeTable[cbIndex]< cbSize))
+  while ((cbIndex < 9)&&(cbMiSizeTable[cbIndex]<= cbSize))
     {
       cbIndex++;
     }
   cbIndex--;
   NS_LOG_LOGIC (" MCS " << (uint16_t)mcs << " TBS " << tbsIndex << " CB size " << cbSize << " CB size curve " << cbMiSizeTable[cbIndex]);
 
-  b = bEcrTable[cbIndex][tbsIndex];
+  b = bEcrTable[cbIndex][mcs];
   if (b<0.0)
     {
       //take the lowest CB size including this CB for removing CB size
@@ -311,10 +336,10 @@
       int i = cbIndex;
       while ((i<9)&&(b<0))
         {
-          b = bEcrTable[i++][tbsIndex];
+          b = bEcrTable[i++][mcs];
         }
     }
-  c = cEcrTable[cbIndex][tbsIndex];
+  c = cEcrTable[cbIndex][mcs];
   if (c<0.0)
     {
       //take the lowest CB size including this CB for removing CB size
@@ -322,12 +347,12 @@
       int i = cbIndex;
       while ((i<9)&&(c<0))
         {
-          c = cEcrTable[i++][tbsIndex];
+          c = cEcrTable[i++][mcs];
         }
     }
   // see IEEE802.16m EMD formula 55 of section 4.3.2.1
   double bler = 0.5*( 1 - erf((mib-b)/(sqrt(2)*c)) );
-  NS_LOG_LOGIC ("MIB: " << mib << " BLER:" << bler);
+  NS_LOG_LOGIC ("MIB: " << mib << " BLER:" << bler << " b:" << b << " c:" << c);
   return bler;
 }
 
@@ -432,16 +457,10 @@
   double errorRate = 1.0;
   if (C!=1)
     {
-        for (uint32_t i = 0; i < Cplus; i++)
-        {
-          double cbler = MappingMiBler (MI, mcs, Kplus);
-          errorRate *= (1.0 - cbler);
-        }
-      for (uint32_t i = 0; i < Cminus; i++)
-        {
-          double cbler = MappingMiBler (MI, mcs, Kminus);
-          errorRate *= (1.0 - cbler);
-        }
+      double cbler = MappingMiBler (MI, mcs, Kplus);
+      errorRate *= pow (1.0 - cbler, Cplus);
+      cbler = MappingMiBler (MI, mcs, Kminus);
+      errorRate *= pow (1.0 - cbler, Cminus);
       errorRate = 1.0 - errorRate;
     }
   else
--- a/src/lte/model/lte-mi-error-model.h	Fri May 18 10:30:14 2012 +0200
+++ b/src/lte/model/lte-mi-error-model.h	Tue May 29 10:42:17 2012 +0200
@@ -44,9 +44,9 @@
 
 namespace ns3 {
   
-  const uint16_t MI_MAP_QPSK_SIZE = 411;
-  const uint16_t MI_MAP_16QAM_SIZE = 601;
-  const uint16_t MI_MAP_64QAM_SIZE = 676;
+  const uint16_t MI_MAP_QPSK_SIZE = 766;
+  const uint16_t MI_MAP_16QAM_SIZE = 843;
+  const uint16_t MI_MAP_64QAM_SIZE = 725;
   
 
 
--- a/src/lte/test/lte-test-phy-error-model.cc	Fri May 18 10:30:14 2012 +0200
+++ b/src/lte/test/lte-test-phy-error-model.cc	Tue May 29 10:42:17 2012 +0200
@@ -46,6 +46,7 @@
 #include <ns3/config.h>
 #include <ns3/boolean.h>
 #include <ns3/enum.h>
+#include <ns3/unused.h>
 
 
 NS_LOG_COMPONENT_DEFINE ("LenaTestPhyErrorModel");
@@ -58,22 +59,19 @@
 {
   NS_LOG_INFO ("creating LenaTestPhyErrorModelTestCase");
 
-  // MCS 2 TB size of 256 bits BER 0.19 SINR -2.21
-   AddTestCase (new LenaPhyErrorModelTestCase (4, 898, 32, 0.19, 25));
-// MCS 2 TB size of 328 bits BER 0.09 SINR -2.25
-   AddTestCase (new LenaPhyErrorModelTestCase (3, 900, 41, 0.09, 18));
-// MCS 2 TB size of 520 bits BER 0.123 SINR -2.61
-   AddTestCase (new LenaPhyErrorModelTestCase (2, 920, 65, 0.123, 21));
-// MCS 2 TB size of 1080 bits BER 0.097 SINR -2.79
-   AddTestCase (new LenaPhyErrorModelTestCase (1, 930, 135, 0.097, 19));
-  // MCS 12 TB size of 4776 bits  BER 0.017  SINR 6.22
-   AddTestCase (new LenaPhyErrorModelTestCase (1, 538, 597, 0.017, 8));
-// MCS 12 TB size of 1608 bits  BER 0.23  SINR 6.22
-  AddTestCase (new LenaPhyErrorModelTestCase (3, 538, 201, 0.23, 26));
-  // MCS 12 TB size of 376 bits  BER 0.72  SINR 6.22
-   AddTestCase (new LenaPhyErrorModelTestCase (7,538, 47, 0.72, 28));
-// MCS 14 TB size of 6248 bits (3136 x 2) BER 0.18 (0.096 x 2) SINR 5.53
-   AddTestCase (new LenaPhyErrorModelTestCase (1, 500, 781, 0.18, 24));
+  // MCS 2 TB size of 256 bits BER 0.33 SINR -5.51
+   AddTestCase (new LenaPhyErrorModelTestCase (4, 1800, 32, 0.33, 29));
+// MCS 2 TB size of 528 bits BER 0.11 SINR -5.51
+   AddTestCase (new LenaPhyErrorModelTestCase (2, 1800, 66, 0.11, 20));
+// MCS 2 TB size of 1088 bits BER 0.02 SINR -5.51
+  AddTestCase (new LenaPhyErrorModelTestCase (1, 1800, 136, 0.02, 9));
+  // MCS 12 TB size of 4800 bits  BER 0.3  SINR 4.43
+   AddTestCase (new LenaPhyErrorModelTestCase (1, 600, 600, 0.3, 29));
+// MCS 12 TB size of 1632 bits  BER 0.55  SINR 4.43
+  AddTestCase (new LenaPhyErrorModelTestCase (3, 600, 204, 0.55, 31));
+// MCS 16 TB size of 7272 bits (3648 x 3584) BER 0.14 SINR 8.48
+// BER 0.14 = 1 - ((1-0.075)*(1-0.075))
+   AddTestCase (new LenaPhyErrorModelTestCase (1, 470, 781, 0.14, 22));
 
  
 
@@ -107,7 +105,7 @@
 LenaPhyErrorModelTestCase::DoRun (void)
 {
   
-   double ber = 0.01;
+   double ber = 0.03;
   Config::SetDefault ("ns3::LteAmc::Ber", DoubleValue (ber));
   Config::SetDefault ("ns3::LteAmc::AmcModel", EnumValue (LteAmc::PiroEW2010));
   Config::SetDefault ("ns3::LteSpectrumPhy::PemEnabled", BooleanValue (true));
@@ -153,6 +151,7 @@
 //   LogComponentEnable ("LteAmc", LOG_LEVEL_ALL);
 //   
   LogComponentDisableAll (LOG_LEVEL_ALL);
+  
   LogComponentEnable ("LenaTestPhyErrorModel", LOG_LEVEL_ALL);
 
 
@@ -242,9 +241,12 @@
       double txed = rlcStats->GetDlTxData (imsi, lcId);
       int n = txed / m_tbSize;
       int lambda = (double)dlDataRxed.at (i) / m_tbSize;
-      double ber = 2.0 - ((double)dlDataRxed.at (i)/txed);
+      double ber = 1.0 - ((double)dlDataRxed.at (i)/txed);
       double np = n-n*m_berRef;
-      NS_LOG_INFO ("\tUser " << i << " imsi " << imsi << " bytes rxed " << (double)dlDataRxed.at (i) << " txed " << txed << " BER " << ber << " Err " << fabs (m_berRef - ber) << " lambda " << lambda << " np " << np << " difference " << abs(lambda - np) << " quantile " << m_bernQuantile);
+      NS_LOG_INFO ("\tUser " << i << " imsi " << imsi << " bytes rxed " << (double)dlDataRxed.at (i) << " txed " << txed 
+        << " BER " << ber << " Err " << fabs (m_berRef - ber) << " lambda " << lambda 
+        << " np " << np << " difference " << abs(lambda - np) << " quantile " << m_bernQuantile);
+      NS_UNUSED (ber);
       // the quantiles are evaluated offline according to a Bernoulli 
       // ditribution with n equal to the number of packet sent and p equal 
       // to the BER (see /reference/bernuolliDistribution.m for details)
--- a/src/lte/test/lte-test-rlc-am-e2e.cc	Fri May 18 10:30:14 2012 +0200
+++ b/src/lte/test/lte-test-rlc-am-e2e.cc	Tue May 29 10:42:17 2012 +0200
@@ -114,8 +114,8 @@
 {
   uint16_t numberOfNodes = 1;
 
-  LogLevel level = (LogLevel) (LOG_LEVEL_ALL | LOG_PREFIX_TIME | LOG_PREFIX_NODE | LOG_PREFIX_FUNC);
-  LogComponentEnable ("LteRlcAmE2eTest", level);
+  // LogLevel level = (LogLevel) (LOG_LEVEL_ALL | LOG_PREFIX_TIME | LOG_PREFIX_NODE | LOG_PREFIX_FUNC);
+  // LogComponentEnable ("LteRlcAmE2eTest", level);
   // LogComponentEnable ("ErrorModel", level);
   // LogComponentEnable ("LteSimpleHelper", level);
   // LogComponentEnable ("LteSimpleNetDevice", level);
--- a/src/lte/test/lte-test-rlc-am-transmitter.cc	Fri May 18 10:30:14 2012 +0200
+++ b/src/lte/test/lte-test-rlc-am-transmitter.cc	Tue May 29 10:42:17 2012 +0200
@@ -38,8 +38,8 @@
 LteRlcAmTransmitterTestSuite::LteRlcAmTransmitterTestSuite ()
   : TestSuite ("lte-rlc-am-transmitter", SYSTEM)
 {
-  LogLevel logLevel = (LogLevel)(LOG_PREFIX_FUNC | LOG_PREFIX_TIME | LOG_LEVEL_ALL);
-  LogComponentEnable ("LteRlcAmTransmitterTest", logLevel);
+  // LogLevel logLevel = (LogLevel)(LOG_PREFIX_FUNC | LOG_PREFIX_TIME | LOG_LEVEL_ALL);
+  // LogComponentEnable ("LteRlcAmTransmitterTest", logLevel);
 
   AddTestCase (new LteRlcAmTransmitterOneSduTestCase ("One SDU, one PDU"));
   AddTestCase (new LteRlcAmTransmitterSegmentationTestCase ("Segmentation"));
@@ -63,12 +63,12 @@
 void
 LteRlcAmTransmitterTestCase::DoRun (void)
 {
-  LogLevel logLevel = (LogLevel)(LOG_PREFIX_FUNC | LOG_PREFIX_TIME | LOG_LEVEL_ALL);
-  LogComponentEnable ("LteRlcAmTransmitterTest", logLevel);
-  LogComponentEnable ("LteTestEntities", logLevel);
-  LogComponentEnable ("LteRlc", logLevel);
-  LogComponentEnable ("LteRlcAm", logLevel);
-  LogComponentEnable ("LteRlcHeader", logLevel);
+  // LogLevel logLevel = (LogLevel)(LOG_PREFIX_FUNC | LOG_PREFIX_TIME | LOG_LEVEL_ALL);
+  // LogComponentEnable ("LteRlcAmTransmitterTest", logLevel);
+  // LogComponentEnable ("LteTestEntities", logLevel);
+  // LogComponentEnable ("LteRlc", logLevel);
+  // LogComponentEnable ("LteRlcAm", logLevel);
+  // LogComponentEnable ("LteRlcHeader", logLevel);
 
   uint16_t rnti = 1111;
   uint8_t lcid = 222;
--- a/src/lte/test/lte-test-rlc-um-e2e.cc	Fri May 18 10:30:14 2012 +0200
+++ b/src/lte/test/lte-test-rlc-um-e2e.cc	Tue May 29 10:42:17 2012 +0200
@@ -111,8 +111,8 @@
 {
   uint16_t numberOfNodes = 1;
 
-  LogLevel level = (LogLevel) (LOG_LEVEL_ALL | LOG_PREFIX_TIME | LOG_PREFIX_NODE | LOG_PREFIX_FUNC);
-  LogComponentEnable ("LteRlcUmE2eTest", level);
+  // LogLevel level = (LogLevel) (LOG_LEVEL_ALL | LOG_PREFIX_TIME | LOG_PREFIX_NODE | LOG_PREFIX_FUNC);
+  // LogComponentEnable ("LteRlcUmE2eTest", level);
   // LogComponentEnable ("ErrorModel", level);
   // LogComponentEnable ("LteSimpleHelper", level);
   // LogComponentEnable ("LteSimpleNetDevice", level);
--- a/src/lte/test/lte-test-rr-ff-mac-scheduler.cc	Fri May 18 10:30:14 2012 +0200
+++ b/src/lte/test/lte-test-rr-ff-mac-scheduler.cc	Tue May 29 10:42:17 2012 +0200
@@ -316,9 +316,8 @@
       uint64_t imsi = ueDevs.Get (i)->GetObject<LteUeNetDevice> ()->GetImsi ();
       // get the lcId
       uint8_t lcId = ueDevs.Get (i)->GetObject<LteUeNetDevice> ()->GetRrc ()->GetLcIdVector ().at (0);
-      double txed = rlcStats->GetUlTxData (imsi, lcId);
       ulDataRxed.push_back (rlcStats->GetUlRxData (imsi, lcId));
-      NS_LOG_INFO ("\tUser " << i << " imsi " << imsi << " bytes txed " << (double)ulDataRxed.at (i) << "  thr " << (double)ulDataRxed.at (i) / simulationTime << " ref " << m_thrRefUl << " txed " << txed / simulationTime);
+      NS_LOG_INFO ("\tUser " << i << " imsi " << imsi << " bytes txed " << (double)ulDataRxed.at (i) << "  thr " << (double)ulDataRxed.at (i) / simulationTime << " ref " << m_thrRefUl << " txed " << rlcStats->GetUlTxData (imsi, lcId) / simulationTime);
       NS_TEST_ASSERT_MSG_EQ_TOL ((double)ulDataRxed.at (i) / simulationTime, m_thrRefUl, m_thrRefUl * tolerance, " Unfair Throughput!");
     }
 
--- a/src/lte/test/reference/bernuolliDistribution.m	Fri May 18 10:30:14 2012 +0200
+++ b/src/lte/test/reference/bernuolliDistribution.m	Tue May 29 10:42:17 2012 +0200
@@ -2,7 +2,7 @@
 % related to phy error model test
 
 n = 1000;
-p_vect = [0.19 0.09 0.123 0.097 0.017 0.23 0.72 0.18];
+p_vect = [0.33 0.11 0.02 0.3 0.55 0.14];
 for i=1:length(p_vect)
   p = p_vect(i)
   cdf = 0.0;
--- a/src/lte/test/test-epc-tft-classifier.cc	Fri May 18 10:30:14 2012 +0200
+++ b/src/lte/test/test-epc-tft-classifier.cc	Tue May 29 10:42:17 2012 +0200
@@ -114,7 +114,7 @@
       << ", da = " << da
       << ", sp = " << sp
       << ", dp = " << dp
-      << ", tos = 0x" << std::hex << tos
+      << ", tos = 0x" << std::hex << (int) tos
       << " --> tftId = " << tftId;  
   return oss.str ();
 }
--- a/src/netanim/bindings/modulegen__gcc_ILP32.py	Fri May 18 10:30:14 2012 +0200
+++ b/src/netanim/bindings/modulegen__gcc_ILP32.py	Tue May 29 10:42:17 2012 +0200
@@ -516,14 +516,18 @@
     cls.add_constructor([param('ns3::AnimationInterface const &', 'arg0')])
     ## animation-interface.h (module 'netanim'): ns3::AnimationInterface::AnimationInterface() [constructor]
     cls.add_constructor([])
-    ## animation-interface.h (module 'netanim'): ns3::AnimationInterface::AnimationInterface(std::string const filename, bool usingXML=true) [constructor]
-    cls.add_constructor([param('std::string const', 'filename'), param('bool', 'usingXML', default_value='true')])
+    ## animation-interface.h (module 'netanim'): ns3::AnimationInterface::AnimationInterface(std::string const filename, uint64_t maxPktsPerFile=100000, bool usingXML=true) [constructor]
+    cls.add_constructor([param('std::string const', 'filename'), param('uint64_t', 'maxPktsPerFile', default_value='100000'), param('bool', 'usingXML', default_value='true')])
     ## animation-interface.h (module 'netanim'): ns3::AnimationInterface::AnimationInterface(uint16_t port, bool usingXML=true) [constructor]
     cls.add_constructor([param('uint16_t', 'port'), param('bool', 'usingXML', default_value='true')])
     ## animation-interface.h (module 'netanim'): void ns3::AnimationInterface::EnablePacketMetadata(bool enable) [member function]
     cls.add_method('EnablePacketMetadata', 
                    'void', 
                    [param('bool', 'enable')])
+    ## animation-interface.h (module 'netanim'): uint64_t ns3::AnimationInterface::GetTracePktCount() [member function]
+    cls.add_method('GetTracePktCount', 
+                   'uint64_t', 
+                   [])
     ## animation-interface.h (module 'netanim'): static bool ns3::AnimationInterface::IsInitialized() [member function]
     cls.add_method('IsInitialized', 
                    'bool', 
@@ -588,10 +592,10 @@
     cls.add_method('ShowAll802_11', 
                    'void', 
                    [param('bool', 'showAll')])
-    ## animation-interface.h (module 'netanim'): void ns3::AnimationInterface::StartAnimation() [member function]
+    ## animation-interface.h (module 'netanim'): void ns3::AnimationInterface::StartAnimation(bool restart=false) [member function]
     cls.add_method('StartAnimation', 
                    'void', 
-                   [])
+                   [param('bool', 'restart', default_value='false')])
     ## animation-interface.h (module 'netanim'): void ns3::AnimationInterface::StopAnimation() [member function]
     cls.add_method('StopAnimation', 
                    'void', 
--- a/src/netanim/bindings/modulegen__gcc_LP64.py	Fri May 18 10:30:14 2012 +0200
+++ b/src/netanim/bindings/modulegen__gcc_LP64.py	Tue May 29 10:42:17 2012 +0200
@@ -516,14 +516,18 @@
     cls.add_constructor([param('ns3::AnimationInterface const &', 'arg0')])
     ## animation-interface.h (module 'netanim'): ns3::AnimationInterface::AnimationInterface() [constructor]
     cls.add_constructor([])
-    ## animation-interface.h (module 'netanim'): ns3::AnimationInterface::AnimationInterface(std::string const filename, bool usingXML=true) [constructor]
-    cls.add_constructor([param('std::string const', 'filename'), param('bool', 'usingXML', default_value='true')])
+    ## animation-interface.h (module 'netanim'): ns3::AnimationInterface::AnimationInterface(std::string const filename, uint64_t maxPktsPerFile=100000, bool usingXML=true) [constructor]
+    cls.add_constructor([param('std::string const', 'filename'), param('uint64_t', 'maxPktsPerFile', default_value='100000'), param('bool', 'usingXML', default_value='true')])
     ## animation-interface.h (module 'netanim'): ns3::AnimationInterface::AnimationInterface(uint16_t port, bool usingXML=true) [constructor]
     cls.add_constructor([param('uint16_t', 'port'), param('bool', 'usingXML', default_value='true')])
     ## animation-interface.h (module 'netanim'): void ns3::AnimationInterface::EnablePacketMetadata(bool enable) [member function]
     cls.add_method('EnablePacketMetadata', 
                    'void', 
                    [param('bool', 'enable')])
+    ## animation-interface.h (module 'netanim'): uint64_t ns3::AnimationInterface::GetTracePktCount() [member function]
+    cls.add_method('GetTracePktCount', 
+                   'uint64_t', 
+                   [])
     ## animation-interface.h (module 'netanim'): static bool ns3::AnimationInterface::IsInitialized() [member function]
     cls.add_method('IsInitialized', 
                    'bool', 
@@ -588,10 +592,10 @@
     cls.add_method('ShowAll802_11', 
                    'void', 
                    [param('bool', 'showAll')])
-    ## animation-interface.h (module 'netanim'): void ns3::AnimationInterface::StartAnimation() [member function]
+    ## animation-interface.h (module 'netanim'): void ns3::AnimationInterface::StartAnimation(bool restart=false) [member function]
     cls.add_method('StartAnimation', 
                    'void', 
-                   [])
+                   [param('bool', 'restart', default_value='false')])
     ## animation-interface.h (module 'netanim'): void ns3::AnimationInterface::StopAnimation() [member function]
     cls.add_method('StopAnimation', 
                    'void', 
--- a/src/netanim/doc/animation.rst	Fri May 18 10:30:14 2012 +0200
+++ b/src/netanim/doc/animation.rst	Tue May 29 10:42:17 2012 +0200
@@ -10,47 +10,11 @@
 The NetAnim method is described in detail at http://www.nsnam.org/wiki/index.php/NetAnim.
 We will describe the NetAnim method briefly here.
 
-AnimationInterface
-*******************
-
-The class "AnimationInterface" under "src/netanim" uses underlying |ns3| trace sources 
-to construct a timestamped ASCII file in XML format that can be read by a standalone animator 
-named "NetAnim". 
-
-Generating XML trace files for use in NetAnim
-+++++++++++++++++++++++++++++++++++++++++++++
-Apply the following statements before the "Simulator::Run ()" statement:::
-
-  AnimationInterface anim ("animation.xml")
-
-where "animation.xml" is any arbitrary file name.
-It is important to ensure that your wscript includes the "netanim" module. 
-Example as in: src/netanim/examples/wscript. Also include the header 
-[#include "ns3/netanim-module.h"] in your test program
-
-The examples under "src/netanim/examples" illustrate this. The sample wscript is at 
-"src/netanim/examples/wscript".
-
-Lets take an example: "src/netanim/examples/star-animation.cc". To run the example:::
-
-  ./waf --run "star-animation"
-
-This will generate an xml file "star-animation.xml" in the same directory. This XML file 
-contains the information required by the standalone animator "NetAnim" to produce the required
-animation.
-
-
-Parts of the XML
-++++++++++++++++
-This is described in detail at http://www.nsnam.org/wiki/index.php/NetAnim#Parts_of_the_XML
-
 NetAnim
 *******
 
-NetAnim is a stand-alone program which uses the custom trace files generated by
-the animation interface to graphically display the simulation. NetAnim is based
-on the multi-platform `Qt4 GUI toolkit <http://qt.nokia.com/>`_.
-A screenshot of the NetAnim GUI is shown below.
+NetAnim is a standalone, Qt4-based software executable that uses a trace file generated during 
+an |ns-3| simulation to display the topology and animate the packet flow between nodes.
 
 .. _anim-dumbbell:
 
@@ -58,14 +22,270 @@
 
     NetAnim GUI with dumbbell animation.
 
-The NetAnim GUI provides play, pause, and record buttons. Play and pause start
-and stop the simulation. The record button starts a series of screenshots of the
-animator, which are written to the directory in which the trace file was run.
-Two slider bars also exist. The top slider provides a "seek" functionality,
-which allows a user to skip to any moment in the simulation. The bottom slider
-changes the granularity of the time step for the animation. Finally, there is a
-quit button to stop the simulation and quit the animator.
+Methodology
+===========
+The class ns3::AnimationInterface is responsible for the creation the trace XML file.
+AnimationInterface uses the tracing infrastructure to track packet flows between nodes.
+AnimationInterface registers itself as a trace hook for tx and rx events before the simulation
+begins. When a packet is scheduled for transmission or reception, the corresponding tx and rx 
+trace hooks in AnimationInterface are called. When the rx hooks are called, AnimationInterface will be aware of the two endpoints between which a packet has flowed, and adds this information
+to the trace file, in XML format along with the corresponding tx and rx timestamps. The XML format 
+will be discussed in a later section. It is important to note that AnimationInterface records a 
+packet only if the rx trace hooks are called. Every tx event must be matched by an rx event.
+
+Downloading NetAnim
+===================
+If NetAnim is not already available in the |ns-3| package you downloaded, you can do the following
+
+Please ensure that you have installed mercurial.
+The latest version of NetAnim can be downloaded using mercurial with the following command
+::
+  hg clone http://code.nsnam.org/jabraham3/netanim
+
+
+Building NetAnim
+================
+Prerequisites
+~~~~~~~~~~~~~
+Qt4 (4.7 and over) is required to build NetAnim. This can be obtained using the following ways:
+
+For Debian/Ubuntu Linux distributions
+::
+    apt-get install qt4-dev-tools
+
+For Red Hat/Fedora based distribution
+::
+    yum install qt4
+    yum install qt4-devel
+
+For Mac/OSX
+::
+    http://qt.nokia.com/downloads/
+
+Build steps
+~~~~~~~~~~~
+
+To build NetAnim use the following commands
+::
+  cd netanim
+  make clean
+  qmake NetAnim.pro  (For MAC Users: qmake -spec macx-g++ NetAnim.pro)
+  make
+
+
+  Note: qmake could be "qmake-qt4" in some systems
+
+This should create an executable named "NetAnim" in the same directory
+::
+ john@john-VirtualBox:~/netanim$ ls -l NetAnim
+ -rwxr-xr-x 1 john john 390395 2012-05-22 08:32 NetAnim
+
+
+Usage
+=====
+Using NetAnim is a two-step process
+
+Step 1: Generate the animation XML trace file during simulation using "ns3::AnimationInterface" 
+        in the |ns-3| code base.
+Step 2: Load the XML trace file generated in Step 1 with the offline Qt4-based animator (NetAnim).
+
+
+Step 1: Generate XML animation trace file
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+The class "AnimationInterface" under "src/netanim" uses underlying |ns3| trace sources 
+to construct a timestamped ASCII file in XML format.
+
+Examples are found under src/netanim/examples
+Example
+::
+  ./waf -d debug configure --enable-examples
+  ./waf --run "dumbbell-animation"
+The above will create an XML file dumbbell-animation.xml
+
+Mandatory
+#########
+
+1. Ensure that your program's wscript includes the "netanim" module. An example of such a wscript is at src/netanim/examples/wscript. 
+2. Include the header [#include "ns3/netanim-module.h"] in your test program
+3. Add the statement
+::
+  AnimationInterface anim ("animation.xml"); 
+    where "animation.xml" is any arbitrary filename
+
+
+[for versions before ns-3.13 you also have to use the line "anim.SetXMLOutput() to set the XML mode and also use anim.StartAnimation();]
+
+
+Optional
+########
+The following are optional but useful steps
+::
+  1.anim.SetMobilityPollInterval (Seconds (1));
+
+AnimationInterface records the position of all nodes every 250 ms by default. The statement above sets 
+the periodic interval at which AnimationInterface records the position of all nodes. If the nodes are 
+expected to move very little, it is useful to set a high mobility interval to avoid large XML files.
+::
+  2. anim.SetConstantPosition (Ptr< Node > n, double x, double y);
+
+AnimationInterface requires that the position of all nodes be set. In ns-3 this is done by setting an associated MobilityModel. "SetConstantPosition" is a quick way to set the x-y coordinates of a node which is stationary.
+::
+  3. anim.SetStartTime (Seconds(150)); and anim.SetStopTime (Seconds(150));
+
+AnimationInterface can generate large XML files. The above statements restricts the window between which AnimationInterface does tracing. Restricting the window serves to focus only on relevant portions of the simulation and creating manageably small XML files
+::
+  4. AnimationInterface anim ("animation.xml", 50000);
+
+Using the above constructor ensures that each animation XML trace file has only 50000 packets. For example, if AnimationInterface captures 150000 packets, using the above constructor splits the capture into 3 files
+
+animation.xml - containing the packet range 1-50000
+
+animation.xml-1 - containing the packet range 50001-100000 
+
+animation.xml-2 - containing the packet range 100001-150000 
+::
+  5. anim.EnablePacketMetadata (true);
+
+With the above statement, AnimationInterface records the meta-data of each packet in the xml trace file. Metadata can be used by NetAnim to provide better statistics and filter, along with providing some brief information about the packet such as TCP sequence number or source & destination IP address during packet animation.
+CAUTION: Enabling this feature will result in larger XML trace files.
+Please do NOT enable this feature when using Wimax links.
+
+Step 2: Loading the XML in NetAnim
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-For detailed instructions on installing "NetAnim" and loading the XML trace file 
+1. Assuming NetAnim was built, use the command "./NetAnim" to launch NetAnim. Please review the section "Building NetAnim" if NetAnim is not available.
+2. When NetAnim is opened, click on the File open button at the top-left corner, select the XML file generated during Step 1.
+3. Hit the green play button to begin animation.
+
+Essential settings of NetAnim
+=============================
+
+Persist combobox
+~~~~~~~~~~~~~~~~
+When packets are transmitted and received very quickly, they can be almost invisible. The persist time setting
+allows the user to control the duration for which a packet should be visible on the animation canvas. 
+
+Fast-forward button
+~~~~~~~~~~~~~~~~~~~
+This setting is ON by default. With this setting ON, the animation progresses in simulation time rather than
+wall-clock time. This means, if there were three intervals of time, A to B , B to C and C to D, and if all packets are transmitted and received only in the intervals A to B and C to D , while B to C is a 
+20 second idle period with no packet tranmission or reception or node mobility, NetAnim will skip over B to C, instantly without waiting for 20 seconds. The user can turn OFF Fast-forward when they want the animation to proceed like wall-clock time. 
+
+Update-interval slider
+~~~~~~~~~~~~~~~~~~~~~~
+If Fast-forward (discussed above) is turned OFF, the update-interval slider controls the rate at which 
+NetAnim refreshes the canvas screen.
+
+Precision button
+~~~~~~~~~~~~~~~~
+This setting is turned OFF by default. When using purely point-to-point topologies precision can be turned ON, 
+to distinguish between small and large packets travelling on a link. For instance a small packet such as a 
+TCP ACK segment occupies only a small fraction of the length of the link , which provides a realistic animation
+CAUTION: Precision should be turned ON only for completely point-to-point topologies.
+
+Sim-time spinbox
+~~~~~~~~~~~~~~~~
+The Sim-time spinbox can be used to go forward or backward in simulation time.
+
+
+Parts of the XML
+================
+The XML trace files has the following main sections
+
+1. Topology
+
+   - Nodes
+   - Links
+2. packets (packets over wired-links)
+3. wpackets (packets over wireless-links)
+
+XML tags
+~~~~~~~~
+Nodes are identified by their unique Node id. The XML begins with the "information" element describing the rest of the elements
+
+1. <anim> element
+
+This is the XML root element. All other elements fall within this element
+  Attributes are:
+  lp = Logical Processor Id (Used for distributed simulations only)
+
+2. <topology> element
+
+This elements contains the Node and Link elements.It describes, the co-ordinates of the canvas used for animation.
+   Attributes are:
+   minX = minimum X coordinate of the animation canvas
+   minY = minimum Y coordinate of the animation canvas
+   maxX = maximum X coordinate of the animation canvas
+   maxY = maximum Y coordinate of the animation canvas
+
+Example
+::
+ <topology minX = "-6.42025" minY = "-6.48444" maxX = "186.187" maxY = "188.049">
+
+3. <node> element
+
+This element describes each Node's Id and X,Y co-ordinate (position)
+  Attributes are:
+   id = Node Id
+   locX = X coordinate
+   locY = Y coordinate
+
+Example
+::
+  <node id = "8" locX = "107.599" locY = "96.9366" />
+
+4. <link> element
+
+This element describes wired links between two nodes.
+ Attributes are:
+   fromId = From Node Id (first node id)
+   toId   = To Node Id (second node id)
+ 
+Example
+::
+  <link fromId="0" toId="1"/>
+
+5. <packet> element
+
+This element describes a packet over wired links being transmitted at some node and received at another. The reception details are described in its associated rx element
+ Attributes are:
+   fromId = Node Id transmitting the packet
+   fbTx = First bit transmit time of the packet
+   lbTx = Last bit transmit time of the packet
+
+Example
+::
+  <packet fromId="1" fbTx="1" lbTx="1.000067199"><rx toLp="0" toId="0" fbRx="1.002" lbRx="1.002067199"/>
+
+A packet over wired-links from Node 1 was received at Node 0. The first bit of the packet was transmitted at  the 1th second, the last bit was transmitted at the 1.000067199th second of the simulation Node 0 received the first bit of the packet at the 1.002th second and the last bit of the packet at the 1.002067199th second of the simulation
+NOTE: A packet with fromId == toId is a dummy packet used internally by the AnimationInterface. Please ignore this packet
+
+6. <rx> element
+
+This element describes the reception of a packet at a node
+ Attributes are:
+   toId = Node Id receiving the packet
+   fbRx = First bit Reception Time of the packet
+   lbRx = Last bit Reception Time of the packet
+
+7. <wpacket> element
+
+This element describes a packet over wireless links being transmitted at some node and received at another. The reception details are described in its associated rx element
+ Attributes are:
+   fromId = Node Id transmitting the packet
+   fbTx = First bit transmit time of the packet
+   lbTx = Last bit transmit time of the packet
+   range = Range of the transmission
+
+Example
+::
+  <wpacket fromId = "20" fbTx = "0.003" lbTx = "0.003254" range = "59.68176982">
+  <rx toLp="0" toId="32" fbRx="0.003000198" lbRx="0.003254198"/>
+
+A packet over wireless-links from Node 20 was received at Node 32. The first bit of the packet was transmitted at  the 0.003th second, the last bit was transmitted at the 0.003254 second of the simulation Node 0 received the first bit of the packet at the 0.003000198 second and the last bit of the packet at the 0.003254198 second of the simulation
+
+Wiki
+====
+For detailed instructions on installing "NetAnim", F.A.Qs and loading the XML trace file 
 (mentioned earlier) using NetAnim please refer:
 http://www.nsnam.org/wiki/index.php/NetAnim
--- a/src/netanim/model/animation-interface.cc	Fri May 18 10:30:14 2012 +0200
+++ b/src/netanim/model/animation-interface.cc	Tue May 29 10:42:17 2012 +0200
@@ -63,33 +63,36 @@
 std::map <uint32_t, std::string> AnimationInterface::nodeDescriptions;
 
 AnimationInterface::AnimationInterface ()
-  : m_fHandle (STDOUT_FILENO), m_xml (false), mobilitypollinterval (Seconds(0.25)),
-    usingSockets (false), mport (0), outputfilename (""),
-    OutputFileSet (false), ServerPortSet (false), gAnimUid (0),randomPosition (true),
+  : m_fHandle (STDOUT_FILENO), m_xml (false), m_mobilityPollInterval (Seconds(0.25)),
+    m_usingSockets (false), m_port (0), m_outputFileName (""),
+    m_outputFileSet (false), m_serverPortSet (false), gAnimUid (0),m_randomPosition (true),
     m_writeCallback (0), m_started (false), 
-    m_enablePacketMetadata (false), m_startTime (Seconds(0)), m_stopTime (Seconds(3600 * 1000))
+    m_enablePacketMetadata (false), m_startTime (Seconds(0)), m_stopTime (Seconds(3600 * 1000)),
+    m_maxPktsPerFile (MAX_PKTS_PER_TRACE_FILE)
 {
   initialized = true;
   StartAnimation ();
 }
 
-AnimationInterface::AnimationInterface (const std::string fn, bool usingXML)
-  : m_fHandle (STDOUT_FILENO), m_xml (usingXML), mobilitypollinterval (Seconds(0.25)), 
-    usingSockets (false), mport (0), outputfilename (fn),
-    OutputFileSet (false), ServerPortSet (false), gAnimUid (0), randomPosition (true),
+AnimationInterface::AnimationInterface (const std::string fn, uint64_t maxPktsPerFile, bool usingXML)
+  : m_fHandle (STDOUT_FILENO), m_xml (usingXML), m_mobilityPollInterval (Seconds(0.25)), 
+    m_usingSockets (false), m_port (0), m_outputFileName (fn),
+    m_outputFileSet (false), m_serverPortSet (false), gAnimUid (0), m_randomPosition (true),
     m_writeCallback (0), m_started (false), 
-    m_enablePacketMetadata (false), m_startTime (Seconds(0)), m_stopTime (Seconds(3600 * 1000))
+    m_enablePacketMetadata (false), m_startTime (Seconds(0)), m_stopTime (Seconds(3600 * 1000)),
+    m_maxPktsPerFile (maxPktsPerFile), m_originalFileName (fn)
 {
   initialized = true;
   StartAnimation ();
 }
 
 AnimationInterface::AnimationInterface (const uint16_t port, bool usingXML)
-  : m_fHandle (STDOUT_FILENO), m_xml (usingXML), mobilitypollinterval (Seconds(0.25)), 
-    usingSockets (true), mport (port), outputfilename (""),
-    OutputFileSet (false), ServerPortSet (false), gAnimUid (0), randomPosition (true),
+  : m_fHandle (STDOUT_FILENO), m_xml (usingXML), m_mobilityPollInterval (Seconds(0.25)), 
+    m_usingSockets (true), m_port (port), m_outputFileName (""),
+    m_outputFileSet (false), m_serverPortSet (false), gAnimUid (0), m_randomPosition (true),
     m_writeCallback (0), m_started (false), 
-    m_enablePacketMetadata (false), m_startTime (Seconds(0)), m_stopTime (Seconds(3600 * 1000))
+    m_enablePacketMetadata (false), m_startTime (Seconds(0)), m_stopTime (Seconds(3600 * 1000)),
+    m_maxPktsPerFile (MAX_PKTS_PER_TRACE_FILE)
 {
   initialized = true;
   StartAnimation ();
@@ -107,6 +110,22 @@
 }
 
 
+void AnimationInterface::StartNewTraceFile ()
+{
+  static int i = 0;
+  std::ostringstream oss;
+  oss << i;
+  ++m_currentPktCount;
+  if (m_currentPktCount <= m_maxPktsPerFile)
+    {
+      return;
+    }
+  StopAnimation ();
+  m_outputFileName = m_originalFileName + "-" + oss.str ();
+  StartAnimation (true);
+  ++i;
+
+}
 void AnimationInterface::SetStartTime (Time t)
 {
   m_startTime = t;
@@ -119,16 +138,17 @@
 
 bool AnimationInterface::SetOutputFile (const std::string& fn)
 {
-  if (OutputFileSet)
+  if (m_outputFileSet)
     {
       return true;
     }
   if (fn == "")
     {
       m_fHandle = STDOUT_FILENO;
-      OutputFileSet = true;
+      m_outputFileSet = true;
       return true;
     }
+  NS_LOG_INFO ("Creating new trace file:" << fn.c_str ());
   FILE* f = fopen (fn.c_str (), "w");
   if (!f)
     {
@@ -136,9 +156,9 @@
       return false; // Can't open
     }
   m_fHandle = fileno (f); // Set the file handle
-  usingSockets = false;
-  outputfilename = fn;
-  OutputFileSet = true;
+  m_usingSockets = false;
+  m_outputFileName = fn;
+  m_outputFileSet = true;
   return true;
 }
 
@@ -182,7 +202,7 @@
 bool AnimationInterface::SetServerPort (uint16_t port)
 {
 #if defined(HAVE_SYS_SOCKET_H) && defined(HAVE_NETINET_IN_H)
-  if (ServerPortSet)
+  if (m_serverPortSet)
     {
       return true;
     }
@@ -204,8 +224,8 @@
   // set the linger socket option
   int t = 1;
   setsockopt (s, SOL_SOCKET, SO_LINGER, &t, sizeof(t));
-  usingSockets = true;
-  ServerPortSet = true;
+  m_usingSockets = true;
+  m_serverPortSet = true;
   return true;
 #endif
   return false; // never reached unless the above is disabled
@@ -214,33 +234,33 @@
 
 bool AnimationInterface::WifiPacketIsPending (uint64_t AnimUid)
 {
-  return (pendingWifiPackets.find (AnimUid) != pendingWifiPackets.end ());
+  return (m_pendingWifiPackets.find (AnimUid) != m_pendingWifiPackets.end ());
 }
 
 bool AnimationInterface::CsmaPacketIsPending (uint64_t AnimUid)
 {
-  return (pendingCsmaPackets.find (AnimUid) != pendingCsmaPackets.end ());
+  return (m_pendingCsmaPackets.find (AnimUid) != m_pendingCsmaPackets.end ());
 }
 
 
 bool AnimationInterface::WimaxPacketIsPending (uint64_t AnimUid)
 {
-  return (pendingWimaxPackets.find (AnimUid) != pendingWimaxPackets.end ());
+  return (m_pendingWimaxPackets.find (AnimUid) != m_pendingWimaxPackets.end ());
 }
 
 bool AnimationInterface::LtePacketIsPending (uint64_t AnimUid)
 {
-  return (pendingLtePackets.find (AnimUid) != pendingLtePackets.end ());
+  return (m_pendingLtePackets.find (AnimUid) != m_pendingLtePackets.end ());
 }
 
 void AnimationInterface::SetMobilityPollInterval (Time t)
 {
-  mobilitypollinterval = t;
+  m_mobilityPollInterval = t;
 }
 
 void AnimationInterface::SetRandomPosition (bool setRandPos)
 {
-  randomPosition = setRandPos;
+  m_randomPosition = setRandPos;
 }
 
 Vector AnimationInterface::UpdatePosition (Ptr <Node> n)
@@ -248,49 +268,49 @@
   Ptr<MobilityModel> loc = n->GetObject<MobilityModel> ();
   if (loc)
     {
-      nodeLocation[n->GetId ()] = loc->GetPosition ();
+      m_nodeLocation[n->GetId ()] = loc->GetPosition ();
     }
   else
    {
      NS_LOG_UNCOND ( "AnimationInterface WARNING:Node:" << n->GetId () << " Does not have a mobility model. Use SetConstantPosition if it is stationary");
      Vector deterministicVector (100,100,0);
-     Vector randomVector (UniformVariable (0, topo_maxX-topo_minX).GetValue (), UniformVariable (0, topo_maxY-topo_minY).GetValue (), 0);
-     if (randomPosition)
+     Vector randomVector (UniformVariable (0, m_topoMaxX - m_topoMinX).GetValue (), UniformVariable (0, m_topoMaxY - m_topoMinY).GetValue (), 0);
+     if (m_randomPosition)
        {
-         nodeLocation[n->GetId ()] = randomVector;
+         m_nodeLocation[n->GetId ()] = randomVector;
        }
      else
        {
-         nodeLocation[n->GetId ()] = deterministicVector;
+         m_nodeLocation[n->GetId ()] = deterministicVector;
        }
    }
-  return nodeLocation[n->GetId ()];
+  return m_nodeLocation[n->GetId ()];
 }
 
 Vector AnimationInterface::UpdatePosition (Ptr <Node> n, Vector v)
 {
-  nodeLocation[n->GetId ()] = v;
+  m_nodeLocation[n->GetId ()] = v;
   return v;
 }
 
 Vector AnimationInterface::GetPosition (Ptr <Node> n)
 {
   #ifdef NS_LOG
-  if (nodeLocation.find (n->GetId()) == nodeLocation.end ())
+  if (m_nodeLocation.find (n->GetId()) == m_nodeLocation.end ())
     {
       NS_FATAL_ERROR ("Node:" <<n->GetId() << " not found in Location table");
     }  
   #endif
-  return nodeLocation[n->GetId ()];
+  return m_nodeLocation[n->GetId ()];
 }
 
 void AnimationInterface::PurgePendingWifi ()
 {
-  if (pendingWifiPackets.empty ())
+  if (m_pendingWifiPackets.empty ())
     return;
   std::vector <uint64_t> purgeList;
-  for (std::map<uint64_t, AnimPacketInfo>::iterator i = pendingWifiPackets.begin ();
-       i != pendingWifiPackets.end ();
+  for (std::map<uint64_t, AnimPacketInfo>::iterator i = m_pendingWifiPackets.begin ();
+       i != m_pendingWifiPackets.end ();
        ++i)
     {
      
@@ -306,18 +326,18 @@
        i != purgeList.end ();
        ++i)
     {
-      pendingWifiPackets.erase (*i);
+      m_pendingWifiPackets.erase (*i);
     }
 
 }
 
 void AnimationInterface::PurgePendingWimax ()
 {
-  if (pendingWimaxPackets.empty ())
+  if (m_pendingWimaxPackets.empty ())
     return;
   std::vector <uint64_t> purgeList;
-  for (std::map<uint64_t, AnimPacketInfo>::iterator i = pendingWimaxPackets.begin ();
-       i != pendingWimaxPackets.end ();
+  for (std::map<uint64_t, AnimPacketInfo>::iterator i = m_pendingWimaxPackets.begin ();
+       i != m_pendingWimaxPackets.end ();
        ++i)
     {
 
@@ -333,7 +353,7 @@
        i != purgeList.end ();
        ++i)
     {
-      pendingWimaxPackets.erase (*i);
+      m_pendingWimaxPackets.erase (*i);
     }
 
 }
@@ -341,11 +361,11 @@
 
 void AnimationInterface::PurgePendingLte ()
 {
-  if (pendingLtePackets.empty ())
+  if (m_pendingLtePackets.empty ())
     return;
   std::vector <uint64_t> purgeList;
-  for (std::map<uint64_t, AnimPacketInfo>::iterator i = pendingLtePackets.begin ();
-       i != pendingLtePackets.end ();
+  for (std::map<uint64_t, AnimPacketInfo>::iterator i = m_pendingLtePackets.begin ();
+       i != m_pendingLtePackets.end ();
        ++i)
     {
 
@@ -361,17 +381,17 @@
        i != purgeList.end ();
        ++i)
     {
-      pendingLtePackets.erase (*i);
+      m_pendingLtePackets.erase (*i);
     }
 }
 
 void AnimationInterface::PurgePendingCsma ()
 {
-  if (pendingCsmaPackets.empty ())
+  if (m_pendingCsmaPackets.empty ())
     return;
   std::vector <uint64_t> purgeList;
-  for (std::map<uint64_t, AnimPacketInfo>::iterator i = pendingCsmaPackets.begin ();
-       i != pendingCsmaPackets.end ();
+  for (std::map<uint64_t, AnimPacketInfo>::iterator i = m_pendingCsmaPackets.begin ();
+       i != m_pendingCsmaPackets.end ();
        ++i)
     {
     
@@ -387,37 +407,38 @@
        i != purgeList.end ();
        ++i)
     {
-      pendingCsmaPackets.erase (*i);
+      m_pendingCsmaPackets.erase (*i);
     }
 
 }
 
-void AnimationInterface::StartAnimation ()
+void AnimationInterface::StartAnimation (bool restart)
 {
+  m_currentPktCount = 0;
   m_started = true;
-  if (usingSockets)
+  if (m_usingSockets)
     {
-      SetServerPort (mport);
+      SetServerPort (m_port);
     }
   else
     {
-      SetOutputFile (outputfilename);
+      SetOutputFile (m_outputFileName);
     }      
 
   // Find the min/max x/y for the xml topology element
-  topo_minX = -2;
-  topo_minY = -2;
-  topo_maxX = 2;
-  topo_maxY = 2;
+  m_topoMinX = -2;
+  m_topoMinY = -2;
+  m_topoMaxX = 2;
+  m_topoMaxY = 2;
   for (NodeList::Iterator i = NodeList::Begin (); i != NodeList::End (); ++i)
     {
       Ptr<Node> n = *i;
       NS_LOG_INFO ("Update Position for Node: " << n->GetId ());
       Vector v = UpdatePosition (n); 
-      topo_minX = std::min (topo_minX, v.x);
-      topo_minY = std::min (topo_minY, v.y);
-      topo_maxX = std::max (topo_maxX, v.x);
-      topo_maxY = std::max (topo_maxY, v.y);
+      m_topoMinX = std::min (m_topoMinX, v.x);
+      m_topoMinY = std::min (m_topoMinY, v.y);
+      m_topoMaxX = std::max (m_topoMaxX, v.x);
+      m_topoMaxY = std::max (m_topoMaxY, v.y);
     }
 
   AddMargin ();
@@ -426,7 +447,7 @@
       std::ostringstream oss;
       oss << GetXMLOpen_anim (0);
       oss << GetPreamble ();
-      oss << GetXMLOpen_topology (topo_minX, topo_minY, topo_maxX, topo_maxY);
+      oss << GetXMLOpen_topology (m_topoMinX, m_topoMinY, m_topoMaxX, m_topoMaxY);
       WriteN (m_fHandle, oss.str ());
     }
   NS_LOG_INFO ("Setting topology for "<<NodeList::GetNNodes ()<<" Nodes");
@@ -497,13 +518,13 @@
             }
         }
     }
-  if (m_xml)
+  if (m_xml && !restart)
     {
       WriteN (m_fHandle, GetXMLClose ("topology"));
-      Simulator::Schedule (mobilitypollinterval, &AnimationInterface::MobilityAutoCheck, this);
+      Simulator::Schedule (m_mobilityPollInterval, &AnimationInterface::MobilityAutoCheck, this);
     }
-
-  ConnectCallbacks ();
+  if (!restart)
+    ConnectCallbacks ();
 }
 
 void AnimationInterface::ConnectCallbacks ()
@@ -553,7 +574,7 @@
         {
           close (m_fHandle);
         }
-      OutputFileSet = false;
+      m_outputFileSet = false;
       m_fHandle = -1;
     }
 }
@@ -575,14 +596,14 @@
 void AnimationInterface::AddMargin ()
 {
   // Compute width/height, and add a small margin
-  double w = topo_maxX - topo_minX;
-  double h = topo_maxY - topo_minY;
-  topo_minX -= w * 0.05;
-  topo_minY -= h * 0.05;
-  topo_maxX = topo_minX + w * 1.5;
-  topo_maxY = topo_minY + h * 1.5;
-  NS_LOG_INFO ("Added Canvas Margin:" << topo_minX << "," <<
-               topo_minY << "," << topo_maxX << "," << topo_maxY);                 
+  double w = m_topoMaxX - m_topoMinX;
+  double h = m_topoMaxY - m_topoMinY;
+  m_topoMinX -= w * 0.05;
+  m_topoMinY -= h * 0.05;
+  m_topoMaxX = m_topoMinX + w * 1.5;
+  m_topoMaxY = m_topoMinY + h * 1.5;
+  NS_LOG_INFO ("Added Canvas Margin:" << m_topoMinX << "," <<
+               m_topoMinY << "," << m_topoMaxX << "," << m_topoMaxY);                 
 }
 
 std::vector <Ptr <Node> >  AnimationInterface::RecalcTopoBounds ()
@@ -618,17 +639,17 @@
 
 void AnimationInterface::RecalcTopoBounds (Vector v)
 {
-  double oldminX = topo_minX;
-  double oldminY = topo_minY;
-  double oldmaxX = topo_maxX;
-  double oldmaxY = topo_maxY;
-  topo_minX = std::min (topo_minX, v.x);
-  topo_minY = std::min (topo_minY, v.y);
-  topo_maxX = std::max (topo_maxX, v.x);
-  topo_maxY = std::max (topo_maxY, v.y);
+  double oldminX = m_topoMinX;
+  double oldminY = m_topoMinY;
+  double oldmaxX = m_topoMaxX;
+  double oldmaxY = m_topoMaxY;
+  m_topoMinX = std::min (m_topoMinX, v.x);
+  m_topoMinY = std::min (m_topoMinY, v.y);
+  m_topoMaxX = std::max (m_topoMaxX, v.x);
+  m_topoMaxY = std::max (m_topoMaxY, v.y);
   
-  if ((topo_minX != oldminX) || (topo_minY != oldminY) ||
-      (topo_maxX != oldmaxX) || (topo_maxY != oldmaxY))
+  if ((m_topoMinX != oldminX) || (m_topoMinY != oldminY) ||
+      (m_topoMaxX != oldmaxX) || (m_topoMaxY != oldmaxY))
     {
       AddMargin ();
     } 
@@ -697,6 +718,8 @@
       if (m_enablePacketMetadata)
         oss << GetXMLOpenClose_meta (GetPacketMetadata (p));
       oss << GetXMLClose ("packet");
+      StartNewTraceFile ();
+      ++m_currentPktCount;
     }
   else
     {
@@ -727,25 +750,25 @@
                                   
 void AnimationInterface::AddPendingWifiPacket (uint64_t AnimUid, AnimPacketInfo &pktinfo)
 {
-  pendingWifiPackets[AnimUid] = pktinfo;
+  m_pendingWifiPackets[AnimUid] = pktinfo;
 }
 
 void AnimationInterface::AddPendingWimaxPacket (uint64_t AnimUid, AnimPacketInfo &pktinfo)
 {
   NS_ASSERT (pktinfo.m_txnd);
-  pendingWimaxPackets[AnimUid] = pktinfo;
+  m_pendingWimaxPackets[AnimUid] = pktinfo;
 }
 
 void AnimationInterface::AddPendingLtePacket (uint64_t AnimUid, AnimPacketInfo &pktinfo)
 {
   NS_ASSERT (pktinfo.m_txnd);
-  pendingLtePackets[AnimUid] = pktinfo;
+  m_pendingLtePackets[AnimUid] = pktinfo;
 }
 
 void AnimationInterface::AddPendingCsmaPacket (uint64_t AnimUid, AnimPacketInfo &pktinfo)
 {
   NS_ASSERT (pktinfo.m_txnd);
-  pendingCsmaPackets[AnimUid] = pktinfo;
+  m_pendingCsmaPackets[AnimUid] = pktinfo;
 }
 
 uint64_t AnimationInterface::GetAnimUidFromPacket (Ptr <const Packet> p)
@@ -814,7 +837,7 @@
   uint64_t AnimUid = GetAnimUidFromPacket (p);
   NS_LOG_INFO ("TxDropTrace for packet:" << AnimUid);
   NS_ASSERT (WifiPacketIsPending (AnimUid) == true);
-  pendingWifiPackets.erase (pendingWifiPackets.find (AnimUid));
+  m_pendingWifiPackets.erase (m_pendingWifiPackets.find (AnimUid));
 }
 
 
@@ -851,9 +874,9 @@
       NS_LOG_WARN ("WifiPhyRxBegin: unknown Uid, but we are adding a wifi packet");
     }
   // TODO: NS_ASSERT (WifiPacketIsPending (AnimUid) == true);
-  pendingWifiPackets[AnimUid].ProcessRxBegin (ndev, Simulator::Now ());
-  pendingWifiPackets[AnimUid].ProcessRxEnd (ndev, Simulator::Now (), UpdatePosition (n));
-  OutputWirelessPacket (p, pendingWifiPackets[AnimUid], pendingWifiPackets[AnimUid].GetRxInfo (ndev));
+  m_pendingWifiPackets[AnimUid].ProcessRxBegin (ndev, Simulator::Now ());
+  m_pendingWifiPackets[AnimUid].ProcessRxEnd (ndev, Simulator::Now (), UpdatePosition (n));
+  OutputWirelessPacket (p, m_pendingWifiPackets[AnimUid], m_pendingWifiPackets[AnimUid].GetRxInfo (ndev));
 }
 
 
@@ -874,7 +897,7 @@
       AddPendingWifiPacket (AnimUid, pktinfo);
     }
   // TODO: NS_ASSERT (WifiPacketIsPending (AnimUid) == true);
-  AnimPacketInfo& pktInfo = pendingWifiPackets[AnimUid];
+  AnimPacketInfo& pktInfo = m_pendingWifiPackets[AnimUid];
   pktInfo.ProcessRxEnd (ndev, Simulator::Now (), UpdatePosition (n));
   AnimRxInfo pktrxInfo = pktInfo.GetRxInfo (ndev);
   if (pktrxInfo.IsPhyRxComplete ())
@@ -900,7 +923,7 @@
       return;
     }
   // TODO: NS_ASSERT (WifiPacketIsPending (AnimUid) == true);
-  AnimPacketInfo& pktInfo = pendingWifiPackets[AnimUid];
+  AnimPacketInfo& pktInfo = m_pendingWifiPackets[AnimUid];
   AnimRxInfo pktrxInfo = pktInfo.GetRxInfo (ndev);
   if (pktrxInfo.IsPhyRxComplete ())
     {
@@ -944,7 +967,7 @@
   uint64_t AnimUid = GetAnimUidFromPacket (p);
   NS_LOG_INFO ("WimaxRxTrace for packet:" << AnimUid);
   NS_ASSERT (WimaxPacketIsPending (AnimUid) == true);
-  AnimPacketInfo& pktInfo = pendingWimaxPackets[AnimUid];
+  AnimPacketInfo& pktInfo = m_pendingWimaxPackets[AnimUid];
   pktInfo.ProcessRxBegin (ndev, Simulator::Now ());
   pktInfo.ProcessRxEnd (ndev, Simulator::Now () + Seconds (0.001), UpdatePosition (n));
   //TODO 0.001 is used until Wimax implements RxBegin and RxEnd traces
@@ -986,7 +1009,7 @@
       NS_LOG_WARN ("LteRxTrace: unknown Uid");
       return;
     }
-  AnimPacketInfo& pktInfo = pendingLtePackets[AnimUid];
+  AnimPacketInfo& pktInfo = m_pendingLtePackets[AnimUid];
   pktInfo.ProcessRxBegin (ndev, Simulator::Now ());
   pktInfo.ProcessRxEnd (ndev, Simulator::Now () + Seconds (0.001), UpdatePosition (n));
   //TODO 0.001 is used until Lte implements RxBegin and RxEnd traces
@@ -1031,7 +1054,7 @@
       NS_LOG_WARN ("Unknown Uid, but adding Csma Packet anyway");
     }
   // TODO: NS_ASSERT (CsmaPacketIsPending (AnimUid) == true);
-  AnimPacketInfo& pktInfo = pendingCsmaPackets[AnimUid];
+  AnimPacketInfo& pktInfo = m_pendingCsmaPackets[AnimUid];
   pktInfo.m_lbTx = Simulator::Now ().GetSeconds ();
 }
 
@@ -1050,8 +1073,8 @@
       return;
     }
   // TODO: NS_ASSERT (CsmaPacketIsPending (AnimUid) == true);
-  AnimPacketInfo& pktInfo = pendingCsmaPackets[AnimUid];
-  pendingCsmaPackets[AnimUid].ProcessRxBegin (ndev, Simulator::Now ());
+  AnimPacketInfo& pktInfo = m_pendingCsmaPackets[AnimUid];
+  m_pendingCsmaPackets[AnimUid].ProcessRxBegin (ndev, Simulator::Now ());
   pktInfo.ProcessRxEnd (ndev, Simulator::Now (), UpdatePosition (n));
   NS_LOG_INFO ("CsmaPhyRxEndTrace for packet:" << AnimUid);
 }
@@ -1074,7 +1097,7 @@
       return;
     }
   // TODO: NS_ASSERT (CsmaPacketIsPending (AnimUid) == true);
-  AnimPacketInfo& pktInfo = pendingCsmaPackets[AnimUid];
+  AnimPacketInfo& pktInfo = m_pendingCsmaPackets[AnimUid];
   AnimRxInfo pktrxInfo = pktInfo.GetRxInfo (ndev);
   if (pktrxInfo.IsPhyRxComplete ())
     {
@@ -1103,7 +1126,7 @@
   UpdatePosition (n,v);
   RecalcTopoBounds (v);
   std::ostringstream oss; 
-  oss << GetXMLOpen_topology (topo_minX,topo_minY,topo_maxX,topo_maxY);
+  oss << GetXMLOpen_topology (m_topoMinX, m_topoMinY, m_topoMaxX, m_topoMaxY);
   oss << GetXMLOpenClose_node (0,n->GetId (),v.x,v.y);
   oss << GetXMLClose ("topology");
   WriteN (m_fHandle, oss.str ());
@@ -1131,7 +1154,7 @@
     return;
   std::vector <Ptr <Node> > MovedNodes = RecalcTopoBounds ();
   std::ostringstream oss;
-  oss << GetXMLOpen_topology (topo_minX, topo_minY, topo_maxX, topo_maxY);
+  oss << GetXMLOpen_topology (m_topoMinX, m_topoMinY, m_topoMaxX, m_topoMaxY);
   for (uint32_t i = 0; i < MovedNodes.size (); i++)
     {
       Ptr <Node> n = MovedNodes [i];
@@ -1148,7 +1171,7 @@
       PurgePendingWimax ();
       PurgePendingLte ();
       PurgePendingCsma ();
-      Simulator::Schedule (mobilitypollinterval, &AnimationInterface::MobilityAutoCheck, this);
+      Simulator::Schedule (m_mobilityPollInterval, &AnimationInterface::MobilityAutoCheck, this);
     }
 }
 
@@ -1159,6 +1182,12 @@
   return oss.str ();
 }
 
+uint64_t AnimationInterface::GetTracePktCount ()
+{
+  return m_currentPktCount;
+}
+
+
 // Helper to output a wireless packet.
 // For now, only the XML interface is supported
 
@@ -1204,6 +1233,7 @@
 
 void AnimationInterface::OutputWirelessPacket (Ptr<const Packet> p, AnimPacketInfo &pktInfo, AnimRxInfo pktrxInfo)
 {
+  StartNewTraceFile ();
   NS_ASSERT (m_xml);
   std::ostringstream oss;
   uint32_t nodeId =  0;
@@ -1226,6 +1256,7 @@
 
 void AnimationInterface::OutputCsmaPacket (Ptr<const Packet> p, AnimPacketInfo &pktInfo, AnimRxInfo pktrxInfo)
 {
+  StartNewTraceFile ();
   NS_ASSERT (m_xml);
   std::ostringstream oss;
   NS_ASSERT (pktInfo.m_txnd);
--- a/src/netanim/model/animation-interface.h	Fri May 18 10:30:14 2012 +0200
+++ b/src/netanim/model/animation-interface.h	Tue May 29 10:42:17 2012 +0200
@@ -52,6 +52,8 @@
 
 namespace ns3 {
 
+#define MAX_PKTS_PER_TRACE_FILE 100000
+
 /**
  * \defgroup netanim Netanim
  *
@@ -85,10 +87,16 @@
   /**
    * \brief Constructor
    * \param filename The Filename for the trace file used by the Animator
+   * \param maxPktsPerFile The maximum number of packets per trace file.
+	    AnimationInterface will create trace files with the following 
+            filenames : filename, filename-1, filename-2..., filename-N
+	    where each file contains packet info for 'maxPktPerFile' number of packets
    * \param usingXML Set to true if XML output traces are required
    *
    */
-  AnimationInterface (const std::string filename, bool usingXML = true);
+  AnimationInterface (const std::string filename, 
+	uint64_t maxPktsPerFile = MAX_PKTS_PER_TRACE_FILE, 
+	bool usingXML = true);
 
   /**
    * \brief Constructor
@@ -169,9 +177,10 @@
    * on prior calls to SetOutputFile, SetServerPort, or SetInternalAnimation.
    * Then creates the callbacks needed for the animator to start processing
    * packets.
-   *
+   * 
+   * \param restart True when restarting animation
    */
-  void StartAnimation ();
+  void StartAnimation (bool restart = false);
 
   /**
    * \brief Closes the interface to the animator.
@@ -269,6 +278,15 @@
   void EnablePacketMetadata (bool enable);
 
 
+  /**
+   *
+   * \brief Get trace file packet count (This used only for testing)
+   *
+   * returns Number of packets recorded in the current trace file
+   *
+   */
+  uint64_t GetTracePktCount ();
+
 
 private:
 #ifndef WIN32
@@ -280,12 +298,21 @@
   int  WriteN (SOCKET, const char*, uint32_t);
 #endif
   bool m_xml;      // True if xml format desired
-  Time mobilitypollinterval;
-  bool usingSockets;
-  uint16_t mport;
-  std::string outputfilename;
-  bool OutputFileSet;
-  bool ServerPortSet;
+  Time m_mobilityPollInterval;
+  bool m_usingSockets;
+  uint16_t m_port;
+  std::string m_outputFileName;
+  bool m_outputFileSet;
+  bool m_serverPortSet;
+  uint64_t gAnimUid ;    // Packet unique identifier used by Animtion
+  bool m_randomPosition;
+  AnimWriteCallback m_writeCallback;
+  bool m_started;
+  bool m_enablePacketMetadata; 
+  Time m_startTime;
+  Time m_stopTime;
+  uint64_t m_maxPktsPerFile;
+  std::string m_originalFileName;
 
   void DevTxTrace (std::string context,
                    Ptr<const Packet> p,
@@ -339,27 +366,26 @@
   void OutputCsmaPacket (Ptr<const Packet> p, AnimPacketInfo& pktInfo, AnimRxInfo pktrxInfo);
   void MobilityAutoCheck ();
   
-  uint64_t gAnimUid ;    // Packet unique identifier used by Animtion
 
-  std::map<uint64_t, AnimPacketInfo> pendingWifiPackets;
+  std::map<uint64_t, AnimPacketInfo> m_pendingWifiPackets;
   void AddPendingWifiPacket (uint64_t AnimUid, AnimPacketInfo&);
   bool WifiPacketIsPending (uint64_t AnimUid); 
 
-  std::map<uint64_t, AnimPacketInfo> pendingWimaxPackets;
+  std::map<uint64_t, AnimPacketInfo> m_pendingWimaxPackets;
   void AddPendingWimaxPacket (uint64_t AnimUid, AnimPacketInfo&);
   bool WimaxPacketIsPending (uint64_t AnimUid); 
 
-  std::map<uint64_t, AnimPacketInfo> pendingLtePackets;
+  std::map<uint64_t, AnimPacketInfo> m_pendingLtePackets;
   void AddPendingLtePacket (uint64_t AnimUid, AnimPacketInfo&);
   bool LtePacketIsPending (uint64_t AnimUid);
 
-  std::map<uint64_t, AnimPacketInfo> pendingCsmaPackets;
+  std::map<uint64_t, AnimPacketInfo> m_pendingCsmaPackets;
   void AddPendingCsmaPacket (uint64_t AnimUid, AnimPacketInfo&);
   bool CsmaPacketIsPending (uint64_t AnimUid);
 
   uint64_t GetAnimUidFromPacket (Ptr <const Packet>);
 
-  std::map<uint32_t, Vector> nodeLocation;
+  std::map<uint32_t, Vector> m_nodeLocation;
   Vector GetPosition (Ptr <Node> n);
   Vector UpdatePosition (Ptr <Node> n);
   Vector UpdatePosition (Ptr <Node> n, Vector v);
@@ -376,14 +402,8 @@
   void RecalcTopoBounds (Vector v);
   std::vector < Ptr <Node> > RecalcTopoBounds ();
 
-  bool randomPosition;
-  AnimWriteCallback m_writeCallback;
   void ConnectCallbacks ();
 
-  bool m_started;
-  bool m_enablePacketMetadata; 
-  Time m_startTime;
-  Time m_stopTime;
   
   std::map <std::string, uint32_t> m_macToNodeIdMap;
   bool IsInTimeWindow ();
@@ -393,14 +413,17 @@
   Ptr <NetDevice> GetNetDeviceFromContext (std::string context);
 
   static std::map <uint32_t, std::string> nodeDescriptions;
+  uint64_t m_currentPktCount;
+
+  void StartNewTraceFile();
 
   // XML helpers
   std::string GetPreamble (void);
   // Topology element dimensions
-  double topo_minX;
-  double topo_minY;
-  double topo_maxX;
-  double topo_maxY;
+  double m_topoMinX;
+  double m_topoMinY;
+  double m_topoMaxX;
+  double m_topoMaxY;
 
   std::string GetPacketMetadata (Ptr<const Packet> p);
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/netanim/test/examples-to-run.py	Tue May 29 10:42:17 2012 +0200
@@ -0,0 +1,23 @@
+#! /usr/bin/env python
+## -*- Mode: python; py-indent-offset: 4; indent-tabs-mode: nil; coding: utf-8; -*-
+
+# A list of C++ examples to run in order to ensure that they remain
+# buildable and runnable over time.  Each tuple in the list contains
+#
+#     (example_name, do_run, do_valgrind_run).
+#
+# See test.py for more information.
+cpp_examples = [
+    ("dumbbell-animation", "True", "False"),
+    ("star-animation", "True", "False"),
+    ("grid-animation", "True", "False"),
+    ("wireless-animation", "True", "False"),
+]
+
+# A list of Python examples to run in order to ensure that they remain
+# runnable over time.  Each tuple in the list contains
+#
+#     (example_name, do_run).
+#
+# See test.py for more information.
+python_examples = []
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/netanim/test/netanim-test.cc	Tue May 29 10:42:17 2012 +0200
@@ -0,0 +1,119 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Author: John Abraham <john.abraham@gatech.edu>
+ */
+
+#include <iostream>
+#include "unistd.h"
+
+#include "ns3/core-module.h"
+#include "ns3/network-module.h"
+#include "ns3/internet-module.h"
+#include "ns3/point-to-point-module.h"
+#include "ns3/netanim-module.h"
+#include "ns3/applications-module.h"
+#include "ns3/point-to-point-layout-module.h"
+
+namespace ns3 {
+
+class AnimationInterfaceTestCase : public TestCase
+{
+public:
+  /**
+   * \brief Constructor.
+   */
+  AnimationInterfaceTestCase ();
+  /**
+   * \brief Destructor.
+   */
+  virtual
+  ~AnimationInterfaceTestCase ();
+  /**
+   * \brief Run unit tests for this class.
+   * \return false if all tests have passed, false otherwise
+   */
+  virtual void
+  DoRun (void);
+
+};
+
+AnimationInterfaceTestCase::AnimationInterfaceTestCase () :
+  TestCase ("Verify AnimationInterface")
+{
+}
+
+AnimationInterfaceTestCase::~AnimationInterfaceTestCase ()
+{
+}
+void
+AnimationInterfaceTestCase::DoRun (void)
+{
+  NodeContainer nodes;
+  nodes.Create (2);
+  AnimationInterface::SetConstantPosition (nodes.Get (0), 0 , 10);
+  AnimationInterface::SetConstantPosition (nodes.Get (1), 1 , 10);
+
+  PointToPointHelper pointToPoint;
+  pointToPoint.SetDeviceAttribute ("DataRate", StringValue ("5Mbps"));
+  pointToPoint.SetChannelAttribute ("Delay", StringValue ("2ms"));
+
+  NetDeviceContainer devices;
+  devices = pointToPoint.Install (nodes);
+
+  InternetStackHelper stack;
+  stack.Install (nodes);
+
+  Ipv4AddressHelper address;
+  address.SetBase ("10.1.1.0", "255.255.255.0");
+
+  Ipv4InterfaceContainer interfaces = address.Assign (devices);
+
+  UdpEchoServerHelper echoServer (9);
+
+  ApplicationContainer serverApps = echoServer.Install (nodes.Get (1));
+  serverApps.Start (Seconds (1.0));
+  serverApps.Stop (Seconds (10.0));
+
+  UdpEchoClientHelper echoClient (interfaces.GetAddress (1), 9);
+  echoClient.SetAttribute ("MaxPackets", UintegerValue (100));
+  echoClient.SetAttribute ("Interval", TimeValue (Seconds (1.0)));
+  echoClient.SetAttribute ("PacketSize", UintegerValue (1024));
+
+  ApplicationContainer clientApps = echoClient.Install (nodes.Get (0));
+  clientApps.Start (Seconds (2.0));
+  clientApps.Stop (Seconds (10.0));
+  std::string traceFileName = "netanim-test.xml";
+  AnimationInterface anim(traceFileName.c_str ());
+  Simulator::Run ();
+  NS_TEST_ASSERT_MSG_EQ (anim.GetTracePktCount (), 32, "Expected 32 packets traced");
+  FILE * fp = fopen (traceFileName.c_str (), "r");
+  NS_TEST_ASSERT_MSG_NE (fp, 0, "Trace file was not created");
+  fclose (fp);
+  unlink (traceFileName.c_str ());
+  Simulator::Destroy ();
+}
+
+static class AnimationInterfaceTestSuite : public TestSuite
+{
+public:
+  AnimationInterfaceTestSuite () :
+    TestSuite ("animation-interface", UNIT)
+  {
+    AddTestCase (new AnimationInterfaceTestCase ());
+  }
+} g_animationInterfaceTestSuite;
+
+} // namespace ns3
--- a/src/netanim/wscript	Fri May 18 10:30:14 2012 +0200
+++ b/src/netanim/wscript	Tue May 29 10:42:17 2012 +0200
@@ -14,6 +14,10 @@
 			  'model/animation-interface.cc',
 			  'helper/animation-interface-helper.cc',
 		        ]
+    	netanim_test = bld.create_ns3_module_test_library('netanim')
+    	netanim_test.source = [
+        	'test/netanim-test.cc',
+        ]
 
 	headers = bld.new_task_gen (features=['ns3header'])
 	headers.module = 'netanim'
--- a/src/propagation/bindings/modulegen__gcc_ILP32.py	Fri May 18 10:30:14 2012 +0200
+++ b/src/propagation/bindings/modulegen__gcc_ILP32.py	Tue May 29 10:42:17 2012 +0200
@@ -34,6 +34,8 @@
     module.add_class('ObjectBase', allow_subclassing=True, import_from_module='ns.core')
     ## object.h (module 'core'): ns3::ObjectDeleter [struct]
     module.add_class('ObjectDeleter', import_from_module='ns.core')
+    ## propagation-cache.h (module 'propagation'): ns3::PropagationCache<ns3::JakesProcess> [class]
+    module.add_class('PropagationCache', template_parameters=['ns3::JakesProcess'])
     ## random-variable.h (module 'core'): ns3::RandomVariable [class]
     module.add_class('RandomVariable', import_from_module='ns.core')
     ## random-variable.h (module 'core'): ns3::SeedManager [class]
@@ -152,6 +154,8 @@
     module.add_class('ItuR1411LosPropagationLossModel', parent=root_module['ns3::PropagationLossModel'])
     ## itu-r-1411-nlos-over-rooftop-propagation-loss-model.h (module 'propagation'): ns3::ItuR1411NlosOverRooftopPropagationLossModel [class]
     module.add_class('ItuR1411NlosOverRooftopPropagationLossModel', parent=root_module['ns3::PropagationLossModel'])
+    ## jakes-process.h (module 'propagation'): ns3::JakesProcess [class]
+    module.add_class('JakesProcess', parent=root_module['ns3::Object'])
     ## jakes-propagation-loss-model.h (module 'propagation'): ns3::JakesPropagationLossModel [class]
     module.add_class('JakesPropagationLossModel', parent=root_module['ns3::PropagationLossModel'])
     ## kun-2600-mhz-propagation-loss-model.h (module 'propagation'): ns3::Kun2600MhzPropagationLossModel [class]
@@ -215,6 +219,7 @@
     register_Ns3CallbackBase_methods(root_module, root_module['ns3::CallbackBase'])
     register_Ns3ObjectBase_methods(root_module, root_module['ns3::ObjectBase'])
     register_Ns3ObjectDeleter_methods(root_module, root_module['ns3::ObjectDeleter'])
+    register_Ns3PropagationCache__Ns3JakesProcess_methods(root_module, root_module['ns3::PropagationCache< ns3::JakesProcess >'])
     register_Ns3RandomVariable_methods(root_module, root_module['ns3::RandomVariable'])
     register_Ns3SeedManager_methods(root_module, root_module['ns3::SeedManager'])
     register_Ns3SequentialVariable_methods(root_module, root_module['ns3::SequentialVariable'])
@@ -270,6 +275,7 @@
     register_Ns3FriisPropagationLossModel_methods(root_module, root_module['ns3::FriisPropagationLossModel'])
     register_Ns3ItuR1411LosPropagationLossModel_methods(root_module, root_module['ns3::ItuR1411LosPropagationLossModel'])
     register_Ns3ItuR1411NlosOverRooftopPropagationLossModel_methods(root_module, root_module['ns3::ItuR1411NlosOverRooftopPropagationLossModel'])
+    register_Ns3JakesProcess_methods(root_module, root_module['ns3::JakesProcess'])
     register_Ns3JakesPropagationLossModel_methods(root_module, root_module['ns3::JakesPropagationLossModel'])
     register_Ns3Kun2600MhzPropagationLossModel_methods(root_module, root_module['ns3::Kun2600MhzPropagationLossModel'])
     register_Ns3LogDistancePropagationLossModel_methods(root_module, root_module['ns3::LogDistancePropagationLossModel'])
@@ -421,6 +427,17 @@
                    is_static=True)
     return
 
+def register_Ns3PropagationCache__Ns3JakesProcess_methods(root_module, cls):
+    ## propagation-cache.h (module 'propagation'): ns3::PropagationCache<ns3::JakesProcess>::PropagationCache(ns3::PropagationCache<ns3::JakesProcess> const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::PropagationCache< ns3::JakesProcess > const &', 'arg0')])
+    ## propagation-cache.h (module 'propagation'): ns3::PropagationCache<ns3::JakesProcess>::PropagationCache() [constructor]
+    cls.add_constructor([])
+    ## propagation-cache.h (module 'propagation'): ns3::Ptr<ns3::JakesProcess> ns3::PropagationCache<ns3::JakesProcess>::GetPathData(ns3::Ptr<ns3::MobilityModel const> a, ns3::Ptr<ns3::MobilityModel const> b, uint32_t modelUid) [member function]
+    cls.add_method('GetPathData', 
+                   'ns3::Ptr< ns3::JakesProcess >', 
+                   [param('ns3::Ptr< ns3::MobilityModel const >', 'a'), param('ns3::Ptr< ns3::MobilityModel const >', 'b'), param('uint32_t', 'modelUid')])
+    return
+
 def register_Ns3RandomVariable_methods(root_module, cls):
     cls.add_output_stream_operator()
     ## random-variable.h (module 'core'): ns3::RandomVariable::RandomVariable() [constructor]
@@ -1832,32 +1849,36 @@
                    is_const=True, visibility='private', is_virtual=True)
     return
 
-def register_Ns3JakesPropagationLossModel_methods(root_module, cls):
-    ## jakes-propagation-loss-model.h (module 'propagation'): ns3::JakesPropagationLossModel::JakesPropagationLossModel() [constructor]
+def register_Ns3JakesProcess_methods(root_module, cls):
+    ## jakes-process.h (module 'propagation'): ns3::JakesProcess::JakesProcess(ns3::JakesProcess const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::JakesProcess const &', 'arg0')])
+    ## jakes-process.h (module 'propagation'): ns3::JakesProcess::JakesProcess() [constructor]
     cls.add_constructor([])
-    ## jakes-propagation-loss-model.h (module 'propagation'): uint8_t ns3::JakesPropagationLossModel::GetNOscillators() const [member function]
-    cls.add_method('GetNOscillators', 
-                   'uint8_t', 
+    ## jakes-process.h (module 'propagation'): double ns3::JakesProcess::GetChannelGainDb() const [member function]
+    cls.add_method('GetChannelGainDb', 
+                   'double', 
                    [], 
                    is_const=True)
-    ## jakes-propagation-loss-model.h (module 'propagation'): uint8_t ns3::JakesPropagationLossModel::GetNRays() const [member function]
-    cls.add_method('GetNRays', 
-                   'uint8_t', 
+    ## jakes-process.h (module 'propagation'): std::complex<double> ns3::JakesProcess::GetComplexGain() const [member function]
+    cls.add_method('GetComplexGain', 
+                   'std::complex< double >', 
                    [], 
                    is_const=True)
+    ## jakes-process.h (module 'propagation'): static ns3::TypeId ns3::JakesProcess::GetTypeId() [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
+    return
+
+def register_Ns3JakesPropagationLossModel_methods(root_module, cls):
     ## jakes-propagation-loss-model.h (module 'propagation'): static ns3::TypeId ns3::JakesPropagationLossModel::GetTypeId() [member function]
     cls.add_method('GetTypeId', 
                    'ns3::TypeId', 
                    [], 
                    is_static=True)
-    ## jakes-propagation-loss-model.h (module 'propagation'): void ns3::JakesPropagationLossModel::SetNOscillators(uint8_t nOscillators) [member function]
-    cls.add_method('SetNOscillators', 
-                   'void', 
-                   [param('uint8_t', 'nOscillators')])
-    ## jakes-propagation-loss-model.h (module 'propagation'): void ns3::JakesPropagationLossModel::SetNRays(uint8_t nRays) [member function]
-    cls.add_method('SetNRays', 
-                   'void', 
-                   [param('uint8_t', 'nRays')])
+    ## jakes-propagation-loss-model.h (module 'propagation'): ns3::JakesPropagationLossModel::JakesPropagationLossModel() [constructor]
+    cls.add_constructor([])
     ## jakes-propagation-loss-model.h (module 'propagation'): double ns3::JakesPropagationLossModel::DoCalcRxPower(double txPowerDbm, ns3::Ptr<ns3::MobilityModel> a, ns3::Ptr<ns3::MobilityModel> b) const [member function]
     cls.add_method('DoCalcRxPower', 
                    'double', 
@@ -1941,7 +1962,7 @@
     cls.add_constructor([param('ns3::MobilityModel const &', 'arg0')])
     ## mobility-model.h (module 'mobility'): ns3::MobilityModel::MobilityModel() [constructor]
     cls.add_constructor([])
-    ## mobility-model.h (module 'mobility'): double ns3::MobilityModel::GetDistanceFrom(ns3::Ptr<const ns3::MobilityModel> position) const [member function]
+    ## mobility-model.h (module 'mobility'): double ns3::MobilityModel::GetDistanceFrom(ns3::Ptr<ns3::MobilityModel const> position) const [member function]
     cls.add_method('GetDistanceFrom', 
                    'double', 
                    [param('ns3::Ptr< ns3::MobilityModel const >', 'position')], 
@@ -1951,7 +1972,7 @@
                    'ns3::Vector', 
                    [], 
                    is_const=True)
-    ## mobility-model.h (module 'mobility'): double ns3::MobilityModel::GetRelativeSpeed(ns3::Ptr<const ns3::MobilityModel> other) const [member function]
+    ## mobility-model.h (module 'mobility'): double ns3::MobilityModel::GetRelativeSpeed(ns3::Ptr<ns3::MobilityModel const> other) const [member function]
     cls.add_method('GetRelativeSpeed', 
                    'double', 
                    [param('ns3::Ptr< ns3::MobilityModel const >', 'other')], 
--- a/src/propagation/bindings/modulegen__gcc_LP64.py	Fri May 18 10:30:14 2012 +0200
+++ b/src/propagation/bindings/modulegen__gcc_LP64.py	Tue May 29 10:42:17 2012 +0200
@@ -34,6 +34,8 @@
     module.add_class('ObjectBase', allow_subclassing=True, import_from_module='ns.core')
     ## object.h (module 'core'): ns3::ObjectDeleter [struct]
     module.add_class('ObjectDeleter', import_from_module='ns.core')
+    ## propagation-cache.h (module 'propagation'): ns3::PropagationCache<ns3::JakesProcess> [class]
+    module.add_class('PropagationCache', template_parameters=['ns3::JakesProcess'])
     ## random-variable.h (module 'core'): ns3::RandomVariable [class]
     module.add_class('RandomVariable', import_from_module='ns.core')
     ## random-variable.h (module 'core'): ns3::SeedManager [class]
@@ -152,6 +154,8 @@
     module.add_class('ItuR1411LosPropagationLossModel', parent=root_module['ns3::PropagationLossModel'])
     ## itu-r-1411-nlos-over-rooftop-propagation-loss-model.h (module 'propagation'): ns3::ItuR1411NlosOverRooftopPropagationLossModel [class]
     module.add_class('ItuR1411NlosOverRooftopPropagationLossModel', parent=root_module['ns3::PropagationLossModel'])
+    ## jakes-process.h (module 'propagation'): ns3::JakesProcess [class]
+    module.add_class('JakesProcess', parent=root_module['ns3::Object'])
     ## jakes-propagation-loss-model.h (module 'propagation'): ns3::JakesPropagationLossModel [class]
     module.add_class('JakesPropagationLossModel', parent=root_module['ns3::PropagationLossModel'])
     ## kun-2600-mhz-propagation-loss-model.h (module 'propagation'): ns3::Kun2600MhzPropagationLossModel [class]
@@ -215,6 +219,7 @@
     register_Ns3CallbackBase_methods(root_module, root_module['ns3::CallbackBase'])
     register_Ns3ObjectBase_methods(root_module, root_module['ns3::ObjectBase'])
     register_Ns3ObjectDeleter_methods(root_module, root_module['ns3::ObjectDeleter'])
+    register_Ns3PropagationCache__Ns3JakesProcess_methods(root_module, root_module['ns3::PropagationCache< ns3::JakesProcess >'])
     register_Ns3RandomVariable_methods(root_module, root_module['ns3::RandomVariable'])
     register_Ns3SeedManager_methods(root_module, root_module['ns3::SeedManager'])
     register_Ns3SequentialVariable_methods(root_module, root_module['ns3::SequentialVariable'])
@@ -270,6 +275,7 @@
     register_Ns3FriisPropagationLossModel_methods(root_module, root_module['ns3::FriisPropagationLossModel'])
     register_Ns3ItuR1411LosPropagationLossModel_methods(root_module, root_module['ns3::ItuR1411LosPropagationLossModel'])
     register_Ns3ItuR1411NlosOverRooftopPropagationLossModel_methods(root_module, root_module['ns3::ItuR1411NlosOverRooftopPropagationLossModel'])
+    register_Ns3JakesProcess_methods(root_module, root_module['ns3::JakesProcess'])
     register_Ns3JakesPropagationLossModel_methods(root_module, root_module['ns3::JakesPropagationLossModel'])
     register_Ns3Kun2600MhzPropagationLossModel_methods(root_module, root_module['ns3::Kun2600MhzPropagationLossModel'])
     register_Ns3LogDistancePropagationLossModel_methods(root_module, root_module['ns3::LogDistancePropagationLossModel'])
@@ -421,6 +427,17 @@
                    is_static=True)
     return
 
+def register_Ns3PropagationCache__Ns3JakesProcess_methods(root_module, cls):
+    ## propagation-cache.h (module 'propagation'): ns3::PropagationCache<ns3::JakesProcess>::PropagationCache(ns3::PropagationCache<ns3::JakesProcess> const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::PropagationCache< ns3::JakesProcess > const &', 'arg0')])
+    ## propagation-cache.h (module 'propagation'): ns3::PropagationCache<ns3::JakesProcess>::PropagationCache() [constructor]
+    cls.add_constructor([])
+    ## propagation-cache.h (module 'propagation'): ns3::Ptr<ns3::JakesProcess> ns3::PropagationCache<ns3::JakesProcess>::GetPathData(ns3::Ptr<ns3::MobilityModel const> a, ns3::Ptr<ns3::MobilityModel const> b, uint32_t modelUid) [member function]
+    cls.add_method('GetPathData', 
+                   'ns3::Ptr< ns3::JakesProcess >', 
+                   [param('ns3::Ptr< ns3::MobilityModel const >', 'a'), param('ns3::Ptr< ns3::MobilityModel const >', 'b'), param('uint32_t', 'modelUid')])
+    return
+
 def register_Ns3RandomVariable_methods(root_module, cls):
     cls.add_output_stream_operator()
     ## random-variable.h (module 'core'): ns3::RandomVariable::RandomVariable() [constructor]
@@ -1832,32 +1849,36 @@
                    is_const=True, visibility='private', is_virtual=True)
     return
 
-def register_Ns3JakesPropagationLossModel_methods(root_module, cls):
-    ## jakes-propagation-loss-model.h (module 'propagation'): ns3::JakesPropagationLossModel::JakesPropagationLossModel() [constructor]
+def register_Ns3JakesProcess_methods(root_module, cls):
+    ## jakes-process.h (module 'propagation'): ns3::JakesProcess::JakesProcess(ns3::JakesProcess const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::JakesProcess const &', 'arg0')])
+    ## jakes-process.h (module 'propagation'): ns3::JakesProcess::JakesProcess() [constructor]
     cls.add_constructor([])
-    ## jakes-propagation-loss-model.h (module 'propagation'): uint8_t ns3::JakesPropagationLossModel::GetNOscillators() const [member function]
-    cls.add_method('GetNOscillators', 
-                   'uint8_t', 
+    ## jakes-process.h (module 'propagation'): double ns3::JakesProcess::GetChannelGainDb() const [member function]
+    cls.add_method('GetChannelGainDb', 
+                   'double', 
                    [], 
                    is_const=True)
-    ## jakes-propagation-loss-model.h (module 'propagation'): uint8_t ns3::JakesPropagationLossModel::GetNRays() const [member function]
-    cls.add_method('GetNRays', 
-                   'uint8_t', 
+    ## jakes-process.h (module 'propagation'): std::complex<double> ns3::JakesProcess::GetComplexGain() const [member function]
+    cls.add_method('GetComplexGain', 
+                   'std::complex< double >', 
                    [], 
                    is_const=True)
+    ## jakes-process.h (module 'propagation'): static ns3::TypeId ns3::JakesProcess::GetTypeId() [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
+    return
+
+def register_Ns3JakesPropagationLossModel_methods(root_module, cls):
     ## jakes-propagation-loss-model.h (module 'propagation'): static ns3::TypeId ns3::JakesPropagationLossModel::GetTypeId() [member function]
     cls.add_method('GetTypeId', 
                    'ns3::TypeId', 
                    [], 
                    is_static=True)
-    ## jakes-propagation-loss-model.h (module 'propagation'): void ns3::JakesPropagationLossModel::SetNOscillators(uint8_t nOscillators) [member function]
-    cls.add_method('SetNOscillators', 
-                   'void', 
-                   [param('uint8_t', 'nOscillators')])
-    ## jakes-propagation-loss-model.h (module 'propagation'): void ns3::JakesPropagationLossModel::SetNRays(uint8_t nRays) [member function]
-    cls.add_method('SetNRays', 
-                   'void', 
-                   [param('uint8_t', 'nRays')])
+    ## jakes-propagation-loss-model.h (module 'propagation'): ns3::JakesPropagationLossModel::JakesPropagationLossModel() [constructor]
+    cls.add_constructor([])
     ## jakes-propagation-loss-model.h (module 'propagation'): double ns3::JakesPropagationLossModel::DoCalcRxPower(double txPowerDbm, ns3::Ptr<ns3::MobilityModel> a, ns3::Ptr<ns3::MobilityModel> b) const [member function]
     cls.add_method('DoCalcRxPower', 
                    'double', 
@@ -1941,7 +1962,7 @@
     cls.add_constructor([param('ns3::MobilityModel const &', 'arg0')])
     ## mobility-model.h (module 'mobility'): ns3::MobilityModel::MobilityModel() [constructor]
     cls.add_constructor([])
-    ## mobility-model.h (module 'mobility'): double ns3::MobilityModel::GetDistanceFrom(ns3::Ptr<const ns3::MobilityModel> position) const [member function]
+    ## mobility-model.h (module 'mobility'): double ns3::MobilityModel::GetDistanceFrom(ns3::Ptr<ns3::MobilityModel const> position) const [member function]
     cls.add_method('GetDistanceFrom', 
                    'double', 
                    [param('ns3::Ptr< ns3::MobilityModel const >', 'position')], 
@@ -1951,7 +1972,7 @@
                    'ns3::Vector', 
                    [], 
                    is_const=True)
-    ## mobility-model.h (module 'mobility'): double ns3::MobilityModel::GetRelativeSpeed(ns3::Ptr<const ns3::MobilityModel> other) const [member function]
+    ## mobility-model.h (module 'mobility'): double ns3::MobilityModel::GetRelativeSpeed(ns3::Ptr<ns3::MobilityModel const> other) const [member function]
     cls.add_method('GetRelativeSpeed', 
                    'double', 
                    [param('ns3::Ptr< ns3::MobilityModel const >', 'other')], 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/propagation/examples/jakes-propagation-model-example.cc	Tue May 29 10:42:17 2012 +0200
@@ -0,0 +1,98 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2012 Telum (www.telum.ru)
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Author: Kirill Andreev <andreev@telum.ru>
+ */
+#include "ns3/core-module.h"
+#include "ns3/mobility-module.h"
+#include "ns3/jakes-propagation-loss-model.h"
+#include <vector>
+#include <math.h>
+
+using namespace ns3;
+/**
+ * \ingroup propagation
+ * \brief Constructs a JakesPropagationlossModel and print the loss value as a function of time into std::cout.
+ * Distribution and correlation statistics is compared woth a theoretical ones using R package (http://www.r-project.org/).
+ * Scripts are presented within comments.
+ */
+class JakesPropagationExample
+{
+public:
+  JakesPropagationExample ();
+  ~JakesPropagationExample ();
+private:
+  Ptr<PropagationLossModel> m_loss;
+  Ptr<MobilityModel> m_firstMobility;
+  Ptr<MobilityModel> m_secondMobility;
+  Time m_step;
+  EventId m_nextEvent;
+  void Next ();
+
+};
+
+JakesPropagationExample::JakesPropagationExample () :
+  m_step (Seconds (0.0002)) //1/5000 part of the second
+{
+  m_loss = CreateObject<JakesPropagationLossModel> ();
+  m_firstMobility = CreateObject<ConstantPositionMobilityModel> ();
+  m_secondMobility = CreateObject<ConstantPositionMobilityModel> ();
+  m_firstMobility->SetPosition (Vector (0, 0, 0));
+  m_secondMobility->SetPosition (Vector (10, 0, 0));
+  m_nextEvent = Simulator::Schedule (m_step, &JakesPropagationExample::Next, this);
+}
+
+JakesPropagationExample::~JakesPropagationExample ()
+{
+}
+
+void JakesPropagationExample::Next ()
+{
+  m_nextEvent = Simulator::Schedule (m_step, &JakesPropagationExample::Next, this);
+  std::cout << Simulator::Now ().GetMilliSeconds () << " " << m_loss->CalcRxPower (0, m_firstMobility, m_secondMobility) << std::endl;
+}
+
+int main (int argc, char *argv[])
+{
+  Config::SetDefault ("ns3::JakesProcess::NumberOfOscillators", UintegerValue (100));
+  CommandLine cmd;
+  cmd.Parse (argc, argv);
+  JakesPropagationExample example;
+  Simulator::Stop (Seconds (1000));
+  Simulator::Run ();
+  Simulator::Destroy ();
+  /*
+   * R script for plotting a distribution:
+   data<-read.table ("data")
+   rayleigh<-(rnorm(1e6)^2+rnorm(1e6)^2)/2
+   qqplot(10*log10(rayleigh), data$V2, main="QQ-plot for improved Jakes model", xlab="Reference Rayleigh distribution [power, dB]", ylab="Sum-of-sinusoids distribution [power, dB]", xlim=c(-45, 10), ylim=c(-45, 10))
+   lines (c(-50, 50), c(-50, 50))
+   abline (v=-50:50*2, h=-50:50*2, col="light grey")
+   */
+
+  /*
+   * R script to plot autocorrelation function:
+   # Read amplitude distribution:
+   data<-10^(read.table ("data")$V2/20)
+   x<-1:2000/10
+   acf (data, lag.max=200, main="Autocorrelation function of the improved Jakes model", xlab="Time x200 microseconds ", ylab="Autocorrelation")
+   # If we have a delta T = 1/5000 part of the second and doppler freq = 80 Hz
+   lines (x, besselJ(x*80*2*pi/5000, 0)^2)
+   abline (h=0:10/10, col="light grey")
+   */
+  return 0;
+}
--- a/src/propagation/examples/main-propagation-loss.cc	Fri May 18 10:30:14 2012 +0200
+++ b/src/propagation/examples/main-propagation-loss.cc	Tue May 29 10:42:17 2012 +0200
@@ -249,7 +249,7 @@
     Ptr<JakesPropagationLossModel> jakes = CreateObject<JakesPropagationLossModel> ();
 
     // doppler frequency shift for 5.15 GHz at 100 km/h
-    jakes->SetAttribute ("DopplerFreq", DoubleValue (477.9));
+    Config::SetDefault ("ns3::JakesProcess::DopplerFrequencyHz", DoubleValue (477.9));
 
     Gnuplot plot = TestDeterministicByTime (jakes, Seconds (0.001), Seconds (1.0));
     plot.SetTitle ("ns3::JakesPropagationLossModel (with 477.9 Hz shift and 1 millisec resolution)");
@@ -260,7 +260,7 @@
     Ptr<JakesPropagationLossModel> jakes = CreateObject<JakesPropagationLossModel> ();
 
     // doppler frequency shift for 5.15 GHz at 100 km/h
-    jakes->SetAttribute ("DopplerFreq", DoubleValue (477.9));
+    Config::SetDefault ("ns3::JakesProcess::DopplerFrequencyHz", DoubleValue (477.9));
 
     Gnuplot plot = TestDeterministicByTime (jakes, Seconds (0.0001), Seconds (0.1));
     plot.SetTitle ("ns3::JakesPropagationLossModel (with 477.9 Hz shift and 0.1 millisec resolution)");
--- a/src/propagation/examples/wscript	Fri May 18 10:30:14 2012 +0200
+++ b/src/propagation/examples/wscript	Tue May 29 10:42:17 2012 +0200
@@ -8,4 +8,9 @@
                                  ['core', 'mobility', 'config-store', 'tools', 'propagation'])
     obj.source = 'main-propagation-loss.cc'
 
+    obj = bld.create_ns3_program('jakes-propagation-model-example',
+                                 ['core', 'propagation'])
+    obj.source = 'jakes-propagation-model-example.cc'
 
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/propagation/model/jakes-process.cc	Tue May 29 10:42:17 2012 +0200
@@ -0,0 +1,134 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2012 Telum (www.telum.ru)
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Author: Kirill Andreev <andreev@telum.ru>, Alexander Sofronov <sofronov@telum.ru>
+ */
+
+#include "jakes-process.h"
+#include "ns3/random-variable.h"
+#include "ns3/simulator.h"
+#include "ns3/double.h"
+#include "ns3/uinteger.h"
+
+namespace ns3 {
+const double JakesProcess::PI = 3.14159265358979323846;
+
+/// Represents a single oscillator
+JakesProcess::Oscillator::Oscillator (std::complex<double> amplitude, double initialPhase, double omega) :
+  m_amplitude (amplitude),
+  m_phase (initialPhase),
+  m_omega (omega)
+{}
+
+std::complex<double>
+JakesProcess::Oscillator::GetValueAt (Time at) const
+{
+  return (m_amplitude * cos (at.GetSeconds () * m_omega + m_phase));
+}
+
+NS_OBJECT_ENSURE_REGISTERED (JakesProcess);
+
+TypeId
+JakesProcess::GetTypeId ()
+{
+  static TypeId tid = TypeId ("ns3::JakesProcess")
+    .SetParent<Object> ()
+    .AddConstructor<JakesProcess> ()
+    .AddAttribute ("DopplerFrequencyHz", "Corresponding doppler frequency[Hz]",
+                   DoubleValue (80),
+                   MakeDoubleAccessor (&JakesProcess::SetDopplerFrequencyHz),
+                   MakeDoubleChecker<double> (0.0, 1e4))
+    .AddAttribute ("NumberOfOscillators", "The number of oscillators",
+                   UintegerValue (20),
+                   MakeUintegerAccessor (&JakesProcess::SetNOscillators),
+                   MakeUintegerChecker<unsigned int> (4, 1000))
+  ;
+  return tid;
+}
+
+void
+JakesProcess::SetNOscillators (unsigned int nOscillators)
+{
+  m_nOscillators = nOscillators;
+  if (m_omegaDopplerMax != 0)
+    {
+      ConstructOscillators ();
+    }
+}
+
+void
+JakesProcess::SetDopplerFrequencyHz (double dopplerFrequencyHz)
+{
+  m_omegaDopplerMax = 2 * dopplerFrequencyHz * PI;
+  if (m_nOscillators != 0)
+    {
+      ConstructOscillators ();
+    }
+}
+
+void
+JakesProcess::ConstructOscillators ()
+{
+  // Initial phase is common for all oscillators:
+  double phi = UniformVariable (-PI, PI).GetValue ();
+  // Theta is common for all oscillatoer:
+  double theta = UniformVariable (-PI, PI).GetValue ();
+  for (unsigned int i = 0; i < m_nOscillators; i++)
+    {
+      unsigned int n = i + 1;
+      /// 1. Rotation speed
+      /// 1a. Initiate \f[ \alpha_n = \frac{2\pi n - \pi + \theta}{4M},  n=1,2, \ldots,M\f], n is oscillatorNumber, M is m_nOscillators
+      double alpha = (2.0 * PI * n - PI + theta) / (4.0 * m_nOscillators);
+      /// 1b. Initiate rotation speed:
+      double omega = m_omegaDopplerMax * cos (alpha);
+      /// 2. Initiate complex amplitude:
+      double psi = UniformVariable (-PI, PI).GetValue ();
+      std::complex<double> amplitude = std::complex<double> (cos (psi), sin (psi)) * 2.0 / sqrt (m_nOscillators);
+      /// 3. Construct oscillator:
+      m_oscillators.push_back (Oscillator (amplitude, phi, omega)); 
+    }
+}
+
+JakesProcess::JakesProcess () :
+  m_omegaDopplerMax (0),
+  m_nOscillators (0)
+{}
+
+JakesProcess::~JakesProcess()
+{
+  m_oscillators.clear ();
+}
+
+std::complex<double>
+JakesProcess::GetComplexGain () const
+{
+  std::complex<double> sumAplitude = std::complex<double> (0, 0);
+  for (unsigned int i = 0; i < m_oscillators.size (); i++)
+    {
+      sumAplitude += m_oscillators[i].GetValueAt (Now ());
+    }
+  return sumAplitude;
+}
+
+double
+JakesProcess::GetChannelGainDb () const
+{
+  std::complex<double> complexGain = GetComplexGain ();
+  return (10 * log10 ((pow (complexGain.real (), 2) + pow (complexGain.imag (), 2)) / 2));
+}
+
+} // namespace ns3
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/propagation/model/jakes-process.h	Tue May 29 10:42:17 2012 +0200
@@ -0,0 +1,92 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2012 Telum (www.telum.ru)
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Author: Kirill Andreev <andreev@telum.ru>, Alexander Sofronov <sofronov@telum.ru>
+ */
+#ifndef DOPPLER_PROCESS_H
+#define DOPPLER_PROCESS_H
+
+#include "ns3/object.h"
+#include "ns3/nstime.h"
+#include <complex>
+
+namespace ns3
+{
+/**
+ * \ingroup fading
+ *
+ * \brief Implementation for a single path Stationary Jakes propagation loss model.
+ *
+ * The Jakes propagation loss model implemented here is
+ * described in [1].
+ *
+ * We consider one transmitter - receiver pair and calculate
+ * the complex coefficients for this case as follow:
+ * \f[ X(t)=X_c(t) + j X_s(t)\f]
+ * \f[ X_c(t) = \frac{2}{\sqrt{M}}\sum_{n=1}^{M}\cos(\psi_n)\cos(\omega_d t\cos(\alpha_n)+\phi_n)\f]
+ * \f[ X_s(t) = \frac{2}{\sqrt{M}}\sum_{n=1}^{M}\sin(\psi_n)\cos(\omega_d t\cos(\alpha_n)+\phi_n)\f]
+ * with
+ * \f[ \alpha_n = \frac{2\pi n - \pi + \theta}{4M},  n=1,2, \ldots,M\f]
+ * where
+ *\f$\theta\f$, \f$\phi\f$, and \f$\psi_n\f$ are statically independent and uniformly distributed over \f$[-\pi, \pi)\f$ for all \f$n\f$.
+ *
+ *
+ * [1] Y. R. Zheng and C. Xiao, "Simulation Models With Correct
+ * Statistical Properties for Rayleigh Fading Channel", IEEE
+ * Trans. on Communications, Vol. 51, pp 920-928, June 2003
+ */
+class JakesProcess : public Object
+{
+public:
+  static TypeId GetTypeId (void);
+  JakesProcess ();
+  virtual ~JakesProcess();
+  std::complex<double> GetComplexGain () const;
+  /// Get Channel gain [dB]
+  double GetChannelGainDb () const;
+private:
+  /// Represents a single oscillator
+  struct Oscillator
+  {
+    /// Initiate oscillator with complex amplitude, initial phase and rotation speed
+    Oscillator (std::complex<double> amplitude, double initialPhase, double omega);
+    // Get the complex amplitude at moment \param t
+    std::complex<double> GetValueAt (Time t) const;
+    /// Complex number \f[Re=\cos(\psi_n), Im = i\sin(\psi_n)]
+    std::complex<double> m_amplitude;
+    /// Phase \f[\phi_n] of the oscillator
+    double m_phase;
+    /// Rotation speed of the oscillator \f[\omega_d \cos(\alpha_n)]
+    double m_omega;
+  };
+  /// PI Constant
+  static const double PI;
+private:
+  void SetNOscillators (unsigned int nOscillators);
+  void SetDopplerFrequencyHz (double dopplerFrequencyHz);
+  void ConstructOscillators ();
+private:
+  /// Vector of oscillators:
+  std::vector<Oscillator> m_oscillators;
+  ///\name Attributes:
+  ///\{
+  double m_omegaDopplerMax;
+  unsigned int m_nOscillators;
+  ///\}
+};
+} // namespace ns3
+#endif // DOPPLER_PROCESS_H
--- a/src/propagation/model/jakes-propagation-loss-model.cc	Fri May 18 10:30:14 2012 +0200
+++ b/src/propagation/model/jakes-propagation-loss-model.cc	Tue May 29 10:42:17 2012 +0200
@@ -1,9 +1,9 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /*
- * Copyright (c) 2005,2006,2007 INRIA
+ * Copyright (c) 2012 Telum (www.telum.ru)
  *
  * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as 
+ * it under the terms of the GNU General Public License version 2 as
  * published by the Free Software Foundation;
  *
  * This program is distributed in the hope that it will be useful,
@@ -15,246 +15,37 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  *
- * Author: Federico Maguolo <maguolof@dei.unipd.it>
+ * Author: Kirill Andreev <andreev@telum.ru>
  */
 
-#include "ns3/simulator.h"
-#include "ns3/uinteger.h"
-#include "ns3/double.h"
-#include "ns3/random-variable.h"
-#include "ns3/mobility-model.h"
-#include "ns3/log.h"
 #include "jakes-propagation-loss-model.h"
-#include <math.h>
 
-NS_LOG_COMPONENT_DEFINE ("Jakes");
-
-namespace ns3 {
-
+namespace ns3
+{
 NS_OBJECT_ENSURE_REGISTERED (JakesPropagationLossModel);
 
-class JakesPropagationLossModel::PathCoefficients 
-{
-public:
-  PathCoefficients (Ptr<const JakesPropagationLossModel> jakes,
-                    Ptr<MobilityModel> receiver, 
-                    uint8_t nRays, 
-                    uint8_t nOscillators);
-  ~PathCoefficients ();
-  double GetLoss (Ptr<const JakesPropagationLossModel> jakes);
-  Ptr<MobilityModel> GetReceiver (void);
-private:
-  void DoConstruct (Ptr<const JakesPropagationLossModel> jakes);
-  Ptr<MobilityModel> m_receiver;
-  uint8_t m_nOscillators;
-  uint8_t m_nRays;
-  double **m_phases;
-  Time m_lastUpdate;
-};
-
-
-JakesPropagationLossModel::PathCoefficients::PathCoefficients (Ptr<const JakesPropagationLossModel> jakes, 
-                                                               Ptr<MobilityModel> receiver,
-                                                               uint8_t nRays,
-                                                               uint8_t nOscillators)
-  : m_receiver (receiver),
-    m_nOscillators (nOscillators),
-    m_nRays (nRays)
-{
-  DoConstruct (jakes);
-}
-
-JakesPropagationLossModel::PathCoefficients::~PathCoefficients ()
-{
-  for (uint8_t i = 0; i < m_nRays; i++) 
-    {
-      delete [] m_phases[i];
-    }
-  delete [] m_phases;
-}
+JakesPropagationLossModel::JakesPropagationLossModel()
+{}
 
-void
-JakesPropagationLossModel::PathCoefficients::DoConstruct (Ptr<const JakesPropagationLossModel> jakes)
-{
-  m_phases = new double*[m_nRays];
-  for (uint8_t i = 0; i < m_nRays; i++) 
-    {
-      m_phases[i] = new double[m_nOscillators + 1];
-      for (uint8_t j = 0; j <= m_nOscillators; j++) 
-        {
-          m_phases[i][j] = 2.0 * JakesPropagationLossModel::PI * jakes->m_variable.GetValue ();
-        }
-    }
-  m_lastUpdate = Simulator::Now ();
-}
-
-Ptr<MobilityModel>
-JakesPropagationLossModel::PathCoefficients::GetReceiver ()
-{
-  return m_receiver;
-}
-
-double
-JakesPropagationLossModel::PathCoefficients::GetLoss (Ptr<const JakesPropagationLossModel> jakes)
-{
-  uint16_t N = 4 * m_nOscillators + 2;
-  Time interval = Simulator::Now () - m_lastUpdate;
-  ComplexNumber coef= { 0.0, 0.0};
-  ComplexNumber fading;
-  double norm = 0.0;
-  for (uint8_t i = 0; i < m_nRays; i++) 
-    {
-      fading.real = 0.0;
-      fading.imag = 0.0;
-      for (uint8_t j = 0; j <= m_nOscillators; j++) 
-        {
-          m_phases[i][j] += 2.0 * JakesPropagationLossModel::PI * 
-            cos (2.0 * JakesPropagationLossModel::PI * j / N) * jakes->m_fd * interval.GetSeconds ();
-          m_phases[i][j] -= 2.0 * JakesPropagationLossModel::PI * 
-            floor (m_phases[i][j] / 2.0 / JakesPropagationLossModel::PI);
-          fading.real += jakes->m_amp[j].real * cos (m_phases[i][j]);
-          fading.imag += jakes->m_amp[j].imag * cos (m_phases[i][j]);
-          norm += sqrt (pow (jakes->m_amp[j].real, 2) + pow (jakes->m_amp[j].imag, 2));
-        }
-      coef.real += fading.real;
-      coef.imag += fading.imag;
-    }
-  m_lastUpdate = Simulator::Now ();
-  double k = sqrt (pow (coef.real, 2) + pow (coef.imag, 2)) / norm;
-  NS_LOG_DEBUG ("Jakes coef "<< k << " (" << 10 * log10 (k) << "dB)");
-  return 10 * log10 (k);
-}
-
-const double JakesPropagationLossModel::PI = 3.14159265358979323846;
+JakesPropagationLossModel::~JakesPropagationLossModel()
+{}
 
 TypeId
-JakesPropagationLossModel::GetTypeId (void)
+JakesPropagationLossModel::GetTypeId ()
 {
   static TypeId tid = TypeId ("ns3::JakesPropagationLossModel")
     .SetParent<PropagationLossModel> ()
     .AddConstructor<JakesPropagationLossModel> ()
-    .AddAttribute ("NumberOfRaysPerPath",
-                   "The number of rays to use by default for compute the fading coeficent for a given path (default is 1)",
-                   UintegerValue (1),
-                   MakeUintegerAccessor (&JakesPropagationLossModel::SetNRays,
-                                         &JakesPropagationLossModel::GetNRays),
-                   MakeUintegerChecker<uint8_t> ())
-    .AddAttribute ("NumberOfOscillatorsPerRay",
-                   "The number of oscillators to use by default for compute the coeficent for a given ray of a given "
-                   "path (default is 4)",
-                   UintegerValue (4),
-                   MakeUintegerAccessor (&JakesPropagationLossModel::SetNOscillators,
-                                         &JakesPropagationLossModel::GetNOscillators),
-                   MakeUintegerChecker<uint8_t> ())
-    .AddAttribute ("DopplerFreq",
-                   "The doppler frequency in Hz (f_d = v / lambda = v * f / c), the default is 0)",
-                   DoubleValue (0.0),
-                   MakeDoubleAccessor (&JakesPropagationLossModel::m_fd),
-                   MakeDoubleChecker<double> ())
-    .AddAttribute ("Distribution",
-                   "The distribution to choose the initial phases.",
-                   RandomVariableValue (ConstantVariable (1.0)),
-                   MakeRandomVariableAccessor (&JakesPropagationLossModel::m_variable),
-                   MakeRandomVariableChecker ())
   ;
   return tid;
 }
 
-JakesPropagationLossModel::JakesPropagationLossModel ()
-  : m_amp (0),
-    m_nRays (0),
-    m_nOscillators (0)
-{
-}
-
-JakesPropagationLossModel::~JakesPropagationLossModel ()
-{
-  delete [] m_amp;
-  for (PathsList::reverse_iterator i = m_paths.rbegin (); i != m_paths.rend (); i++)
-    {
-      PathsSet *ps = *i;
-      for (DestinationList::iterator r = ps->receivers.begin (); r != ps->receivers.end (); r++)
-        {
-          PathCoefficients *pc = *r;
-          delete pc;
-        }
-      ps->sender = 0;
-      ps->receivers.clear ();
-      delete ps;
-    }
-  m_paths.clear ();
-}
-
-void
-JakesPropagationLossModel::SetNRays (uint8_t nRays)
-{
-  m_nRays = nRays;
-}
-
-void
-JakesPropagationLossModel::SetNOscillators (uint8_t nOscillators)
-{
-  m_nOscillators = nOscillators;
-  delete [] m_amp;
-  uint16_t N = 4 * m_nOscillators + 2;
-  m_amp = new ComplexNumber[m_nOscillators + 1];
-  m_amp[0].real = 2.0 * sqrt (2.0 / N) * cos (PI / 4.0);
-  m_amp[0].imag = 2.0 * sqrt (2.0 / N) * sin (PI / 4.0);
-  for (uint8_t i = 1; i <= m_nOscillators; i++) 
-    {
-      double beta = PI * (double)i / m_nOscillators;
-      m_amp[i].real = 4.0 * cos (beta) / sqrt (N);
-      m_amp[i].imag = 4.0 * sin (beta) / sqrt (N);
-    }
-}
-
-uint8_t 
-JakesPropagationLossModel::GetNRays (void) const
-{
-  return m_nRays;
-}
-uint8_t 
-JakesPropagationLossModel::GetNOscillators (void) const
-{
-  return m_nOscillators;
-}
-
-
-double 
+double
 JakesPropagationLossModel::DoCalcRxPower (double txPowerDbm,
                                           Ptr<MobilityModel> a,
                                           Ptr<MobilityModel> b) const
 {
-  PathsList::iterator i = m_paths.end ();
-  while (i != m_paths.begin ()) 
-    {
-      i--;
-      PathsSet *ps = *i;
-      if (ps->sender == a) 
-        {
-          m_paths.erase (i);
-          m_paths.push_back (ps);
-          for (DestinationList::iterator r = ps->receivers.begin (); r != ps->receivers.end (); r++) 
-            {
-              PathCoefficients *pc = *r;
-              if (pc->GetReceiver () == b) 
-                {
-                  ps->receivers.erase (r);
-                  ps->receivers.push_back (pc);
-                  return txPowerDbm + pc->GetLoss (this);
-                }
-            }
-          PathCoefficients *pc = new PathCoefficients (this, b, m_nRays, m_nOscillators);
-          ps->receivers.push_back (pc);
-          return txPowerDbm + pc->GetLoss (this);
-        }
-    }
-  PathsSet *ps = new PathsSet;
-  ps->sender = a;
-  PathCoefficients *pc = new PathCoefficients (this, b, m_nRays, m_nOscillators);
-  ps->receivers.push_back (pc);
-  m_paths.push_back (ps);
-  return txPowerDbm + pc->GetLoss (this);
+  return txPowerDbm + m_propagationCache.GetPathData (a, b, 0 /**Spectrum model uid is not used in PropagationLossModel*/)->GetChannelGainDb ();
 }
 
 } // namespace ns3
--- a/src/propagation/model/jakes-propagation-loss-model.h	Fri May 18 10:30:14 2012 +0200
+++ b/src/propagation/model/jakes-propagation-loss-model.h	Tue May 29 10:42:17 2012 +0200
@@ -1,9 +1,9 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /*
- * Copyright (c) 2005,2006,2007 INRIA
+ * Copyright (c) 2012 Telum (www.telum.ru)
  *
  * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as 
+ * it under the terms of the GNU General Public License version 2 as
  * published by the Free Software Foundation;
  *
  * This program is distributed in the hope that it will be useful,
@@ -15,125 +15,41 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  *
- * Author: Federico Maguolo <maguolof@dei.unipd.it>
+ * Author: Kirill Andreev <andreev@telum.ru>
  */
-#ifndef PROPAGATION_JAKES_MODEL_H
-#define PROPAGATION_JAKES_MODEL_H
+#ifndef JAKES_STATIONARY_LOSS_MODEL_H
+#define JAKES_STATIONARY_LOSS_MODEL_H
 
-#include "ns3/nstime.h"
-#include "propagation-loss-model.h"
+#include "ns3/propagation-loss-model.h"
+#include "ns3/propagation-cache.h"
+#include "ns3/jakes-process.h"
 
-namespace ns3 {
-
-
+namespace ns3
+{
 /**
  * \ingroup propagation
  *
- * \brief a Jakes propagation loss model
- *
- * The Jakes propagation loss model implemented here is 
- * described in [1].
- * 
- *
- * We call path the set of rays that depart from a given 
- * transmitter and arrive to a given receiver. For each ray
- * The complex coefficient is compute as follow:
- * \f[ u(t)=u_c(t) + j u_s(t)\f]
- * \f[ u_c(t) = \frac{2}{\sqrt{N}}\sum_{n=0}^{M}a_n\cos(\omega_n t+\phi_n)\f]
- * \f[ u_s(t) = \frac{2}{\sqrt{N}}\sum_{n=0}^{M}b_n\cos(\omega_n t+\phi_n)\f]
- * where
- * \f[ a_n=\left \{ \begin{array}{ll}
- * \sqrt{2}\cos\beta_0 & n=0 \\
- * 2\cos\beta_n & n=1,2,\ldots,M
- * \end{array}
- * \right .\f]
- * \f[ b_n=\left \{ \begin{array}{ll}
- * \sqrt{2}\sin\beta_0 & n=0 \\
- * 2\sin\beta_n & n=1,2,\ldots,M
- * \end{array}
- * \right .\f]
- * \f[ \beta_n=\left \{ \begin{array}{ll}
- * \frac{\pi}{4} & n=0 \\
- * \frac{\pi n}{M} & n=1,2,\ldots,M
- * \end{array}
- * \right .\f]
- * \f[ \omega_n=\left \{ \begin{array}{ll}
- * 2\pi f_d & n=0 \\
- * 2\pi f_d \cos\frac{2\pi n}{N} & n=1,2,\ldots,M
- * \end{array}
- * \right .\f]
- *
- * The parameter \f$f_d\f$ is the doppler frequency and \f$N=4M+2\f$ where
- * \f$M\f$ is the number of oscillators per ray.
- *
- * The attenuation coefficent of the path is the magnitude of the sum of 
- * all the ray coefficients. This attenuation coefficient could be greater than
- * \f$1\f$, hence it is divide by \f$ \frac{2N_r}{\sqrt{N}} \sum_{n+0}^{M}\sqrt{a_n^2 +b_n^2}\f$
- * where \f$N_r\f$ is the number of rays.
- *
- * The initail phases \f$\phi_i\f$ are random and they are choosen according 
- * to a given distribution.
- * 
- * [1] Y. R. Zheng and C. Xiao, "Simulation Models With Correct 
- * Statistical Properties for Rayleigh Fading Channel", IEEE
- * Trans. on Communications, Vol. 51, pp 920-928, June 2003
+ * \brief a  jakes narrowband propagation model.
+ * Symmetrical cache for JakesProcess
  */
+
 class JakesPropagationLossModel : public PropagationLossModel
 {
 public:
-  static TypeId GetTypeId (void);
+  static TypeId GetTypeId ();
   JakesPropagationLossModel ();
   virtual ~JakesPropagationLossModel ();
 
-  /**
-   * \param nRays Number of rays per path
-   *
-   * Set the number of rays for each path
-   */
-  void SetNRays (uint8_t nRays);
-  /**
-   * \param nOscillators Number of oscillators
-   *
-   * Set the number of oscillators to use to compute the ray coefficient
-   */
-  void SetNOscillators (uint8_t nOscillators);
-
-  uint8_t GetNRays (void) const;
-  uint8_t GetNOscillators (void) const;
+private:
+  double DoCalcRxPower (double txPowerDbm,
+                        Ptr<MobilityModel> a,
+                        Ptr<MobilityModel> b) const;
 
 private:
-  JakesPropagationLossModel (const JakesPropagationLossModel &o);
-  JakesPropagationLossModel & operator = (const JakesPropagationLossModel &o);
-  void DoConstruct (void);
-  virtual double DoCalcRxPower (double txPowerDbm,
-                                Ptr<MobilityModel> a,
-                                Ptr<MobilityModel> b) const;
-
-  class PathCoefficients;
-  struct ComplexNumber {
-    double real;
-    double imag;
-  };
-  friend class PathCoefficents;
-  typedef std::vector<PathCoefficients *> DestinationList;
-  struct PathsSet {
-    Ptr<MobilityModel> sender;
-    DestinationList receivers;
-  };
-  typedef std::vector<PathsSet *> PathsList;
-
-
-  static const double PI;
-  ComplexNumber* m_amp;
-  RandomVariable m_variable;
-  double m_fd;
-  mutable PathsList m_paths;
-  uint8_t m_nRays;
-  uint8_t m_nOscillators;
+  mutable PropagationCache<JakesProcess> m_propagationCache;
 };
 
 } // namespace ns3
 
-#endif /* PROPAGATION_JAKES_MODEL_H */
+#endif /* JAKES_STATIONARY_LOSS_MODEL_H */
 
-
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/propagation/model/propagation-cache.h	Tue May 29 10:42:17 2012 +0200
@@ -0,0 +1,86 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2012 Telum (www.telum.ru)
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Author: Kirill Andreev <andreev@telum.ru>
+ */
+#ifndef PROPAGATION_CACHE_H_
+#define PROPAGATION_CACHE_H_
+
+#include "ns3/mobility-model.h"
+#include <map>
+
+namespace ns3
+{
+/**
+ * \ingroup propagation
+ * \brief Constructs a cache of objects, where each obect is responsible for a single propagation path loss calculations.
+ * Propagation path a-->b and b-->a is the same thing. Propagation path is identified by
+ * a couple of MobilityModels and a spectrum model UID
+ */
+template<class T>
+class PropagationCache
+{
+public:
+  PropagationCache () {};
+  ~PropagationCache () {};
+  Ptr<T> GetPathData (Ptr<const MobilityModel> a, Ptr<const MobilityModel> b, uint32_t modelUid)
+  {
+    PropagationPathIdentifier key = PropagationPathIdentifier (a, b, modelUid);
+    typename PathCache::iterator it = m_pathCache.find (key);
+    if (it == m_pathCache.end ())
+      {
+        Ptr<T> newPath = CreateObject<T> ();
+        m_pathCache.insert (std::make_pair (key, newPath));
+        return newPath;
+      }
+    return it->second;
+  };
+private:
+  /// Each path is identified by
+  struct PropagationPathIdentifier
+  {
+    PropagationPathIdentifier (Ptr<const MobilityModel> a, Ptr<const MobilityModel> b, uint32_t modelUid) :
+      m_srcMobility (a), m_dstMobility (b), m_spectrumModelUid (modelUid)
+    {};
+    Ptr<const MobilityModel> m_srcMobility;
+    Ptr<const MobilityModel> m_dstMobility;
+    uint32_t m_spectrumModelUid;
+    bool operator < (const PropagationPathIdentifier & other) const
+    {
+      if (m_spectrumModelUid != other.m_spectrumModelUid)
+        {
+          return m_spectrumModelUid < other.m_spectrumModelUid;
+        }
+      /// Links are supposed to be symmetrical!
+      if (std::min (m_dstMobility, m_srcMobility) != std::min (other.m_dstMobility, other.m_srcMobility))
+        {
+          return std::min (m_dstMobility, m_srcMobility) < std::min (other.m_dstMobility, other.m_srcMobility);
+        }
+      if (std::max (m_dstMobility, m_srcMobility) != std::max (other.m_dstMobility, other.m_srcMobility))
+        {
+          return std::max (m_dstMobility, m_srcMobility) < std::max (other.m_dstMobility, other.m_srcMobility);
+        }
+      return false;
+    }
+  };
+  typedef std::map<PropagationPathIdentifier, Ptr<T> > PathCache;
+private:
+  PathCache m_pathCache;
+};
+} // namespace ns3
+
+#endif // PROPAGATION_CACHE_H_
--- a/src/propagation/wscript	Fri May 18 10:30:14 2012 +0200
+++ b/src/propagation/wscript	Tue May 29 10:42:17 2012 +0200
@@ -7,6 +7,7 @@
         'model/propagation-delay-model.cc',
         'model/propagation-loss-model.cc',
         'model/jakes-propagation-loss-model.cc',
+        'model/jakes-process.cc',
         'model/cost231-propagation-loss-model.cc',
         'model/okumura-hata-propagation-loss-model.cc',
         'model/itu-r-1411-los-propagation-loss-model.cc',
@@ -29,6 +30,8 @@
         'model/propagation-delay-model.h',
         'model/propagation-loss-model.h',
         'model/jakes-propagation-loss-model.h',
+        'model/jakes-process.h',
+        'model/propagation-cache.h',
         'model/cost231-propagation-loss-model.h',
         'model/propagation-environment.h',
         'model/okumura-hata-propagation-loss-model.h',
--- a/src/wifi/bindings/modulegen__gcc_ILP32.py	Fri May 18 10:30:14 2012 +0200
+++ b/src/wifi/bindings/modulegen__gcc_ILP32.py	Tue May 29 10:42:17 2012 +0200
@@ -158,6 +158,8 @@
     module.add_enum('', ['DLT_NULL', 'DLT_EN10MB', 'DLT_PPP', 'DLT_RAW', 'DLT_IEEE802_11', 'DLT_PRISM_HEADER', 'DLT_IEEE802_11_RADIO'], outer_class=root_module['ns3::PcapHelper'], import_from_module='ns.network')
     ## trace-helper.h (module 'network'): ns3::PcapHelperForDevice [class]
     module.add_class('PcapHelperForDevice', allow_subclassing=True, import_from_module='ns.network')
+    ## propagation-cache.h (module 'propagation'): ns3::PropagationCache<ns3::JakesProcess> [class]
+    module.add_class('PropagationCache', import_from_module='ns.propagation', template_parameters=['ns3::JakesProcess'])
     ## random-variable.h (module 'core'): ns3::RandomVariable [class]
     module.add_class('RandomVariable', import_from_module='ns.core')
     ## minstrel-wifi-manager.h (module 'wifi'): ns3::RateInfo [struct]
@@ -188,6 +190,10 @@
     module.add_class('TraceSourceInformation', import_from_module='ns.core', outer_class=root_module['ns3::TypeId'])
     ## random-variable.h (module 'core'): ns3::UniformVariable [class]
     module.add_class('UniformVariable', import_from_module='ns.core', parent=root_module['ns3::RandomVariable'])
+    ## vector.h (module 'core'): ns3::Vector2D [class]
+    module.add_class('Vector2D', import_from_module='ns.core')
+    ## vector.h (module 'core'): ns3::Vector3D [class]
+    module.add_class('Vector3D', import_from_module='ns.core')
     ## random-variable.h (module 'core'): ns3::WeibullVariable [class]
     module.add_class('WeibullVariable', import_from_module='ns.core', parent=root_module['ns3::RandomVariable'])
     ## wifi-helper.h (module 'wifi'): ns3::WifiHelper [class]
@@ -440,6 +446,8 @@
     module.add_class('ItuR1411LosPropagationLossModel', import_from_module='ns.propagation', parent=root_module['ns3::PropagationLossModel'])
     ## itu-r-1411-nlos-over-rooftop-propagation-loss-model.h (module 'propagation'): ns3::ItuR1411NlosOverRooftopPropagationLossModel [class]
     module.add_class('ItuR1411NlosOverRooftopPropagationLossModel', import_from_module='ns.propagation', parent=root_module['ns3::PropagationLossModel'])
+    ## jakes-process.h (module 'propagation'): ns3::JakesProcess [class]
+    module.add_class('JakesProcess', import_from_module='ns.propagation', parent=root_module['ns3::Object'])
     ## jakes-propagation-loss-model.h (module 'propagation'): ns3::JakesPropagationLossModel [class]
     module.add_class('JakesPropagationLossModel', import_from_module='ns.propagation', parent=root_module['ns3::PropagationLossModel'])
     ## kun-2600-mhz-propagation-loss-model.h (module 'propagation'): ns3::Kun2600MhzPropagationLossModel [class]
@@ -458,6 +466,8 @@
     module.add_class('MgtBeaconHeader', parent=root_module['ns3::MgtProbeResponseHeader'])
     ## minstrel-wifi-manager.h (module 'wifi'): ns3::MinstrelWifiManager [class]
     module.add_class('MinstrelWifiManager', parent=root_module['ns3::WifiRemoteStationManager'])
+    ## mobility-model.h (module 'mobility'): ns3::MobilityModel [class]
+    module.add_class('MobilityModel', import_from_module='ns.mobility', parent=root_module['ns3::Object'])
     ## msdu-aggregator.h (module 'wifi'): ns3::MsduAggregator [class]
     module.add_class('MsduAggregator', parent=root_module['ns3::Object'])
     ## propagation-loss-model.h (module 'propagation'): ns3::NakagamiPropagationLossModel [class]
@@ -512,6 +522,14 @@
     module.add_class('TypeIdValue', import_from_module='ns.core', parent=root_module['ns3::AttributeValue'])
     ## uinteger.h (module 'core'): ns3::UintegerValue [class]
     module.add_class('UintegerValue', import_from_module='ns.core', parent=root_module['ns3::AttributeValue'])
+    ## vector.h (module 'core'): ns3::Vector2DChecker [class]
+    module.add_class('Vector2DChecker', import_from_module='ns.core', parent=root_module['ns3::AttributeChecker'])
+    ## vector.h (module 'core'): ns3::Vector2DValue [class]
+    module.add_class('Vector2DValue', import_from_module='ns.core', parent=root_module['ns3::AttributeValue'])
+    ## vector.h (module 'core'): ns3::Vector3DChecker [class]
+    module.add_class('Vector3DChecker', import_from_module='ns.core', parent=root_module['ns3::AttributeChecker'])
+    ## vector.h (module 'core'): ns3::Vector3DValue [class]
+    module.add_class('Vector3DValue', import_from_module='ns.core', parent=root_module['ns3::AttributeValue'])
     ## wifi-channel.h (module 'wifi'): ns3::WifiChannel [class]
     module.add_class('WifiChannel', parent=root_module['ns3::Channel'])
     ## wifi-mode.h (module 'wifi'): ns3::WifiModeChecker [class]
@@ -542,15 +560,27 @@
     typehandlers.add_type_alias('__gnu_cxx::__normal_iterator< ns3::WifiMode const *, std::vector< ns3::WifiMode, std::allocator< ns3::WifiMode > > >', 'ns3::WifiModeListIterator')
     typehandlers.add_type_alias('__gnu_cxx::__normal_iterator< ns3::WifiMode const *, std::vector< ns3::WifiMode, std::allocator< ns3::WifiMode > > >*', 'ns3::WifiModeListIterator*')
     typehandlers.add_type_alias('__gnu_cxx::__normal_iterator< ns3::WifiMode const *, std::vector< ns3::WifiMode, std::allocator< ns3::WifiMode > > >&', 'ns3::WifiModeListIterator&')
+    typehandlers.add_type_alias('ns3::Vector3D', 'ns3::Vector')
+    typehandlers.add_type_alias('ns3::Vector3D*', 'ns3::Vector*')
+    typehandlers.add_type_alias('ns3::Vector3D&', 'ns3::Vector&')
+    module.add_typedef(root_module['ns3::Vector3D'], 'Vector')
     typehandlers.add_type_alias('std::vector< ns3::RateInfo, std::allocator< ns3::RateInfo > >', 'ns3::MinstrelRate')
     typehandlers.add_type_alias('std::vector< ns3::RateInfo, std::allocator< ns3::RateInfo > >*', 'ns3::MinstrelRate*')
     typehandlers.add_type_alias('std::vector< ns3::RateInfo, std::allocator< ns3::RateInfo > >&', 'ns3::MinstrelRate&')
     typehandlers.add_type_alias('std::vector< ns3::WifiMode, std::allocator< ns3::WifiMode > >', 'ns3::WifiModeList')
     typehandlers.add_type_alias('std::vector< ns3::WifiMode, std::allocator< ns3::WifiMode > >*', 'ns3::WifiModeList*')
     typehandlers.add_type_alias('std::vector< ns3::WifiMode, std::allocator< ns3::WifiMode > >&', 'ns3::WifiModeList&')
+    typehandlers.add_type_alias('ns3::Vector3DValue', 'ns3::VectorValue')
+    typehandlers.add_type_alias('ns3::Vector3DValue*', 'ns3::VectorValue*')
+    typehandlers.add_type_alias('ns3::Vector3DValue&', 'ns3::VectorValue&')
+    module.add_typedef(root_module['ns3::Vector3DValue'], 'VectorValue')
     typehandlers.add_type_alias('std::vector< std::vector< unsigned int, std::allocator< unsigned int > >, std::allocator< std::vector< unsigned int, std::allocator< unsigned int > > > >', 'ns3::SampleRate')
     typehandlers.add_type_alias('std::vector< std::vector< unsigned int, std::allocator< unsigned int > >, std::allocator< std::vector< unsigned int, std::allocator< unsigned int > > > >*', 'ns3::SampleRate*')
     typehandlers.add_type_alias('std::vector< std::vector< unsigned int, std::allocator< unsigned int > >, std::allocator< std::vector< unsigned int, std::allocator< unsigned int > > > >&', 'ns3::SampleRate&')
+    typehandlers.add_type_alias('ns3::Vector3DChecker', 'ns3::VectorChecker')
+    typehandlers.add_type_alias('ns3::Vector3DChecker*', 'ns3::VectorChecker*')
+    typehandlers.add_type_alias('ns3::Vector3DChecker&', 'ns3::VectorChecker&')
+    module.add_typedef(root_module['ns3::Vector3DChecker'], 'VectorChecker')
     
     ## Register a nested module for the namespace FatalImpl
     
@@ -624,6 +654,7 @@
     register_Ns3PcapFile_methods(root_module, root_module['ns3::PcapFile'])
     register_Ns3PcapHelper_methods(root_module, root_module['ns3::PcapHelper'])
     register_Ns3PcapHelperForDevice_methods(root_module, root_module['ns3::PcapHelperForDevice'])
+    register_Ns3PropagationCache__Ns3JakesProcess_methods(root_module, root_module['ns3::PropagationCache< ns3::JakesProcess >'])
     register_Ns3RandomVariable_methods(root_module, root_module['ns3::RandomVariable'])
     register_Ns3RateInfo_methods(root_module, root_module['ns3::RateInfo'])
     register_Ns3SeedManager_methods(root_module, root_module['ns3::SeedManager'])
@@ -638,6 +669,8 @@
     register_Ns3TypeIdAttributeInformation_methods(root_module, root_module['ns3::TypeId::AttributeInformation'])
     register_Ns3TypeIdTraceSourceInformation_methods(root_module, root_module['ns3::TypeId::TraceSourceInformation'])
     register_Ns3UniformVariable_methods(root_module, root_module['ns3::UniformVariable'])
+    register_Ns3Vector2D_methods(root_module, root_module['ns3::Vector2D'])
+    register_Ns3Vector3D_methods(root_module, root_module['ns3::Vector3D'])
     register_Ns3WeibullVariable_methods(root_module, root_module['ns3::WeibullVariable'])
     register_Ns3WifiHelper_methods(root_module, root_module['ns3::WifiHelper'])
     register_Ns3WifiMacHelper_methods(root_module, root_module['ns3::WifiMacHelper'])
@@ -749,6 +782,7 @@
     register_Ns3Ipv6PrefixValue_methods(root_module, root_module['ns3::Ipv6PrefixValue'])
     register_Ns3ItuR1411LosPropagationLossModel_methods(root_module, root_module['ns3::ItuR1411LosPropagationLossModel'])
     register_Ns3ItuR1411NlosOverRooftopPropagationLossModel_methods(root_module, root_module['ns3::ItuR1411NlosOverRooftopPropagationLossModel'])
+    register_Ns3JakesProcess_methods(root_module, root_module['ns3::JakesProcess'])
     register_Ns3JakesPropagationLossModel_methods(root_module, root_module['ns3::JakesPropagationLossModel'])
     register_Ns3Kun2600MhzPropagationLossModel_methods(root_module, root_module['ns3::Kun2600MhzPropagationLossModel'])
     register_Ns3LogDistancePropagationLossModel_methods(root_module, root_module['ns3::LogDistancePropagationLossModel'])
@@ -758,6 +792,7 @@
     register_Ns3MatrixPropagationLossModel_methods(root_module, root_module['ns3::MatrixPropagationLossModel'])
     register_Ns3MgtBeaconHeader_methods(root_module, root_module['ns3::MgtBeaconHeader'])
     register_Ns3MinstrelWifiManager_methods(root_module, root_module['ns3::MinstrelWifiManager'])
+    register_Ns3MobilityModel_methods(root_module, root_module['ns3::MobilityModel'])
     register_Ns3MsduAggregator_methods(root_module, root_module['ns3::MsduAggregator'])
     register_Ns3NakagamiPropagationLossModel_methods(root_module, root_module['ns3::NakagamiPropagationLossModel'])
     register_Ns3NetDevice_methods(root_module, root_module['ns3::NetDevice'])
@@ -784,6 +819,10 @@
     register_Ns3TypeIdChecker_methods(root_module, root_module['ns3::TypeIdChecker'])
     register_Ns3TypeIdValue_methods(root_module, root_module['ns3::TypeIdValue'])
     register_Ns3UintegerValue_methods(root_module, root_module['ns3::UintegerValue'])
+    register_Ns3Vector2DChecker_methods(root_module, root_module['ns3::Vector2DChecker'])
+    register_Ns3Vector2DValue_methods(root_module, root_module['ns3::Vector2DValue'])
+    register_Ns3Vector3DChecker_methods(root_module, root_module['ns3::Vector3DChecker'])
+    register_Ns3Vector3DValue_methods(root_module, root_module['ns3::Vector3DValue'])
     register_Ns3WifiChannel_methods(root_module, root_module['ns3::WifiChannel'])
     register_Ns3WifiModeChecker_methods(root_module, root_module['ns3::WifiModeChecker'])
     register_Ns3WifiModeValue_methods(root_module, root_module['ns3::WifiModeValue'])
@@ -3292,6 +3331,17 @@
                    is_pure_virtual=True, is_virtual=True)
     return
 
+def register_Ns3PropagationCache__Ns3JakesProcess_methods(root_module, cls):
+    ## propagation-cache.h (module 'propagation'): ns3::PropagationCache<ns3::JakesProcess>::PropagationCache(ns3::PropagationCache<ns3::JakesProcess> const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::PropagationCache< ns3::JakesProcess > const &', 'arg0')])
+    ## propagation-cache.h (module 'propagation'): ns3::PropagationCache<ns3::JakesProcess>::PropagationCache() [constructor]
+    cls.add_constructor([])
+    ## propagation-cache.h (module 'propagation'): ns3::Ptr<ns3::JakesProcess> ns3::PropagationCache<ns3::JakesProcess>::GetPathData(ns3::Ptr<ns3::MobilityModel const> a, ns3::Ptr<ns3::MobilityModel const> b, uint32_t modelUid) [member function]
+    cls.add_method('GetPathData', 
+                   'ns3::Ptr< ns3::JakesProcess >', 
+                   [param('ns3::Ptr< ns3::MobilityModel const >', 'a'), param('ns3::Ptr< ns3::MobilityModel const >', 'b'), param('uint32_t', 'modelUid')])
+    return
+
 def register_Ns3RandomVariable_methods(root_module, cls):
     cls.add_output_stream_operator()
     ## random-variable.h (module 'core'): ns3::RandomVariable::RandomVariable() [constructor]
@@ -3809,6 +3859,36 @@
                    [param('double', 's'), param('double', 'l')])
     return
 
+def register_Ns3Vector2D_methods(root_module, cls):
+    cls.add_output_stream_operator()
+    ## vector.h (module 'core'): ns3::Vector2D::Vector2D(ns3::Vector2D const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::Vector2D const &', 'arg0')])
+    ## vector.h (module 'core'): ns3::Vector2D::Vector2D(double _x, double _y) [constructor]
+    cls.add_constructor([param('double', '_x'), param('double', '_y')])
+    ## vector.h (module 'core'): ns3::Vector2D::Vector2D() [constructor]
+    cls.add_constructor([])
+    ## vector.h (module 'core'): ns3::Vector2D::x [variable]
+    cls.add_instance_attribute('x', 'double', is_const=False)
+    ## vector.h (module 'core'): ns3::Vector2D::y [variable]
+    cls.add_instance_attribute('y', 'double', is_const=False)
+    return
+
+def register_Ns3Vector3D_methods(root_module, cls):
+    cls.add_output_stream_operator()
+    ## vector.h (module 'core'): ns3::Vector3D::Vector3D(ns3::Vector3D const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::Vector3D const &', 'arg0')])
+    ## vector.h (module 'core'): ns3::Vector3D::Vector3D(double _x, double _y, double _z) [constructor]
+    cls.add_constructor([param('double', '_x'), param('double', '_y'), param('double', '_z')])
+    ## vector.h (module 'core'): ns3::Vector3D::Vector3D() [constructor]
+    cls.add_constructor([])
+    ## vector.h (module 'core'): ns3::Vector3D::x [variable]
+    cls.add_instance_attribute('x', 'double', is_const=False)
+    ## vector.h (module 'core'): ns3::Vector3D::y [variable]
+    cls.add_instance_attribute('y', 'double', is_const=False)
+    ## vector.h (module 'core'): ns3::Vector3D::z [variable]
+    cls.add_instance_attribute('z', 'double', is_const=False)
+    return
+
 def register_Ns3WeibullVariable_methods(root_module, cls):
     ## random-variable.h (module 'core'): ns3::WeibullVariable::WeibullVariable(ns3::WeibullVariable const & arg0) [copy constructor]
     cls.add_constructor([param('ns3::WeibullVariable const &', 'arg0')])
@@ -9225,32 +9305,36 @@
                    is_const=True, visibility='private', is_virtual=True)
     return
 
+def register_Ns3JakesProcess_methods(root_module, cls):
+    ## jakes-process.h (module 'propagation'): ns3::JakesProcess::JakesProcess(ns3::JakesProcess const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::JakesProcess const &', 'arg0')])
+    ## jakes-process.h (module 'propagation'): ns3::JakesProcess::JakesProcess() [constructor]
+    cls.add_constructor([])
+    ## jakes-process.h (module 'propagation'): double ns3::JakesProcess::GetChannelGainDb() const [member function]
+    cls.add_method('GetChannelGainDb', 
+                   'double', 
+                   [], 
+                   is_const=True)
+    ## jakes-process.h (module 'propagation'): std::complex<double> ns3::JakesProcess::GetComplexGain() const [member function]
+    cls.add_method('GetComplexGain', 
+                   'std::complex< double >', 
+                   [], 
+                   is_const=True)
+    ## jakes-process.h (module 'propagation'): static ns3::TypeId ns3::JakesProcess::GetTypeId() [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
+    return
+
 def register_Ns3JakesPropagationLossModel_methods(root_module, cls):
-    ## jakes-propagation-loss-model.h (module 'propagation'): ns3::JakesPropagationLossModel::JakesPropagationLossModel() [constructor]
-    cls.add_constructor([])
-    ## jakes-propagation-loss-model.h (module 'propagation'): uint8_t ns3::JakesPropagationLossModel::GetNOscillators() const [member function]
-    cls.add_method('GetNOscillators', 
-                   'uint8_t', 
-                   [], 
-                   is_const=True)
-    ## jakes-propagation-loss-model.h (module 'propagation'): uint8_t ns3::JakesPropagationLossModel::GetNRays() const [member function]
-    cls.add_method('GetNRays', 
-                   'uint8_t', 
-                   [], 
-                   is_const=True)
     ## jakes-propagation-loss-model.h (module 'propagation'): static ns3::TypeId ns3::JakesPropagationLossModel::GetTypeId() [member function]
     cls.add_method('GetTypeId', 
                    'ns3::TypeId', 
                    [], 
                    is_static=True)
-    ## jakes-propagation-loss-model.h (module 'propagation'): void ns3::JakesPropagationLossModel::SetNOscillators(uint8_t nOscillators) [member function]
-    cls.add_method('SetNOscillators', 
-                   'void', 
-                   [param('uint8_t', 'nOscillators')])
-    ## jakes-propagation-loss-model.h (module 'propagation'): void ns3::JakesPropagationLossModel::SetNRays(uint8_t nRays) [member function]
-    cls.add_method('SetNRays', 
-                   'void', 
-                   [param('uint8_t', 'nRays')])
+    ## jakes-propagation-loss-model.h (module 'propagation'): ns3::JakesPropagationLossModel::JakesPropagationLossModel() [constructor]
+    cls.add_constructor([])
     ## jakes-propagation-loss-model.h (module 'propagation'): double ns3::JakesPropagationLossModel::DoCalcRxPower(double txPowerDbm, ns3::Ptr<ns3::MobilityModel> a, ns3::Ptr<ns3::MobilityModel> b) const [member function]
     cls.add_method('DoCalcRxPower', 
                    'double', 
@@ -9594,6 +9678,62 @@
                    is_const=True, visibility='private', is_virtual=True)
     return
 
+def register_Ns3MobilityModel_methods(root_module, cls):
+    ## mobility-model.h (module 'mobility'): ns3::MobilityModel::MobilityModel(ns3::MobilityModel const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::MobilityModel const &', 'arg0')])
+    ## mobility-model.h (module 'mobility'): ns3::MobilityModel::MobilityModel() [constructor]
+    cls.add_constructor([])
+    ## mobility-model.h (module 'mobility'): double ns3::MobilityModel::GetDistanceFrom(ns3::Ptr<ns3::MobilityModel const> position) const [member function]
+    cls.add_method('GetDistanceFrom', 
+                   'double', 
+                   [param('ns3::Ptr< ns3::MobilityModel const >', 'position')], 
+                   is_const=True)
+    ## mobility-model.h (module 'mobility'): ns3::Vector ns3::MobilityModel::GetPosition() const [member function]
+    cls.add_method('GetPosition', 
+                   'ns3::Vector', 
+                   [], 
+                   is_const=True)
+    ## mobility-model.h (module 'mobility'): double ns3::MobilityModel::GetRelativeSpeed(ns3::Ptr<ns3::MobilityModel const> other) const [member function]
+    cls.add_method('GetRelativeSpeed', 
+                   'double', 
+                   [param('ns3::Ptr< ns3::MobilityModel const >', 'other')], 
+                   is_const=True)
+    ## mobility-model.h (module 'mobility'): static ns3::TypeId ns3::MobilityModel::GetTypeId() [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
+    ## mobility-model.h (module 'mobility'): ns3::Vector ns3::MobilityModel::GetVelocity() const [member function]
+    cls.add_method('GetVelocity', 
+                   'ns3::Vector', 
+                   [], 
+                   is_const=True)
+    ## mobility-model.h (module 'mobility'): void ns3::MobilityModel::SetPosition(ns3::Vector const & position) [member function]
+    cls.add_method('SetPosition', 
+                   'void', 
+                   [param('ns3::Vector const &', 'position')])
+    ## mobility-model.h (module 'mobility'): void ns3::MobilityModel::NotifyCourseChange() const [member function]
+    cls.add_method('NotifyCourseChange', 
+                   'void', 
+                   [], 
+                   is_const=True, visibility='protected')
+    ## mobility-model.h (module 'mobility'): ns3::Vector ns3::MobilityModel::DoGetPosition() const [member function]
+    cls.add_method('DoGetPosition', 
+                   'ns3::Vector', 
+                   [], 
+                   is_pure_virtual=True, is_const=True, visibility='private', is_virtual=True)
+    ## mobility-model.h (module 'mobility'): ns3::Vector ns3::MobilityModel::DoGetVelocity() const [member function]
+    cls.add_method('DoGetVelocity', 
+                   'ns3::Vector', 
+                   [], 
+                   is_pure_virtual=True, is_const=True, visibility='private', is_virtual=True)
+    ## mobility-model.h (module 'mobility'): void ns3::MobilityModel::DoSetPosition(ns3::Vector const & position) [member function]
+    cls.add_method('DoSetPosition', 
+                   'void', 
+                   [param('ns3::Vector const &', 'position')], 
+                   is_pure_virtual=True, visibility='private', is_virtual=True)
+    return
+
 def register_Ns3MsduAggregator_methods(root_module, cls):
     ## msdu-aggregator.h (module 'wifi'): ns3::MsduAggregator::MsduAggregator() [constructor]
     cls.add_constructor([])
@@ -10869,6 +11009,86 @@
                    [param('uint64_t const &', 'value')])
     return
 
+def register_Ns3Vector2DChecker_methods(root_module, cls):
+    ## vector.h (module 'core'): ns3::Vector2DChecker::Vector2DChecker() [constructor]
+    cls.add_constructor([])
+    ## vector.h (module 'core'): ns3::Vector2DChecker::Vector2DChecker(ns3::Vector2DChecker const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::Vector2DChecker const &', 'arg0')])
+    return
+
+def register_Ns3Vector2DValue_methods(root_module, cls):
+    ## vector.h (module 'core'): ns3::Vector2DValue::Vector2DValue() [constructor]
+    cls.add_constructor([])
+    ## vector.h (module 'core'): ns3::Vector2DValue::Vector2DValue(ns3::Vector2DValue const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::Vector2DValue const &', 'arg0')])
+    ## vector.h (module 'core'): ns3::Vector2DValue::Vector2DValue(ns3::Vector2D const & value) [constructor]
+    cls.add_constructor([param('ns3::Vector2D const &', 'value')])
+    ## vector.h (module 'core'): ns3::Ptr<ns3::AttributeValue> ns3::Vector2DValue::Copy() const [member function]
+    cls.add_method('Copy', 
+                   'ns3::Ptr< ns3::AttributeValue >', 
+                   [], 
+                   is_const=True, is_virtual=True)
+    ## vector.h (module 'core'): bool ns3::Vector2DValue::DeserializeFromString(std::string value, ns3::Ptr<ns3::AttributeChecker const> checker) [member function]
+    cls.add_method('DeserializeFromString', 
+                   'bool', 
+                   [param('std::string', 'value'), param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
+                   is_virtual=True)
+    ## vector.h (module 'core'): ns3::Vector2D ns3::Vector2DValue::Get() const [member function]
+    cls.add_method('Get', 
+                   'ns3::Vector2D', 
+                   [], 
+                   is_const=True)
+    ## vector.h (module 'core'): std::string ns3::Vector2DValue::SerializeToString(ns3::Ptr<ns3::AttributeChecker const> checker) const [member function]
+    cls.add_method('SerializeToString', 
+                   'std::string', 
+                   [param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
+                   is_const=True, is_virtual=True)
+    ## vector.h (module 'core'): void ns3::Vector2DValue::Set(ns3::Vector2D const & value) [member function]
+    cls.add_method('Set', 
+                   'void', 
+                   [param('ns3::Vector2D const &', 'value')])
+    return
+
+def register_Ns3Vector3DChecker_methods(root_module, cls):
+    ## vector.h (module 'core'): ns3::Vector3DChecker::Vector3DChecker() [constructor]
+    cls.add_constructor([])
+    ## vector.h (module 'core'): ns3::Vector3DChecker::Vector3DChecker(ns3::Vector3DChecker const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::Vector3DChecker const &', 'arg0')])
+    return
+
+def register_Ns3Vector3DValue_methods(root_module, cls):
+    ## vector.h (module 'core'): ns3::Vector3DValue::Vector3DValue() [constructor]
+    cls.add_constructor([])
+    ## vector.h (module 'core'): ns3::Vector3DValue::Vector3DValue(ns3::Vector3DValue const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::Vector3DValue const &', 'arg0')])
+    ## vector.h (module 'core'): ns3::Vector3DValue::Vector3DValue(ns3::Vector3D const & value) [constructor]
+    cls.add_constructor([param('ns3::Vector3D const &', 'value')])
+    ## vector.h (module 'core'): ns3::Ptr<ns3::AttributeValue> ns3::Vector3DValue::Copy() const [member function]
+    cls.add_method('Copy', 
+                   'ns3::Ptr< ns3::AttributeValue >', 
+                   [], 
+                   is_const=True, is_virtual=True)
+    ## vector.h (module 'core'): bool ns3::Vector3DValue::DeserializeFromString(std::string value, ns3::Ptr<ns3::AttributeChecker const> checker) [member function]
+    cls.add_method('DeserializeFromString', 
+                   'bool', 
+                   [param('std::string', 'value'), param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
+                   is_virtual=True)
+    ## vector.h (module 'core'): ns3::Vector3D ns3::Vector3DValue::Get() const [member function]
+    cls.add_method('Get', 
+                   'ns3::Vector3D', 
+                   [], 
+                   is_const=True)
+    ## vector.h (module 'core'): std::string ns3::Vector3DValue::SerializeToString(ns3::Ptr<ns3::AttributeChecker const> checker) const [member function]
+    cls.add_method('SerializeToString', 
+                   'std::string', 
+                   [param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
+                   is_const=True, is_virtual=True)
+    ## vector.h (module 'core'): void ns3::Vector3DValue::Set(ns3::Vector3D const & value) [member function]
+    cls.add_method('Set', 
+                   'void', 
+                   [param('ns3::Vector3D const &', 'value')])
+    return
+
 def register_Ns3WifiChannel_methods(root_module, cls):
     ## wifi-channel.h (module 'wifi'): ns3::WifiChannel::WifiChannel() [constructor]
     cls.add_constructor([])
--- a/src/wifi/bindings/modulegen__gcc_LP64.py	Fri May 18 10:30:14 2012 +0200
+++ b/src/wifi/bindings/modulegen__gcc_LP64.py	Tue May 29 10:42:17 2012 +0200
@@ -158,6 +158,8 @@
     module.add_enum('', ['DLT_NULL', 'DLT_EN10MB', 'DLT_PPP', 'DLT_RAW', 'DLT_IEEE802_11', 'DLT_PRISM_HEADER', 'DLT_IEEE802_11_RADIO'], outer_class=root_module['ns3::PcapHelper'], import_from_module='ns.network')
     ## trace-helper.h (module 'network'): ns3::PcapHelperForDevice [class]
     module.add_class('PcapHelperForDevice', allow_subclassing=True, import_from_module='ns.network')
+    ## propagation-cache.h (module 'propagation'): ns3::PropagationCache<ns3::JakesProcess> [class]
+    module.add_class('PropagationCache', import_from_module='ns.propagation', template_parameters=['ns3::JakesProcess'])
     ## random-variable.h (module 'core'): ns3::RandomVariable [class]
     module.add_class('RandomVariable', import_from_module='ns.core')
     ## minstrel-wifi-manager.h (module 'wifi'): ns3::RateInfo [struct]
@@ -188,6 +190,10 @@
     module.add_class('TraceSourceInformation', import_from_module='ns.core', outer_class=root_module['ns3::TypeId'])
     ## random-variable.h (module 'core'): ns3::UniformVariable [class]
     module.add_class('UniformVariable', import_from_module='ns.core', parent=root_module['ns3::RandomVariable'])
+    ## vector.h (module 'core'): ns3::Vector2D [class]
+    module.add_class('Vector2D', import_from_module='ns.core')
+    ## vector.h (module 'core'): ns3::Vector3D [class]
+    module.add_class('Vector3D', import_from_module='ns.core')
     ## random-variable.h (module 'core'): ns3::WeibullVariable [class]
     module.add_class('WeibullVariable', import_from_module='ns.core', parent=root_module['ns3::RandomVariable'])
     ## wifi-helper.h (module 'wifi'): ns3::WifiHelper [class]
@@ -440,6 +446,8 @@
     module.add_class('ItuR1411LosPropagationLossModel', import_from_module='ns.propagation', parent=root_module['ns3::PropagationLossModel'])
     ## itu-r-1411-nlos-over-rooftop-propagation-loss-model.h (module 'propagation'): ns3::ItuR1411NlosOverRooftopPropagationLossModel [class]
     module.add_class('ItuR1411NlosOverRooftopPropagationLossModel', import_from_module='ns.propagation', parent=root_module['ns3::PropagationLossModel'])
+    ## jakes-process.h (module 'propagation'): ns3::JakesProcess [class]
+    module.add_class('JakesProcess', import_from_module='ns.propagation', parent=root_module['ns3::Object'])
     ## jakes-propagation-loss-model.h (module 'propagation'): ns3::JakesPropagationLossModel [class]
     module.add_class('JakesPropagationLossModel', import_from_module='ns.propagation', parent=root_module['ns3::PropagationLossModel'])
     ## kun-2600-mhz-propagation-loss-model.h (module 'propagation'): ns3::Kun2600MhzPropagationLossModel [class]
@@ -458,6 +466,8 @@
     module.add_class('MgtBeaconHeader', parent=root_module['ns3::MgtProbeResponseHeader'])
     ## minstrel-wifi-manager.h (module 'wifi'): ns3::MinstrelWifiManager [class]
     module.add_class('MinstrelWifiManager', parent=root_module['ns3::WifiRemoteStationManager'])
+    ## mobility-model.h (module 'mobility'): ns3::MobilityModel [class]
+    module.add_class('MobilityModel', import_from_module='ns.mobility', parent=root_module['ns3::Object'])
     ## msdu-aggregator.h (module 'wifi'): ns3::MsduAggregator [class]
     module.add_class('MsduAggregator', parent=root_module['ns3::Object'])
     ## propagation-loss-model.h (module 'propagation'): ns3::NakagamiPropagationLossModel [class]
@@ -512,6 +522,14 @@
     module.add_class('TypeIdValue', import_from_module='ns.core', parent=root_module['ns3::AttributeValue'])
     ## uinteger.h (module 'core'): ns3::UintegerValue [class]
     module.add_class('UintegerValue', import_from_module='ns.core', parent=root_module['ns3::AttributeValue'])
+    ## vector.h (module 'core'): ns3::Vector2DChecker [class]
+    module.add_class('Vector2DChecker', import_from_module='ns.core', parent=root_module['ns3::AttributeChecker'])
+    ## vector.h (module 'core'): ns3::Vector2DValue [class]
+    module.add_class('Vector2DValue', import_from_module='ns.core', parent=root_module['ns3::AttributeValue'])
+    ## vector.h (module 'core'): ns3::Vector3DChecker [class]
+    module.add_class('Vector3DChecker', import_from_module='ns.core', parent=root_module['ns3::AttributeChecker'])
+    ## vector.h (module 'core'): ns3::Vector3DValue [class]
+    module.add_class('Vector3DValue', import_from_module='ns.core', parent=root_module['ns3::AttributeValue'])
     ## wifi-channel.h (module 'wifi'): ns3::WifiChannel [class]
     module.add_class('WifiChannel', parent=root_module['ns3::Channel'])
     ## wifi-mode.h (module 'wifi'): ns3::WifiModeChecker [class]
@@ -542,15 +560,27 @@
     typehandlers.add_type_alias('__gnu_cxx::__normal_iterator< ns3::WifiMode const *, std::vector< ns3::WifiMode, std::allocator< ns3::WifiMode > > >', 'ns3::WifiModeListIterator')
     typehandlers.add_type_alias('__gnu_cxx::__normal_iterator< ns3::WifiMode const *, std::vector< ns3::WifiMode, std::allocator< ns3::WifiMode > > >*', 'ns3::WifiModeListIterator*')
     typehandlers.add_type_alias('__gnu_cxx::__normal_iterator< ns3::WifiMode const *, std::vector< ns3::WifiMode, std::allocator< ns3::WifiMode > > >&', 'ns3::WifiModeListIterator&')
+    typehandlers.add_type_alias('ns3::Vector3D', 'ns3::Vector')
+    typehandlers.add_type_alias('ns3::Vector3D*', 'ns3::Vector*')
+    typehandlers.add_type_alias('ns3::Vector3D&', 'ns3::Vector&')
+    module.add_typedef(root_module['ns3::Vector3D'], 'Vector')
     typehandlers.add_type_alias('std::vector< ns3::RateInfo, std::allocator< ns3::RateInfo > >', 'ns3::MinstrelRate')
     typehandlers.add_type_alias('std::vector< ns3::RateInfo, std::allocator< ns3::RateInfo > >*', 'ns3::MinstrelRate*')
     typehandlers.add_type_alias('std::vector< ns3::RateInfo, std::allocator< ns3::RateInfo > >&', 'ns3::MinstrelRate&')
     typehandlers.add_type_alias('std::vector< ns3::WifiMode, std::allocator< ns3::WifiMode > >', 'ns3::WifiModeList')
     typehandlers.add_type_alias('std::vector< ns3::WifiMode, std::allocator< ns3::WifiMode > >*', 'ns3::WifiModeList*')
     typehandlers.add_type_alias('std::vector< ns3::WifiMode, std::allocator< ns3::WifiMode > >&', 'ns3::WifiModeList&')
+    typehandlers.add_type_alias('ns3::Vector3DValue', 'ns3::VectorValue')
+    typehandlers.add_type_alias('ns3::Vector3DValue*', 'ns3::VectorValue*')
+    typehandlers.add_type_alias('ns3::Vector3DValue&', 'ns3::VectorValue&')
+    module.add_typedef(root_module['ns3::Vector3DValue'], 'VectorValue')
     typehandlers.add_type_alias('std::vector< std::vector< unsigned int, std::allocator< unsigned int > >, std::allocator< std::vector< unsigned int, std::allocator< unsigned int > > > >', 'ns3::SampleRate')
     typehandlers.add_type_alias('std::vector< std::vector< unsigned int, std::allocator< unsigned int > >, std::allocator< std::vector< unsigned int, std::allocator< unsigned int > > > >*', 'ns3::SampleRate*')
     typehandlers.add_type_alias('std::vector< std::vector< unsigned int, std::allocator< unsigned int > >, std::allocator< std::vector< unsigned int, std::allocator< unsigned int > > > >&', 'ns3::SampleRate&')
+    typehandlers.add_type_alias('ns3::Vector3DChecker', 'ns3::VectorChecker')
+    typehandlers.add_type_alias('ns3::Vector3DChecker*', 'ns3::VectorChecker*')
+    typehandlers.add_type_alias('ns3::Vector3DChecker&', 'ns3::VectorChecker&')
+    module.add_typedef(root_module['ns3::Vector3DChecker'], 'VectorChecker')
     
     ## Register a nested module for the namespace FatalImpl
     
@@ -624,6 +654,7 @@
     register_Ns3PcapFile_methods(root_module, root_module['ns3::PcapFile'])
     register_Ns3PcapHelper_methods(root_module, root_module['ns3::PcapHelper'])
     register_Ns3PcapHelperForDevice_methods(root_module, root_module['ns3::PcapHelperForDevice'])
+    register_Ns3PropagationCache__Ns3JakesProcess_methods(root_module, root_module['ns3::PropagationCache< ns3::JakesProcess >'])
     register_Ns3RandomVariable_methods(root_module, root_module['ns3::RandomVariable'])
     register_Ns3RateInfo_methods(root_module, root_module['ns3::RateInfo'])
     register_Ns3SeedManager_methods(root_module, root_module['ns3::SeedManager'])
@@ -638,6 +669,8 @@
     register_Ns3TypeIdAttributeInformation_methods(root_module, root_module['ns3::TypeId::AttributeInformation'])
     register_Ns3TypeIdTraceSourceInformation_methods(root_module, root_module['ns3::TypeId::TraceSourceInformation'])
     register_Ns3UniformVariable_methods(root_module, root_module['ns3::UniformVariable'])
+    register_Ns3Vector2D_methods(root_module, root_module['ns3::Vector2D'])
+    register_Ns3Vector3D_methods(root_module, root_module['ns3::Vector3D'])
     register_Ns3WeibullVariable_methods(root_module, root_module['ns3::WeibullVariable'])
     register_Ns3WifiHelper_methods(root_module, root_module['ns3::WifiHelper'])
     register_Ns3WifiMacHelper_methods(root_module, root_module['ns3::WifiMacHelper'])
@@ -749,6 +782,7 @@
     register_Ns3Ipv6PrefixValue_methods(root_module, root_module['ns3::Ipv6PrefixValue'])
     register_Ns3ItuR1411LosPropagationLossModel_methods(root_module, root_module['ns3::ItuR1411LosPropagationLossModel'])
     register_Ns3ItuR1411NlosOverRooftopPropagationLossModel_methods(root_module, root_module['ns3::ItuR1411NlosOverRooftopPropagationLossModel'])
+    register_Ns3JakesProcess_methods(root_module, root_module['ns3::JakesProcess'])
     register_Ns3JakesPropagationLossModel_methods(root_module, root_module['ns3::JakesPropagationLossModel'])
     register_Ns3Kun2600MhzPropagationLossModel_methods(root_module, root_module['ns3::Kun2600MhzPropagationLossModel'])
     register_Ns3LogDistancePropagationLossModel_methods(root_module, root_module['ns3::LogDistancePropagationLossModel'])
@@ -758,6 +792,7 @@
     register_Ns3MatrixPropagationLossModel_methods(root_module, root_module['ns3::MatrixPropagationLossModel'])
     register_Ns3MgtBeaconHeader_methods(root_module, root_module['ns3::MgtBeaconHeader'])
     register_Ns3MinstrelWifiManager_methods(root_module, root_module['ns3::MinstrelWifiManager'])
+    register_Ns3MobilityModel_methods(root_module, root_module['ns3::MobilityModel'])
     register_Ns3MsduAggregator_methods(root_module, root_module['ns3::MsduAggregator'])
     register_Ns3NakagamiPropagationLossModel_methods(root_module, root_module['ns3::NakagamiPropagationLossModel'])
     register_Ns3NetDevice_methods(root_module, root_module['ns3::NetDevice'])
@@ -784,6 +819,10 @@
     register_Ns3TypeIdChecker_methods(root_module, root_module['ns3::TypeIdChecker'])
     register_Ns3TypeIdValue_methods(root_module, root_module['ns3::TypeIdValue'])
     register_Ns3UintegerValue_methods(root_module, root_module['ns3::UintegerValue'])
+    register_Ns3Vector2DChecker_methods(root_module, root_module['ns3::Vector2DChecker'])
+    register_Ns3Vector2DValue_methods(root_module, root_module['ns3::Vector2DValue'])
+    register_Ns3Vector3DChecker_methods(root_module, root_module['ns3::Vector3DChecker'])
+    register_Ns3Vector3DValue_methods(root_module, root_module['ns3::Vector3DValue'])
     register_Ns3WifiChannel_methods(root_module, root_module['ns3::WifiChannel'])
     register_Ns3WifiModeChecker_methods(root_module, root_module['ns3::WifiModeChecker'])
     register_Ns3WifiModeValue_methods(root_module, root_module['ns3::WifiModeValue'])
@@ -3292,6 +3331,17 @@
                    is_pure_virtual=True, is_virtual=True)
     return
 
+def register_Ns3PropagationCache__Ns3JakesProcess_methods(root_module, cls):
+    ## propagation-cache.h (module 'propagation'): ns3::PropagationCache<ns3::JakesProcess>::PropagationCache(ns3::PropagationCache<ns3::JakesProcess> const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::PropagationCache< ns3::JakesProcess > const &', 'arg0')])
+    ## propagation-cache.h (module 'propagation'): ns3::PropagationCache<ns3::JakesProcess>::PropagationCache() [constructor]
+    cls.add_constructor([])
+    ## propagation-cache.h (module 'propagation'): ns3::Ptr<ns3::JakesProcess> ns3::PropagationCache<ns3::JakesProcess>::GetPathData(ns3::Ptr<ns3::MobilityModel const> a, ns3::Ptr<ns3::MobilityModel const> b, uint32_t modelUid) [member function]
+    cls.add_method('GetPathData', 
+                   'ns3::Ptr< ns3::JakesProcess >', 
+                   [param('ns3::Ptr< ns3::MobilityModel const >', 'a'), param('ns3::Ptr< ns3::MobilityModel const >', 'b'), param('uint32_t', 'modelUid')])
+    return
+
 def register_Ns3RandomVariable_methods(root_module, cls):
     cls.add_output_stream_operator()
     ## random-variable.h (module 'core'): ns3::RandomVariable::RandomVariable() [constructor]
@@ -3809,6 +3859,36 @@
                    [param('double', 's'), param('double', 'l')])
     return
 
+def register_Ns3Vector2D_methods(root_module, cls):
+    cls.add_output_stream_operator()
+    ## vector.h (module 'core'): ns3::Vector2D::Vector2D(ns3::Vector2D const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::Vector2D const &', 'arg0')])
+    ## vector.h (module 'core'): ns3::Vector2D::Vector2D(double _x, double _y) [constructor]
+    cls.add_constructor([param('double', '_x'), param('double', '_y')])
+    ## vector.h (module 'core'): ns3::Vector2D::Vector2D() [constructor]
+    cls.add_constructor([])
+    ## vector.h (module 'core'): ns3::Vector2D::x [variable]
+    cls.add_instance_attribute('x', 'double', is_const=False)
+    ## vector.h (module 'core'): ns3::Vector2D::y [variable]
+    cls.add_instance_attribute('y', 'double', is_const=False)
+    return
+
+def register_Ns3Vector3D_methods(root_module, cls):
+    cls.add_output_stream_operator()
+    ## vector.h (module 'core'): ns3::Vector3D::Vector3D(ns3::Vector3D const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::Vector3D const &', 'arg0')])
+    ## vector.h (module 'core'): ns3::Vector3D::Vector3D(double _x, double _y, double _z) [constructor]
+    cls.add_constructor([param('double', '_x'), param('double', '_y'), param('double', '_z')])
+    ## vector.h (module 'core'): ns3::Vector3D::Vector3D() [constructor]
+    cls.add_constructor([])
+    ## vector.h (module 'core'): ns3::Vector3D::x [variable]
+    cls.add_instance_attribute('x', 'double', is_const=False)
+    ## vector.h (module 'core'): ns3::Vector3D::y [variable]
+    cls.add_instance_attribute('y', 'double', is_const=False)
+    ## vector.h (module 'core'): ns3::Vector3D::z [variable]
+    cls.add_instance_attribute('z', 'double', is_const=False)
+    return
+
 def register_Ns3WeibullVariable_methods(root_module, cls):
     ## random-variable.h (module 'core'): ns3::WeibullVariable::WeibullVariable(ns3::WeibullVariable const & arg0) [copy constructor]
     cls.add_constructor([param('ns3::WeibullVariable const &', 'arg0')])
@@ -9225,32 +9305,36 @@
                    is_const=True, visibility='private', is_virtual=True)
     return
 
+def register_Ns3JakesProcess_methods(root_module, cls):
+    ## jakes-process.h (module 'propagation'): ns3::JakesProcess::JakesProcess(ns3::JakesProcess const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::JakesProcess const &', 'arg0')])
+    ## jakes-process.h (module 'propagation'): ns3::JakesProcess::JakesProcess() [constructor]
+    cls.add_constructor([])
+    ## jakes-process.h (module 'propagation'): double ns3::JakesProcess::GetChannelGainDb() const [member function]
+    cls.add_method('GetChannelGainDb', 
+                   'double', 
+                   [], 
+                   is_const=True)
+    ## jakes-process.h (module 'propagation'): std::complex<double> ns3::JakesProcess::GetComplexGain() const [member function]
+    cls.add_method('GetComplexGain', 
+                   'std::complex< double >', 
+                   [], 
+                   is_const=True)
+    ## jakes-process.h (module 'propagation'): static ns3::TypeId ns3::JakesProcess::GetTypeId() [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
+    return
+
 def register_Ns3JakesPropagationLossModel_methods(root_module, cls):
-    ## jakes-propagation-loss-model.h (module 'propagation'): ns3::JakesPropagationLossModel::JakesPropagationLossModel() [constructor]
-    cls.add_constructor([])
-    ## jakes-propagation-loss-model.h (module 'propagation'): uint8_t ns3::JakesPropagationLossModel::GetNOscillators() const [member function]
-    cls.add_method('GetNOscillators', 
-                   'uint8_t', 
-                   [], 
-                   is_const=True)
-    ## jakes-propagation-loss-model.h (module 'propagation'): uint8_t ns3::JakesPropagationLossModel::GetNRays() const [member function]
-    cls.add_method('GetNRays', 
-                   'uint8_t', 
-                   [], 
-                   is_const=True)
     ## jakes-propagation-loss-model.h (module 'propagation'): static ns3::TypeId ns3::JakesPropagationLossModel::GetTypeId() [member function]
     cls.add_method('GetTypeId', 
                    'ns3::TypeId', 
                    [], 
                    is_static=True)
-    ## jakes-propagation-loss-model.h (module 'propagation'): void ns3::JakesPropagationLossModel::SetNOscillators(uint8_t nOscillators) [member function]
-    cls.add_method('SetNOscillators', 
-                   'void', 
-                   [param('uint8_t', 'nOscillators')])
-    ## jakes-propagation-loss-model.h (module 'propagation'): void ns3::JakesPropagationLossModel::SetNRays(uint8_t nRays) [member function]
-    cls.add_method('SetNRays', 
-                   'void', 
-                   [param('uint8_t', 'nRays')])
+    ## jakes-propagation-loss-model.h (module 'propagation'): ns3::JakesPropagationLossModel::JakesPropagationLossModel() [constructor]
+    cls.add_constructor([])
     ## jakes-propagation-loss-model.h (module 'propagation'): double ns3::JakesPropagationLossModel::DoCalcRxPower(double txPowerDbm, ns3::Ptr<ns3::MobilityModel> a, ns3::Ptr<ns3::MobilityModel> b) const [member function]
     cls.add_method('DoCalcRxPower', 
                    'double', 
@@ -9594,6 +9678,62 @@
                    is_const=True, visibility='private', is_virtual=True)
     return
 
+def register_Ns3MobilityModel_methods(root_module, cls):
+    ## mobility-model.h (module 'mobility'): ns3::MobilityModel::MobilityModel(ns3::MobilityModel const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::MobilityModel const &', 'arg0')])
+    ## mobility-model.h (module 'mobility'): ns3::MobilityModel::MobilityModel() [constructor]
+    cls.add_constructor([])
+    ## mobility-model.h (module 'mobility'): double ns3::MobilityModel::GetDistanceFrom(ns3::Ptr<ns3::MobilityModel const> position) const [member function]
+    cls.add_method('GetDistanceFrom', 
+                   'double', 
+                   [param('ns3::Ptr< ns3::MobilityModel const >', 'position')], 
+                   is_const=True)
+    ## mobility-model.h (module 'mobility'): ns3::Vector ns3::MobilityModel::GetPosition() const [member function]
+    cls.add_method('GetPosition', 
+                   'ns3::Vector', 
+                   [], 
+                   is_const=True)
+    ## mobility-model.h (module 'mobility'): double ns3::MobilityModel::GetRelativeSpeed(ns3::Ptr<ns3::MobilityModel const> other) const [member function]
+    cls.add_method('GetRelativeSpeed', 
+                   'double', 
+                   [param('ns3::Ptr< ns3::MobilityModel const >', 'other')], 
+                   is_const=True)
+    ## mobility-model.h (module 'mobility'): static ns3::TypeId ns3::MobilityModel::GetTypeId() [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
+    ## mobility-model.h (module 'mobility'): ns3::Vector ns3::MobilityModel::GetVelocity() const [member function]
+    cls.add_method('GetVelocity', 
+                   'ns3::Vector', 
+                   [], 
+                   is_const=True)
+    ## mobility-model.h (module 'mobility'): void ns3::MobilityModel::SetPosition(ns3::Vector const & position) [member function]
+    cls.add_method('SetPosition', 
+                   'void', 
+                   [param('ns3::Vector const &', 'position')])
+    ## mobility-model.h (module 'mobility'): void ns3::MobilityModel::NotifyCourseChange() const [member function]
+    cls.add_method('NotifyCourseChange', 
+                   'void', 
+                   [], 
+                   is_const=True, visibility='protected')
+    ## mobility-model.h (module 'mobility'): ns3::Vector ns3::MobilityModel::DoGetPosition() const [member function]
+    cls.add_method('DoGetPosition', 
+                   'ns3::Vector', 
+                   [], 
+                   is_pure_virtual=True, is_const=True, visibility='private', is_virtual=True)
+    ## mobility-model.h (module 'mobility'): ns3::Vector ns3::MobilityModel::DoGetVelocity() const [member function]
+    cls.add_method('DoGetVelocity', 
+                   'ns3::Vector', 
+                   [], 
+                   is_pure_virtual=True, is_const=True, visibility='private', is_virtual=True)
+    ## mobility-model.h (module 'mobility'): void ns3::MobilityModel::DoSetPosition(ns3::Vector const & position) [member function]
+    cls.add_method('DoSetPosition', 
+                   'void', 
+                   [param('ns3::Vector const &', 'position')], 
+                   is_pure_virtual=True, visibility='private', is_virtual=True)
+    return
+
 def register_Ns3MsduAggregator_methods(root_module, cls):
     ## msdu-aggregator.h (module 'wifi'): ns3::MsduAggregator::MsduAggregator() [constructor]
     cls.add_constructor([])
@@ -10869,6 +11009,86 @@
                    [param('uint64_t const &', 'value')])
     return
 
+def register_Ns3Vector2DChecker_methods(root_module, cls):
+    ## vector.h (module 'core'): ns3::Vector2DChecker::Vector2DChecker() [constructor]
+    cls.add_constructor([])
+    ## vector.h (module 'core'): ns3::Vector2DChecker::Vector2DChecker(ns3::Vector2DChecker const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::Vector2DChecker const &', 'arg0')])
+    return
+
+def register_Ns3Vector2DValue_methods(root_module, cls):
+    ## vector.h (module 'core'): ns3::Vector2DValue::Vector2DValue() [constructor]
+    cls.add_constructor([])
+    ## vector.h (module 'core'): ns3::Vector2DValue::Vector2DValue(ns3::Vector2DValue const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::Vector2DValue const &', 'arg0')])
+    ## vector.h (module 'core'): ns3::Vector2DValue::Vector2DValue(ns3::Vector2D const & value) [constructor]
+    cls.add_constructor([param('ns3::Vector2D const &', 'value')])
+    ## vector.h (module 'core'): ns3::Ptr<ns3::AttributeValue> ns3::Vector2DValue::Copy() const [member function]
+    cls.add_method('Copy', 
+                   'ns3::Ptr< ns3::AttributeValue >', 
+                   [], 
+                   is_const=True, is_virtual=True)
+    ## vector.h (module 'core'): bool ns3::Vector2DValue::DeserializeFromString(std::string value, ns3::Ptr<ns3::AttributeChecker const> checker) [member function]
+    cls.add_method('DeserializeFromString', 
+                   'bool', 
+                   [param('std::string', 'value'), param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
+                   is_virtual=True)
+    ## vector.h (module 'core'): ns3::Vector2D ns3::Vector2DValue::Get() const [member function]
+    cls.add_method('Get', 
+                   'ns3::Vector2D', 
+                   [], 
+                   is_const=True)
+    ## vector.h (module 'core'): std::string ns3::Vector2DValue::SerializeToString(ns3::Ptr<ns3::AttributeChecker const> checker) const [member function]
+    cls.add_method('SerializeToString', 
+                   'std::string', 
+                   [param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
+                   is_const=True, is_virtual=True)
+    ## vector.h (module 'core'): void ns3::Vector2DValue::Set(ns3::Vector2D const & value) [member function]
+    cls.add_method('Set', 
+                   'void', 
+                   [param('ns3::Vector2D const &', 'value')])
+    return
+
+def register_Ns3Vector3DChecker_methods(root_module, cls):
+    ## vector.h (module 'core'): ns3::Vector3DChecker::Vector3DChecker() [constructor]
+    cls.add_constructor([])
+    ## vector.h (module 'core'): ns3::Vector3DChecker::Vector3DChecker(ns3::Vector3DChecker const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::Vector3DChecker const &', 'arg0')])
+    return
+
+def register_Ns3Vector3DValue_methods(root_module, cls):
+    ## vector.h (module 'core'): ns3::Vector3DValue::Vector3DValue() [constructor]
+    cls.add_constructor([])
+    ## vector.h (module 'core'): ns3::Vector3DValue::Vector3DValue(ns3::Vector3DValue const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::Vector3DValue const &', 'arg0')])
+    ## vector.h (module 'core'): ns3::Vector3DValue::Vector3DValue(ns3::Vector3D const & value) [constructor]
+    cls.add_constructor([param('ns3::Vector3D const &', 'value')])
+    ## vector.h (module 'core'): ns3::Ptr<ns3::AttributeValue> ns3::Vector3DValue::Copy() const [member function]
+    cls.add_method('Copy', 
+                   'ns3::Ptr< ns3::AttributeValue >', 
+                   [], 
+                   is_const=True, is_virtual=True)
+    ## vector.h (module 'core'): bool ns3::Vector3DValue::DeserializeFromString(std::string value, ns3::Ptr<ns3::AttributeChecker const> checker) [member function]
+    cls.add_method('DeserializeFromString', 
+                   'bool', 
+                   [param('std::string', 'value'), param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
+                   is_virtual=True)
+    ## vector.h (module 'core'): ns3::Vector3D ns3::Vector3DValue::Get() const [member function]
+    cls.add_method('Get', 
+                   'ns3::Vector3D', 
+                   [], 
+                   is_const=True)
+    ## vector.h (module 'core'): std::string ns3::Vector3DValue::SerializeToString(ns3::Ptr<ns3::AttributeChecker const> checker) const [member function]
+    cls.add_method('SerializeToString', 
+                   'std::string', 
+                   [param('ns3::Ptr< ns3::AttributeChecker const >', 'checker')], 
+                   is_const=True, is_virtual=True)
+    ## vector.h (module 'core'): void ns3::Vector3DValue::Set(ns3::Vector3D const & value) [member function]
+    cls.add_method('Set', 
+                   'void', 
+                   [param('ns3::Vector3D const &', 'value')])
+    return
+
 def register_Ns3WifiChannel_methods(root_module, cls):
     ## wifi-channel.h (module 'wifi'): ns3::WifiChannel::WifiChannel() [constructor]
     cls.add_constructor([])