tidying up repository

master
Frederik Maaßen 2 years ago
parent 97375562ff
commit 454d5741d3
  1. 146
      Readme.md
  2. 570
      evaluation/s_to_d_iperf_tcp_post_failure_graph.eps
  3. 570
      evaluation/s_to_d_iperf_tcp_post_failure_graph_shortcut.eps
  4. 574
      evaluation/s_to_d_iperf_tcp_pre_failure_graph.eps
  5. 574
      evaluation/s_to_d_iperf_tcp_pre_failure_graph_shortcut.eps
  6. BIN
      latex_editing_instructions.pdf
  7. 24
      mininet_topology_test/topology_test.py
  8. 8
      short_cut_implementation/.idea/.gitignore
  9. 6
      short_cut_implementation/.idea/inspectionProfiles/profiles_settings.xml
  10. 4
      short_cut_implementation/.idea/misc.xml
  11. 8
      short_cut_implementation/.idea/modules.xml
  12. 12
      short_cut_implementation/.idea/short_cut_implementation.iml
  13. 6
      short_cut_implementation/.idea/vcs.xml
  14. 177
      short_cut_implementation/controller/short_cut_controller.py
  15. 24
      short_cut_implementation/controller/shortcut_ryu_controller.py
  16. 88
      short_cut_implementation/topology/linuxrouter.py
  17. 1
      short_cut_implementation/topology/nfqueue.log
  18. 275
      short_cut_implementation/topology/shortcut_test_topology.py
  19. 80
      short_cut_implementation/topology/simplenetwork.py
  20. 69
      test data/failure_path_1/bandwidth/sc/h1_to_h6_iperf_tcp_failure_concurrent_sc_client.out
  21. 61
      test data/failure_path_1/bandwidth/sc/h1_to_h6_iperf_tcp_failure_concurrent_sc_parsed.out
  22. 60
      test data/failure_path_1/bandwidth/sc/h1_to_h6_iperf_tcp_failure_concurrent_sc_pre_parsed.out
  23. 73
      test data/failure_path_1/bandwidth/sc/h1_to_h6_iperf_tcp_failure_concurrent_sc_server.out
  24. 24
      test data/failure_path_1/bandwidth/sc/h1_to_h6_iperf_tcp_post_failure_sc_client.out
  25. 16
      test data/failure_path_1/bandwidth/sc/h1_to_h6_iperf_tcp_post_failure_sc_parsed.out
  26. 15
      test data/failure_path_1/bandwidth/sc/h1_to_h6_iperf_tcp_post_failure_sc_pre_parsed.out
  27. 28
      test data/failure_path_1/bandwidth/sc/h1_to_h6_iperf_tcp_post_failure_sc_server.out
  28. 24
      test data/failure_path_1/bandwidth/sc/h1_to_h6_iperf_tcp_pre_failure_sc_client.out
  29. 16
      test data/failure_path_1/bandwidth/sc/h1_to_h6_iperf_tcp_pre_failure_sc_parsed.out
  30. 15
      test data/failure_path_1/bandwidth/sc/h1_to_h6_iperf_tcp_pre_failure_sc_pre_parsed.out
  31. 28
      test data/failure_path_1/bandwidth/sc/h1_to_h6_iperf_tcp_pre_failure_sc_server.out
  32. 69
      test data/failure_path_1/bandwidth/wo_sc/h1_to_h6_iperf_tcp_failure_concurrent_wo_sc_client.out
  33. 61
      test data/failure_path_1/bandwidth/wo_sc/h1_to_h6_iperf_tcp_failure_concurrent_wo_sc_parsed.out
  34. 60
      test data/failure_path_1/bandwidth/wo_sc/h1_to_h6_iperf_tcp_failure_concurrent_wo_sc_pre_parsed.out
  35. 73
      test data/failure_path_1/bandwidth/wo_sc/h1_to_h6_iperf_tcp_failure_concurrent_wo_sc_server.out
  36. 24
      test data/failure_path_1/bandwidth/wo_sc/h1_to_h6_iperf_tcp_post_failure_wo_sc_client.out
  37. 16
      test data/failure_path_1/bandwidth/wo_sc/h1_to_h6_iperf_tcp_post_failure_wo_sc_parsed.out
  38. 15
      test data/failure_path_1/bandwidth/wo_sc/h1_to_h6_iperf_tcp_post_failure_wo_sc_pre_parsed.out
  39. 28
      test data/failure_path_1/bandwidth/wo_sc/h1_to_h6_iperf_tcp_post_failure_wo_sc_server.out
  40. 24
      test data/failure_path_1/bandwidth/wo_sc/h1_to_h6_iperf_tcp_pre_failure_wo_sc_client.out
  41. 16
      test data/failure_path_1/bandwidth/wo_sc/h1_to_h6_iperf_tcp_pre_failure_wo_sc_parsed.out
  42. 15
      test data/failure_path_1/bandwidth/wo_sc/h1_to_h6_iperf_tcp_pre_failure_wo_sc_pre_parsed.out
  43. 28
      test data/failure_path_1/bandwidth/wo_sc/h1_to_h6_iperf_tcp_pre_failure_wo_sc_server.out
  44. 43
      test data/failure_path_1/bandwidth_link_usage/sc/h1_to_h6_iperf_bandwidth_link_usage_concurrent_failure_sc_additional_client.out
  45. 31
      test data/failure_path_1/bandwidth_link_usage/sc/h1_to_h6_iperf_bandwidth_link_usage_concurrent_failure_sc_additional_parsed.out
  46. 47
      test data/failure_path_1/bandwidth_link_usage/sc/h1_to_h6_iperf_bandwidth_link_usage_concurrent_failure_sc_additional_server.out
  47. 39
      test data/failure_path_1/bandwidth_link_usage/sc/h1_to_h6_iperf_bandwidth_link_usage_concurrent_failure_sc_client.out
  48. 31
      test data/failure_path_1/bandwidth_link_usage/sc/h1_to_h6_iperf_bandwidth_link_usage_concurrent_failure_sc_parsed.out
  49. 30
      test data/failure_path_1/bandwidth_link_usage/sc/h1_to_h6_iperf_bandwidth_link_usage_concurrent_failure_sc_pre_parsed.out
  50. 43
      test data/failure_path_1/bandwidth_link_usage/sc/h1_to_h6_iperf_bandwidth_link_usage_concurrent_failure_sc_server.out
  51. 43
      test data/failure_path_1/bandwidth_link_usage/sc/h1_to_h6_iperf_bandwidth_link_usage_post_failure_sc_additional_client.out
  52. 31
      test data/failure_path_1/bandwidth_link_usage/sc/h1_to_h6_iperf_bandwidth_link_usage_post_failure_sc_additional_parsed.out
  53. 47
      test data/failure_path_1/bandwidth_link_usage/sc/h1_to_h6_iperf_bandwidth_link_usage_post_failure_sc_additional_server.out
  54. 39
      test data/failure_path_1/bandwidth_link_usage/sc/h1_to_h6_iperf_bandwidth_link_usage_post_failure_sc_client.out
  55. 31
      test data/failure_path_1/bandwidth_link_usage/sc/h1_to_h6_iperf_bandwidth_link_usage_post_failure_sc_parsed.out
  56. 30
      test data/failure_path_1/bandwidth_link_usage/sc/h1_to_h6_iperf_bandwidth_link_usage_post_failure_sc_pre_parsed.out
  57. 43
      test data/failure_path_1/bandwidth_link_usage/sc/h1_to_h6_iperf_bandwidth_link_usage_post_failure_sc_server.out
  58. 43
      test data/failure_path_1/bandwidth_link_usage/sc/h1_to_h6_iperf_bandwidth_link_usage_pre_failure_sc_additional_client.out
  59. 31
      test data/failure_path_1/bandwidth_link_usage/sc/h1_to_h6_iperf_bandwidth_link_usage_pre_failure_sc_additional_parsed.out
  60. 47
      test data/failure_path_1/bandwidth_link_usage/sc/h1_to_h6_iperf_bandwidth_link_usage_pre_failure_sc_additional_server.out
  61. 39
      test data/failure_path_1/bandwidth_link_usage/sc/h1_to_h6_iperf_bandwidth_link_usage_pre_failure_sc_client.out
  62. 31
      test data/failure_path_1/bandwidth_link_usage/sc/h1_to_h6_iperf_bandwidth_link_usage_pre_failure_sc_parsed.out
  63. 30
      test data/failure_path_1/bandwidth_link_usage/sc/h1_to_h6_iperf_bandwidth_link_usage_pre_failure_sc_pre_parsed.out
  64. 43
      test data/failure_path_1/bandwidth_link_usage/sc/h1_to_h6_iperf_bandwidth_link_usage_pre_failure_sc_server.out
  65. 41
      test data/failure_path_1/bandwidth_link_usage/wo_sc/h1_to_h6_iperf_bandwidth_link_usage_concurrent_failure_wo_sc_additional_client.out
  66. 31
      test data/failure_path_1/bandwidth_link_usage/wo_sc/h1_to_h6_iperf_bandwidth_link_usage_concurrent_failure_wo_sc_additional_parsed.out
  67. 45
      test data/failure_path_1/bandwidth_link_usage/wo_sc/h1_to_h6_iperf_bandwidth_link_usage_concurrent_failure_wo_sc_additional_server.out
  68. 37
      test data/failure_path_1/bandwidth_link_usage/wo_sc/h1_to_h6_iperf_bandwidth_link_usage_concurrent_failure_wo_sc_client.out
  69. 31
      test data/failure_path_1/bandwidth_link_usage/wo_sc/h1_to_h6_iperf_bandwidth_link_usage_concurrent_failure_wo_sc_parsed.out
  70. 30
      test data/failure_path_1/bandwidth_link_usage/wo_sc/h1_to_h6_iperf_bandwidth_link_usage_concurrent_failure_wo_sc_pre_parsed.out
  71. 45
      test data/failure_path_1/bandwidth_link_usage/wo_sc/h1_to_h6_iperf_bandwidth_link_usage_concurrent_failure_wo_sc_server.out
  72. 41
      test data/failure_path_1/bandwidth_link_usage/wo_sc/h1_to_h6_iperf_bandwidth_link_usage_post_failure_wo_sc_additional_client.out
  73. 31
      test data/failure_path_1/bandwidth_link_usage/wo_sc/h1_to_h6_iperf_bandwidth_link_usage_post_failure_wo_sc_additional_parsed.out
  74. 45
      test data/failure_path_1/bandwidth_link_usage/wo_sc/h1_to_h6_iperf_bandwidth_link_usage_post_failure_wo_sc_additional_server.out
  75. 37
      test data/failure_path_1/bandwidth_link_usage/wo_sc/h1_to_h6_iperf_bandwidth_link_usage_post_failure_wo_sc_client.out
  76. 31
      test data/failure_path_1/bandwidth_link_usage/wo_sc/h1_to_h6_iperf_bandwidth_link_usage_post_failure_wo_sc_parsed.out
  77. 30
      test data/failure_path_1/bandwidth_link_usage/wo_sc/h1_to_h6_iperf_bandwidth_link_usage_post_failure_wo_sc_pre_parsed.out
  78. 45
      test data/failure_path_1/bandwidth_link_usage/wo_sc/h1_to_h6_iperf_bandwidth_link_usage_post_failure_wo_sc_server.out
  79. 43
      test data/failure_path_1/bandwidth_link_usage/wo_sc/h1_to_h6_iperf_bandwidth_link_usage_pre_failure_wo_sc_additional_client.out
  80. 31
      test data/failure_path_1/bandwidth_link_usage/wo_sc/h1_to_h6_iperf_bandwidth_link_usage_pre_failure_wo_sc_additional_parsed.out
  81. 47
      test data/failure_path_1/bandwidth_link_usage/wo_sc/h1_to_h6_iperf_bandwidth_link_usage_pre_failure_wo_sc_additional_server.out
  82. 39
      test data/failure_path_1/bandwidth_link_usage/wo_sc/h1_to_h6_iperf_bandwidth_link_usage_pre_failure_wo_sc_client.out
  83. 31
      test data/failure_path_1/bandwidth_link_usage/wo_sc/h1_to_h6_iperf_bandwidth_link_usage_pre_failure_wo_sc_parsed.out
  84. 30
      test data/failure_path_1/bandwidth_link_usage/wo_sc/h1_to_h6_iperf_bandwidth_link_usage_pre_failure_wo_sc_pre_parsed.out
  85. 43
      test data/failure_path_1/bandwidth_link_usage/wo_sc/h1_to_h6_iperf_bandwidth_link_usage_pre_failure_wo_sc_server.out
  86. 65
      test data/failure_path_1/latency/sc/h1_to_10.6.0.101_ping_after_failure_sc.out
  87. 61
      test data/failure_path_1/latency/sc/h1_to_10.6.0.101_ping_after_failure_sc_parsed.out
  88. 60
      test data/failure_path_1/latency/sc/h1_to_10.6.0.101_ping_after_failure_sc_pre_parsed.out
  89. 65
      test data/failure_path_1/latency/sc/h1_to_10.6.0.101_ping_before_failure_sc.out
  90. 61
      test data/failure_path_1/latency/sc/h1_to_10.6.0.101_ping_before_failure_sc_parsed.out
  91. 60
      test data/failure_path_1/latency/sc/h1_to_10.6.0.101_ping_before_failure_sc_pre_parsed.out
  92. 65
      test data/failure_path_1/latency/sc/h1_to_10.6.0.101_ping_s_to_d_latency_concurrent_sc.out
  93. 61
      test data/failure_path_1/latency/sc/h1_to_10.6.0.101_ping_s_to_d_latency_concurrent_sc_parsed.out
  94. 60
      test data/failure_path_1/latency/sc/h1_to_10.6.0.101_ping_s_to_d_latency_concurrent_sc_pre_parsed.out
  95. 65
      test data/failure_path_1/latency/wo_sc/h1_to_10.6.0.101_ping_after_failure_wo_sc.out
  96. 61
      test data/failure_path_1/latency/wo_sc/h1_to_10.6.0.101_ping_after_failure_wo_sc_parsed.out
  97. 60
      test data/failure_path_1/latency/wo_sc/h1_to_10.6.0.101_ping_after_failure_wo_sc_pre_parsed.out
  98. 65
      test data/failure_path_1/latency/wo_sc/h1_to_10.6.0.101_ping_before_failure_wo_sc.out
  99. 61
      test data/failure_path_1/latency/wo_sc/h1_to_10.6.0.101_ping_before_failure_wo_sc_parsed.out
  100. 60
      test data/failure_path_1/latency/wo_sc/h1_to_10.6.0.101_ping_before_failure_wo_sc_pre_parsed.out
  101. Some files were not shown because too many files have changed in this diff Show More

@ -1,18 +1,148 @@
# Comparison Of Fast Recovery Methods In Networks
Bachelor Thesis about the effectiveness of ShortCut and similar Fast Recovery Mechanisms (FRM) in virtual network topologies.
## Introduction
In this work we create virtual network topologies in Mininet, implement Fast Re-Routing (FRR) and Fast Recovery Mechanisms (FRM) and evaluate them in a test framework created in python, using the Mininet Python API.
In this repository you will find all implementations and test data used in the bachelor thesis.
## Browsing the Repository
The repository is divided into three main folders:
- thesis
- implementation
- test data
Under *thesis* you will find all .tex files and images for parsing a new version of the bachelor thesis. *implementation* contains all scripts that were written in context of the test framework and under *test data* you will find the output files for all measurements used in our thesis.
## Installation
- use mininet vm ubuntu 20.04 with e.g. virtualbox
- check out the repository on vm
- install gnuplot
- install iperf3
- install netfilterqueue (python3 module) https://github.com/oremanj/python-netfilterqueue
In the following sections we will explain how to set up a Virtual Machine (VM) with Mininet and install all dependencies to use our test framework.
### Setup Mininet VM
The creators of Mininet offer a pre-configured [VM](http://mininet.org/download/) that can be used with a virtualization software like [VirtualBox](https://www.virtualbox.org/). If you want to run Mininet on a native system, you will need to install Mininet according to the instructions on the mininet [homepage](http://mininet.org/).
The Mininet VM uses the Ubuntu distribution. The Mininet VM with Ubuntu 20.04 was used in our tests.
### Install dependencies
After we got a running version of Mininet we are now required to install dependencies which will be used by our test framework.
#### [GnuPlot](http://www.gnuplot.info/)
A library for creating plots using a Command Line Interface (CLI) with extensive configuration capabilities.
GnuPlot can be installed using *apt-get* on Ubuntu.
```
sudo apt-get update
sudo apt-get install gnuplot
```
#### [iPerf3](https://iperf.fr/)
Mininet comes pre-installed with iPerf2 but iPerf3 provides higher accuracy and configurability than its predecessor.
iPerf3 can be installed using *apt-get* on Ubuntu.
```
sudo apt-get update
sudo apt-get install iperf3
```
#### [nftables](https://netfilter.org/projects/nftables/)
Nftables is used in the test framework to implement ShortCut. It is a packet filtering software mostly used for the implementation of firewall rules.
Nftables can be installed using *apt-get* on Ubuntu:
```
sudo apt-get update
sudo apt-get install nftables
```
#### [NetfilterQueue](https://github.com/oremanj/python-netfilterqueue)
The NetfilterQueue python library is a module that enables python to hook into events of the Netfilter Queue, a component storing packets that were redirected by software like *nftables*.
```
sudo apt-get update
sudo apt-get install build-essential python-dev libnetfilter-queue-dev
```
## Checkout this repository
You can either use *git* to checkout this repository or download a .zip archive directly in your browser. After you have an extracted version of this repository on your Mininet instance, you can start using the framework.
## Using the framework
The main entry point for any interaction with the framework is the *mininet_controller.py*. It can be executed using *python3*. In our instance of the Mininet VM we had to use *sudo* for all executions of python3. We assume the *implementation* directory as current working directory.
```
sudo python3 mininet_controller.py --help
```
Executing this command will result in the following output:
```
usage: mininet_controller.py [-h] [--tests] [--test TEST] [--topo TOPO]
[--topos] [--shortcut] [--limit_bw LIMIT_BW]
[--delay DELAY] [--produce_set] [--full_suite]
optional arguments:
-h, --help show this help message and exit
--tests list all available tests for a topology
--test TEST perform defined test on execution
--topo TOPO use defined topo
--topos list all available topologies
--shortcut use shortcut
--limit_bw LIMIT_BW limit bandwith of links in MBits
--delay DELAY add delay in ms to each link
--produce_set will execute the test with and without ShortCut
--full_suite will execute the test with and without ShortCut on all
defined topologies
```
### Selecting a topology
Using ``` sudo python3 mininet_controller.py --topos ``` will list all available topologies.
An examplary output would be:
```
{'Minimal': '2 hosts connected to a switch', '4R4H': 'A topology using 4 routers and 3 hosts', '6R4H': 'A topology using 6 routers and 3 hosts', '8R4H': 'A topology using 8 routers and 3 hosts'}
```
Using the identifier of a topology, in this case the key in the dictionary that was returned, we can tell our test framework to build said topology. A command building a topology using 4 routers and 3 hosts would be:
```
sudo python3 mininet_controller.py --topo 4R4H
```
The test framework will create the topology and start the Mininet CLI which can then be used for manual configuration and testing.
### Executing tests
For each topology tests can be implemented. These are unique to each topology and are implemented inside the topology class. To list all available tests for a topology simply use
```sudo python3 mininet_controller.py --topo 4R4H --tests```.
An examplary output would be:
```
Currently available tests are: ['tcp_bandwidth_intermediate', 'udp_bandwidth_intermediate', 'bandwidth_link_usage_intermediate', 'bandwidth_link_usage_concurrent', 'bandwidth_failure_concurrent', 'latency_failure_concurrent', 'latency_failure_intermediate', 'tcp_packet_flow_intermediate', 'udp_packet_flow_intermediate', 'udp_packet_flow_concurrent', 'tcp_packet_flow_concurrent']
```
Using the name of a test we can start the automatic execution of the test. Most tests log their results directly to the **/tmp** directory.
**Warning**: Some tests use the same file names for every executed test. This might cause multiple runs of a test to overwrite old results. Please make sure to save any results that are worth preserving in a separate directory.
```
sudo python3 mininet_controller.py --topo 4R4H --test latency_failure_intermediate
```
The test will execute all defined steps and then shut down the created topology.
## Extending the framework
### Creating tests
Tests can be added to any topology in the ```get_tests(self)``` function. Please use already implemented tests as a guideline for creating tests.
### Adding topologies
Topologies in our framework need to inherit from the *CustomTopo* class. This class defines 3 abstract methods, namely ```get_policies()```, ```get_tests()``` and ```get_routings()```. These need to be implemented by any topology used by our framework. Please use already existing topologies as a guideline for configuration. In addition to this, each topology should implement the ```build()``` method containing the actual creation of the topology using the Mininet python API.
After the topology was created and configured, it can now be added to the set of known topologies. Because the framework is not yet able to scan for new topologies itself, new topologies should be added to the ```topos``` dictionary in *mininet_controller.py*, using an identifier as key and supplying the class name, the module name and a description.
The topology should now be listed when listing all topologies and can be used in the test framework.
### Adding functions for tests
The *mininet_controller.py* contains a ```functions``` dictionary which references functions test configurations in topologies should be able to use. Each function is listed by name as a key and contains an attribute called *callable*, which contains a lambda call to the corresponding function. This is done to enable test configurations in topologies to reference said functions using these identifiers and sets of arguments, without actually knowing about existing functions.
Any function added to this dictionary can then be used to run tests.
## Troubleshooting
- shortcut implementation not working - check file listener.log in execution directory and /tmp/shortcut.log
- graphs do not contain data - check /tmp/{test_name}.out (raw output), /tmp/{test_name}_pre_parsed.out (filtered output), /tmp/{test_name}_parsed.out (extended and filtered output)
### ShortCut Implementation not working
Check file listener.log in execution directory and /tmp/shortcut.log.
### Errors in data or empty graphs
Check /tmp/{test_name}.out (raw output), /tmp/{test_name}_pre_parsed.out (filtered output), /tmp/{test_name}_parsed.out (extended and filtered output) or separate test folders for data collected by tests.

@ -1,570 +0,0 @@
%!PS-Adobe-3.0 EPSF-3.0
%%Creator: cairo 1.16.0 (https://cairographics.org)
%%CreationDate: Mon Apr 4 18:53:41 2022
%%Pages: 1
%%DocumentData: Clean7Bit
%%LanguageLevel: 2
%%BoundingBox: 0 0 360 216
%%EndComments
%%BeginProlog
50 dict begin
/q { gsave } bind def
/Q { grestore } bind def
/cm { 6 array astore concat } bind def
/w { setlinewidth } bind def
/J { setlinecap } bind def
/j { setlinejoin } bind def
/M { setmiterlimit } bind def
/d { setdash } bind def
/m { moveto } bind def
/l { lineto } bind def
/c { curveto } bind def
/h { closepath } bind def
/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto
0 exch rlineto 0 rlineto closepath } bind def
/S { stroke } bind def
/f { fill } bind def
/f* { eofill } bind def
/n { newpath } bind def
/W { clip } bind def
/W* { eoclip } bind def
/BT { } bind def
/ET { } bind def
/BDC { mark 3 1 roll /BDC pdfmark } bind def
/EMC { mark /EMC pdfmark } bind def
/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def
/Tj { show currentpoint cairo_store_point } bind def
/TJ {
{
dup
type /stringtype eq
{ show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse
} forall
currentpoint cairo_store_point
} bind def
/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore
cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def
/Tf { pop /cairo_font exch def /cairo_font_matrix where
{ pop cairo_selectfont } if } bind def
/Td { matrix translate cairo_font_matrix matrix concatmatrix dup
/cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point
/cairo_font where { pop cairo_selectfont } if } bind def
/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def
cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def
/g { setgray } bind def
/rg { setrgbcolor } bind def
/d1 { setcachedevice } bind def
/cairo_data_source {
CairoDataIndex CairoData length lt
{ CairoData CairoDataIndex get /CairoDataIndex CairoDataIndex 1 add def }
{ () } ifelse
} def
/cairo_flush_ascii85_file { cairo_ascii85_file status { cairo_ascii85_file flushfile } if } def
/cairo_image { image cairo_flush_ascii85_file } def
/cairo_imagemask { imagemask cairo_flush_ascii85_file } def
%%EndProlog
%%BeginSetup
%%BeginResource: font DejaVuSans
11 dict begin
/FontType 42 def
/FontName /DejaVuSans def
/PaintType 0 def
/FontMatrix [ 1 0 0 1 0 0 ] def
/FontBBox [ 0 0 0 0 ] def
/Encoding 256 array def
0 1 255 { Encoding exch /.notdef put } for
Encoding 32 /space put
Encoding 48 /zero put
Encoding 49 /one put
Encoding 50 /two put
Encoding 52 /four put
Encoding 53 /five put
Encoding 54 /six put
Encoding 55 /seven put
Encoding 56 /eight put
Encoding 57 /nine put
Encoding 66 /B put
Encoding 67 /C put
Encoding 80 /P put
Encoding 84 /T put
Encoding 97 /a put
Encoding 100 /d put
Encoding 101 /e put
Encoding 102 /f put
Encoding 104 /h put
Encoding 105 /i put
Encoding 108 /l put
Encoding 110 /n put
Encoding 114 /r put
Encoding 116 /t put
Encoding 117 /u put
Encoding 119 /w put
/CharStrings 27 dict dup begin
/.notdef 0 def
/space 1 def
/six 2 def
/zero 3 def
/five 4 def
/seven 5 def
/eight 6 def
/nine 7 def
/two 8 def
/four 9 def
/one 10 def
/T 11 def
/C 12 def
/P 13 def
/B 14 def
/a 15 def
/n 16 def
/d 17 def
/w 18 def
/i 19 def
/t 20 def
/h 21 def
/f 22 def
/e 23 def
/r 24 def
/l 25 def
/u 26 def
end readonly def
/sfnts [
<0001000000090080000300106376742000691d39000011d4000001fe6670676d7134766a0000
13d4000000ab676c79668765e86d0000009c00001138686561640d1447cc0000148000000036
686865610d9f0788000014b800000024686d74787c490e1f000014dc0000006c6c6f63610000
ed1400001548000000706d61787004880671000015b800000020707265703b07f100000015d8
0000056800020066fe96046605a400030007001a400c04fb0006fb0108057f0204002fc4d4ec
310010d4ecd4ec301311211125211121660400fc73031bfce5fe96070ef8f27206290002008f
ffe3049605f0000b0024005840241306000d860c00a01606a01c16a510a00c8922911c8c250c
22091c191e131c03211f1b2510fcececf4ece4310010e4f4e4fce410ee10ee10ee1112393040
14cb00cb01cd02cd03cd04cb05cb0607a41eb21e025d015d0122061514163332363534260115
2e01232202033e0133320015140023200011100021321602a4889f9f88889f9f01094c9b4cc8
d30f3bb26be10105fef0e2fefdfeee0150011b4c9b033bbaa2a1bbbba1a2ba0279b82426fef2
feef575dfeefebe6feea018d0179016201a51e00000000020087ffe3048f05f0000b00170023
401306a01200a00c91128c18091c0f1e031c151b1810fcecf4ec310010e4f4ec10ee30012202
111012333212111002273200111000232200111000028b9c9d9d9c9d9d9d9dfb0109fef7fbfb
fef701090550fecdfeccfecdfecd0133013301340133a0fe73fe86fe87fe73018d0179017a01
8d000001009effe3046405d5001d005e4023041a071186101d1aa00714a010890d02a000810d
8c07a41e171c010a031c000a10061e10fc014bb016544bb014545b58b90010ffc038594bb00f
5458b9001000403859c4d4ec10c4ee310010e4e4f4ec10e6ee10fec410ee1112393013211521
113e0133320015140021222627351e0133323635342623220607dd0319fda02c582cfa0124fe
d4feef5ec3685ac06badcacaad51a15405d5aafe920f0ffeeeeaf1fef52020cb3130b69c9cb6
24260000000100a80000046805d5000600634018051102030203110405044205a00081030503
01040100060710fcccc411393931002ff4ec304b5358071005ed071005ed5922014bb0165458
bd00070040000100070007ffc03811373859401258020106031a05390548056703b000b00607
5d005d13211501230121a803c0fde2d301fefd3305d556fa81052b0000000003008bffe3048b
05f0000b0023002f00434025180c00a02706a01e2da012911e8c27a330180c242a1c15241c0f
091c151b1e031c0f211b3010fcc4ecf4c4ec10ee10ee113939310010ece4f4ec10ee10ee3939
30012206151416333236353426252e01353424333216151406071e0115140423222435343613
1416333236353426232206028b90a5a59090a6a5fea5829100ffdedffe918192a3fef7f7f7fe
f7a448918382939382839102c59a87879a9b86879a5620b280b3d0d0b380b22022c68fd9e8e8
d98fc6016174828274748282000000020081ffe3048705f00018002400584023071f19018600
19a00aa504a00089161fa01091168c25071c1c21131e0022221c0d1b2510fcece4f4ecec3100
10e4f4ec10e6fef5ee10ee111239304016c419c21ac01bc01cc01dc21ec41f07aa12bc12e912
035d015d37351e01333212130e01232200353400332000111000212226013236353426232206
151416e14c9c4bc8d30f3ab26ce0fefb0110e201030111feb1fee54c9c013e889f9f88889f9f
1fb82426010d0112565c010febe60116fe73fe86fe9ffe5b1e0297baa2a1bbbba1a2ba000001
00960000044a05f0001c009e4027191a1b03181c11050400110505044210a111940da0149104
00a00200100a02010a1c171003061d10fc4bb015544bb016545b4bb014545b58b90003ffc038
59c4d4ecc0c011123931002fec32f4ecf4ec304b5358071005ed0705ed01b01c101117395922
0140325504560556077a047a05761b87190704000419041a041b051c74007606751a731b741c
82008619821a821b821ca800a81b115d005d25211521353600373e0135342623220607353e01
333204151406070600018902c1fc4c73018d33614da7865fd3787ad458e80114455b19fef4aa
aaaa7701913a6d974977964243cc3132e8c25ca5701dfeeb000000020064000004a405d50002
000d0081401d010d030d0003030d4200030b07a00501038109010c0a001c0608040c0e10dc4b
b00b544bb00d545b58b9000cffc03859d43cc4ec32113931002fe4d43cec321239304b535807
1004c9071005c9592201402a0b002a0048005900690077008a000716012b0026012b0336014e
014f0c4f0d5601660175017a0385010d5d005d09012103331133152311231121350306fe0201
fe35fed5d5c9fd5e0525fce303cdfc33a8fea00160c30000000100e10000045a05d5000a0040
40154203a00402a005810700a009081f061c03001f010b10d44bb00f5458b9000100403859ec
c4fcec31002fec32f4ecd4ec304b5358592201b40f030f04025d3721110535253311211521fe
014afe990165ca014afca4aa047348b848fad5aa00000001fffa000004e905d50007004a400e
0602950081040140031c0040050810d4e4fce431002ff4ec3230014bb00a5458bd0008004000
0100080008ffc03811373859401300091f00100110021f071009400970099f09095d03211521
112311210604effdeecbfdee05d5aafad5052b0000010073ffe3052705f000190036401a0da1
0eae0a951101a100ae04951791118c1a07190d003014101a10fcec32ec310010e4f4ecf4ec10
eef6ee30b40f1b1f1b02015d01152e0123200011100021323637150e01232000111000213216
052766e782ff00fef00110010082e7666aed84feadfe7a0186015386ed0562d55f5efec7fed8
fed9fec75e5fd34848019f01670168019f470000000200c90000048d05d500080013003a4018
0195100095098112100a0802040005190d3f11001c09041410fcec32fcec11173931002ff4ec
d4ec30400b0f151f153f155f15af1505015d011133323635342623252132041514042b011123
0193fe8d9a9a8dfe3801c8fb0101fefffbfeca052ffdcf92878692a6e3dbdde2fda8000300c9
000004ec05d5000800110020004340231900950a0995128101950aad1f110b080213191f0500
0e1c1605191c2e09001c12042110fcec32fcecd4ec111739393931002fececf4ec10ee3930b2
0f2201015d01112132363534262301112132363534262325213216151406071e011514042321
01930144a39d9da3febc012b94919194fe0b0204e7fa807c95a5fef0fbfde802c9fddd878b8c
850266fe3e6f727170a6c0b189a21420cb98c8da0002007bffe3042d047b000a002500bc4027
191f0b17090e00a91706b90e1120861fba1cb923b8118c170c001703180d09080b1f03081445
2610fcecccd4ec323211393931002fc4e4f4fcf4ec10c6ee10ee11391139123930406e301d30
1e301f3020302130223f27401d401e401f402040214022501d501e501f502050215022502770
27851d871e871f8720872185229027a027f0271e301e301f30203021401e401f40204021501e
501f50205021601e601f60206021701e701f70207021801e801f80208021185d015d01220615
14163332363d01371123350e01232226353436332135342623220607353e0133321602bedfac
816f99b9b8b83fbc88accbfdfb0102a79760b65465be5af3f00233667b6273d9b4294cfd81aa
6661c1a2bdc0127f8b2e2eaa2727fc00000100ba00000464047b001300364019030900030e01
06870e11b80cbc0a010208004e0d09080b461410fcec32f4ec31002f3ce4f4c4ec1112173930
b46015cf1502015d0111231134262322061511231133153e013332160464b87c7c95acb9b942
b375c1c602a4fd5c029e9f9ebea4fd870460ae6564ef00020071ffe3045a06140010001c0038
40191ab9000e14b905088c0eb801970317040008024711120b451d10fcecf4ec323231002fec
e4f4c4ec10c4ee30b6601e801ea01e03015d0111331123350e01232202111000333216011416
33323635342623220603a2b8b83ab17ccbff00ffcb7cb1fdc7a79292a8a89292a703b6025ef9
eca86461014401080108014461fe15cbe7e7cbcbe7e700010056000006350460000c01eb4049
05550605090a0904550a0903550a0b0a025501020b0b0a061107080705110405080807021103
020c000c011100000c420a050203060300bf0b080c0b0a09080605040302010b07000d10d44b
b00a544bb011545b4bb012545b4bb013545b4bb00b545b58b9000000403859014bb00c544bb0
0d545b4bb010545b58b90000ffc03859cc173931002f3cec32321739304b5358071005ed0710
08ed071008ed071005ed071008ed071005ed0705ed071008ed59220140ff050216021605220a
350a49024905460a400a5b025b05550a500a6e026e05660a79027f0279057f05870299029805
940abc02bc05ce02c703cf051d0502090306040b050a080b09040b050c1502190316041a051b
081b09140b150c2500250123022703210425052206220725082709240a210b230c3903360436
08390c300e460248034604400442054006400740084409440a440b400e400e56005601560250
0451055206520750085309540a550b6300640165026a0365046a056a066a076e09610b670c6f
0e7500750179027d0378047d057a067f067a077f07780879097f097b0a760b7d0c870288058f
0e97009701940293039c049b05980698079908402f960c9f0ea600a601a402a403ab04ab05a9
06a907ab08a40caf0eb502b103bd04bb05b809bf0ec402c303cc04ca05795d005d13331b0133
1b013301230b012356b8e6e5d9e6e5b8fedbd9f1f2d90460fc96036afc96036afba00396fc6a
000200c100000179061400030007002b400e06be04b100bc020501080400460810fc3cec3231
002fe4fcec30400b1009400950096009700905015d1333112311331523c1b8b8b8b80460fba0
0614e90000010037000002f2059e0013003840190e05080f03a9001101bc08870a0b08090204
000810120e461410fc3cc4fc3cc432393931002fecf43cc4ec3211393930b2af1501015d0111
2115211114163b01152322263511233533110177017bfe854b73bdbdd5a28787059efec28ffd
a0894e9a9fd202608f013e000000000100ba000004640614001300344019030900030e010687
0e11b80c970a010208004e0d09080b461410fcec32f4ec31002f3cecf4c4ec1112173930b260
1501015d0111231134262322061511231133113e013332160464b87c7c95acb9b942b375c1c6
02a4fd5c029e9f9ebea4fd870614fd9e6564ef000001002f000002f8061400130059401c0510
010c08a906018700970e06bc0a02130700070905080d0f0b4c1410fc4bb00a5458b9000b0040
38594bb00e5458b9000bffc038593cc4fc3cc4c412393931002fe432fcec10ee321239393001
b640155015a015035d01152322061d012115211123112335333534363302f8b0634d012ffed1
b9b0b0aebd0614995068638ffc2f03d18f4ebbab00020071ffe3047f047b0014001b00704024
001501098608880515a90105b90c01bb18b912b80c8c1c1b1502081508004b02120f451c10fc
ecf4ecc4111239310010e4f4ece410ee10ee10f4ee1112393040293f1d701da01dd01df01d05
3f003f013f023f153f1b052c072f082f092c0a6f006f016f026f156f1b095d71015d0115211e
0133323637150e01232000111000333200072e0123220607047ffcb20ccdb76ac76263d06bfe
f4fec70129fce20107b802a5889ab90e025e5abec73434ae2a2c0138010a01130143feddc497
b4ae9e00000100ba0000034a047b001100304014060b0700110b03870eb809bc070a06080008
461210fcc4ec3231002fe4f4ecc4d4cc11123930b450139f1302015d012e0123220615112311
33153e0133321617034a1f492c9ca7b9b93aba85132e1c03b41211cbbefdb20460ae66630505
0000000100c100000179061400030022b7009702010800460410fcec31002fec30400d100540
05500560057005f00506015d13331123c1b8b80614f9ec00000200aeffe30458047b00130014
003b401c030900030e0106870e118c0a01bc14b80c0d0908140b4e020800461510fcecf439ec
3231002fe4e432f4c4ec1112173930b46f15c01502015d131133111416333236351133112335
0e0123222601aeb87c7c95adb8b843b175c1c801cf01ba02a6fd619f9fbea4027bfba0ac6663
f003a800013500b800cb00cb00c100aa009c01a600b800660000007100cb00a002b200850075
00b800c301cb0189022d00cb00a600f000d300aa008700cb03aa0400014a003300cb000000d9
050200f4015400b4009c01390114013907060400044e04b4045204b804e704cd0037047304cd
04600473013303a2055605a60556053903c5021200c9001f00b801df007300ba03e9033303bc
0444040e00df03cd03aa00e503aa0404000000cb008f00a4007b00b80014016f007f027b0252
008f00c705cd009a009a006f00cb00cd019e01d300f000ba018300d5009803040248009e01d5
00c100cb00f600830354027f00000333026600d300c700a400cd008f009a0073040005d5010a
00fe022b00a400b4009c00000062009c0000001d032d05d505d505d505f0007f007b005400a4
06b80614072301d300b800cb00a601c301ec069300a000d3035c037103db0185042304a80448
008f0139011401390360008f05d5019a0614072306660179046004600460047b009c00000277
046001aa00e904600762007b00c5007f027b000000b4025205cd006600bc00660077061000cd
013b01850389008f007b0000001d00cd074a042f009c009c0000077d006f0000006f0335006a
006f007b00ae00b2002d0396008f027b00f600830354063705f6008f009c04e10266008f018d
02f600cd03440029006604ee00730000140000960000b707060504030201002c2010b0022549
64b040515820c859212d2cb002254964b040515820c859212d2c20100720b00050b00d7920b8
ffff5058041b0559b0051cb0032508b0042523e120b00050b00d7920b8ffff5058041b0559b0
051cb0032508e12d2c4b505820b0fd454459212d2cb002254560442d2c4b5358b00225b00225
45445921212d2c45442d2cb00225b0022549b00525b005254960b0206368208a108a233a8a10
653a2d000001000000025eb85dafa1da5f0f3cf5001f080000000000d3d94ef700000000d3d9
4ef7f7d6fc4c0e5909dc00000008000000010000000000010000076dfe1d00000efef7d6fa51
0e5900010000000000000000000000000000001b04cd0066028b00000517008f051700870517
009e051700a80517008b051700810517009605170064051700e104e3fffa0596007304d300c9
057d00c904e7007b051200ba05140071068b0056023900c103230037051200ba02d1002f04ec
0071034a00ba023900c1051200ae0000000000000044000000440000011c000001a000000260
000002ec000003c0000004940000059400000650000006c000000730000007c8000008480000
08f800000a2400000a9c00000b3400000d5800000da800000e2400000e9c00000f3400001008
00001078000010b40000113800010000001b0354002b0068000c000200100099000800000415
021600080004b8028040fffbfe03fa1403f92503f83203f79603f60e03f5fe03f4fe03f32503
f20e03f19603f02503ef8a4105effe03ee9603ed9603ecfa03ebfa03eafe03e93a03e84203e7
fe03e63203e5e45305e59603e48a4105e45303e3e22f05e3fa03e22f03e1fe03e0fe03df3203
de1403dd9603dcfe03db1203da7d03d9bb03d8fe03d68a4105d67d03d5d44705d57d03d44703
d3d21b05d3fe03d21b03d1fe03d0fe03cffe03cefe03cd9603cccb1e05ccfe03cb1e03ca3203
c9fe03c6851105c61c03c51603c4fe03c3fe03c2fe03c1fe03c0fe03bffe03befe03bdfe03bc
fe03bbfe03ba1103b9862505b9fe03b8b7bb05b8fe03b7b65d05b7bb03b78004b6b52505b65d
40ff03b64004b52503b4fe03b39603b2fe03b1fe03b0fe03affe03ae6403ad0e03acab2505ac
6403abaa1205ab2503aa1203a98a4105a9fa03a8fe03a7fe03a6fe03a51203a4fe03a3a20e05
a33203a20e03a16403a08a4105a096039ffe039e9d0c059efe039d0c039c9b19059c64039b9a
10059b19039a1003990a0398fe0397960d0597fe03960d03958a410595960394930e05942803
930e0392fa039190bb0591fe03908f5d0590bb039080048f8e25058f5d038f40048e25038dfe
038c8b2e058cfe038b2e038a8625058a410389880b05891403880b0387862505876403868511
0586250385110384fe038382110583fe0382110381fe0380fe037ffe0340ff7e7d7d057efe03
7d7d037c64037b5415057b25037afe0379fe03780e03770c03760a0375fe0374fa0373fa0372
fa0371fa0370fe036ffe036efe036c21036bfe036a1142056a530369fe03687d036711420566
fe0365fe0364fe0363fe0362fe03613a0360fa035e0c035dfe035bfe035afe0359580a0559fa
03580a035716190557320356fe035554150555420354150353011005531803521403514a1305
51fe03500b034ffe034e4d10054efe034d10034cfe034b4a13054bfe034a4910054a1303491d
0d05491003480d0347fe0346960345960344fe0343022d0543fa0342bb03414b0340fe033ffe
033e3d12053e14033d3c0f053d12033c3b0d053c40ff0f033b0d033afe0339fe033837140538
fa033736100537140336350b05361003350b03341e03330d0332310b0532fe03310b03302f0b
05300d032f0b032e2d09052e10032d09032c32032b2a25052b64032a2912052a250329120328
27250528410327250326250b05260f03250b0324fe0323fe03220f0321011005211203206403
1ffa031e1d0d051e64031d0d031c1142051cfe031bfa031a42031911420519fe031864031716
190517fe031601100516190315fe0314fe0313fe031211420512fe0311022d05114203107d03
0f64030efe030d0c16050dfe030c0110050c16030bfe030a100309fe0308022d0508fe030714
030664030401100504fe03401503022d0503fe0302011005022d0301100300fe0301b8016485
8d012b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b
2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b
2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b
2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b
2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b002b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b
2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b
2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b
2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b
2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b1d00>
] def
/f-0-0 currentdict end definefont pop
%%EndResource
%%EndSetup
%%Page: 1 1
%%BeginPageSetup
%%PageBoundingBox: 0 0 360 216
%%EndPageSetup
q 10 6 341 204 rectclip
1 0 0 -1 0 216 cm q
0 g
0.25 w
0 J
0 j
[] 0.0 d
3.8 M q 1 0 0 1 0 0 cm
28.551 196.898 m 32.25 196.898 l S Q
q 1 0 0 1 0 0 cm
344.148 196.898 m 340.449 196.898 l S Q
BT
8 0 0 -8 10.7 199.925781 Tm
/f-0-0 1 Tf
[( 60)]TJ
ET
q 1 0 0 1 0 0 cm
28.551 170.199 m 32.25 170.199 l S Q
q 1 0 0 1 0 0 cm
344.148 170.199 m 340.449 170.199 l S Q
BT
8 0 0 -8 10.7 173.225781 Tm
/f-0-0 1 Tf
[( 65)]TJ
ET
q 1 0 0 1 0 0 cm
28.551 143.449 m 32.25 143.449 l S Q
q 1 0 0 1 0 0 cm
344.148 143.449 m 340.449 143.449 l S Q
BT
8 0 0 -8 10.7 146.475781 Tm
/f-0-0 1 Tf
[( 70)]TJ
ET
q 1 0 0 1 0 0 cm
28.551 116.75 m 32.25 116.75 l S Q
q 1 0 0 1 0 0 cm
344.148 116.75 m 340.449 116.75 l S Q
BT
8 0 0 -8 10.7 119.775781 Tm
/f-0-0 1 Tf
[( 75)]TJ
ET
q 1 0 0 1 0 0 cm
28.551 90 m 32.25 90 l S Q
q 1 0 0 1 0 0 cm
344.148 90 m 340.449 90 l S Q
BT
8 0 0 -8 10.7 93.025781 Tm
/f-0-0 1 Tf
[( 80)]TJ
ET
q 1 0 0 1 0 0 cm
28.551 63.301 m 32.25 63.301 l S Q
q 1 0 0 1 0 0 cm
344.148 63.301 m 340.449 63.301 l S Q
BT
8 0 0 -8 10.7 66.325781 Tm
/f-0-0 1 Tf
[( 85)]TJ
ET
q 1 0 0 1 0 0 cm
28.551 36.551 m 32.25 36.551 l S Q
q 1 0 0 1 0 0 cm
344.148 36.551 m 340.449 36.551 l S Q
BT
8 0 0 -8 10.7 39.575781 Tm
/f-0-0 1 Tf
[( 90)]TJ
ET
q 1 0 0 1 0 0 cm
28.551 9.852 m 32.25 9.852 l S Q
q 1 0 0 1 0 0 cm
344.148 9.852 m 340.449 9.852 l S Q
BT
8 0 0 -8 10.7 12.875781 Tm
/f-0-0 1 Tf
[( 95)]TJ
ET
q 1 0 0 1 0 0 cm
28.551 196.898 m 28.551 193.199 l S Q
q 1 0 0 1 0 0 cm
28.551 9.852 m 28.551 13.551 l S Q
BT
8 0 0 -8 24.725 209.225781 Tm
/f-0-0 1 Tf
( 0)Tj
ET
q 1 0 0 1 0 0 cm
68 196.898 m 68 193.199 l S Q
q 1 0 0 1 0 0 cm
68 9.852 m 68 13.551 l S Q
BT
8 0 0 -8 64.175 209.225781 Tm
/f-0-0 1 Tf
( 2)Tj
ET
q 1 0 0 1 0 0 cm
107.449 196.898 m 107.449 193.199 l S Q
q 1 0 0 1 0 0 cm
107.449 9.852 m 107.449 13.551 l S Q
BT
8 0 0 -8 103.625 209.225781 Tm
/f-0-0 1 Tf
( 4)Tj
ET
q 1 0 0 1 0 0 cm
146.898 196.898 m 146.898 193.199 l S Q
q 1 0 0 1 0 0 cm
146.898 9.852 m 146.898 13.551 l S Q
BT
8 0 0 -8 143.075 209.225781 Tm
/f-0-0 1 Tf
( 6)Tj
ET
q 1 0 0 1 0 0 cm
186.352 196.898 m 186.352 193.199 l S Q
q 1 0 0 1 0 0 cm
186.352 9.852 m 186.352 13.551 l S Q
BT
8 0 0 -8 182.525 209.225781 Tm
/f-0-0 1 Tf
( 8)Tj
ET
q 1 0 0 1 0 0 cm
225.801 196.898 m 225.801 193.199 l S Q
q 1 0 0 1 0 0 cm
225.801 9.852 m 225.801 13.551 l S Q
BT
8 0 0 -8 219.425 209.225781 Tm
/f-0-0 1 Tf
[( 10)]TJ
ET
q 1 0 0 1 0 0 cm
265.25 196.898 m 265.25 193.199 l S Q
q 1 0 0 1 0 0 cm
265.25 9.852 m 265.25 13.551 l S Q
BT
8 0 0 -8 258.875 209.225781 Tm
/f-0-0 1 Tf
[( 12)]TJ
ET
q 1 0 0 1 0 0 cm
304.699 196.898 m 304.699 193.199 l S Q
q 1 0 0 1 0 0 cm
304.699 9.852 m 304.699 13.551 l S Q
BT
8 0 0 -8 298.325 209.225781 Tm
/f-0-0 1 Tf
[( 14)]TJ
ET
q 1 0 0 1 0 0 cm
344.148 196.898 m 344.148 193.199 l S Q
q 1 0 0 1 0 0 cm
344.148 9.852 m 344.148 13.551 l S Q
BT
8 0 0 -8 337.775 209.225781 Tm
/f-0-0 1 Tf
[( 16)]TJ
ET
q 1 0 0 1 0 0 cm
28.551 9.852 315.598 187.047 re S Q
BT
8 0 0 -8 195.6 21.225781 Tm
/f-0-0 1 Tf
[(T)61(CP Bandwidt)-4(h)3( af)14(ter fai)4(l)3(ur)26(e)]TJ
ET
0.580392 0 0.827451 rg
q 1 0 0 1 0 0 cm
309.852 18.199 m 333.949 18.199 l S Q
q 1 0 0 1 0 0 cm
48.301 195.301 m 68 190.5 l 87.75 43.5 l 107.449 14.648 l 127.199 21.602
l 146.898 18.398 l 166.648 17.852 l 186.352 23.75 l 206.102 22.699 l 225.801
25.898 l 245.551 18.398 l 265.25 20.551 l 285 22.699 l 304.699 39.25 l
324.449 22.148 l S Q
q 1 0 0 1 0 0 cm
45.301 195.301 m 51.301 195.301 l S Q
q 1 0 0 1 0 0 cm
48.301 192.301 m 48.301 198.301 l S Q
q 1 0 0 1 0 0 cm
65 190.5 m 71 190.5 l S Q
q 1 0 0 1 0 0 cm
68 187.5 m 68 193.5 l S Q
q 1 0 0 1 0 0 cm
84.75 43.5 m 90.75 43.5 l S Q
q 1 0 0 1 0 0 cm
87.75 40.5 m 87.75 46.5 l S Q
q 1 0 0 1 0 0 cm
104.449 14.648 m 110.449 14.648 l S Q
q 1 0 0 1 0 0 cm
107.449 11.648 m 107.449 17.648 l S Q
q 1 0 0 1 0 0 cm
124.199 21.602 m 130.199 21.602 l S Q
q 1 0 0 1 0 0 cm
127.199 18.602 m 127.199 24.602 l S Q
q 1 0 0 1 0 0 cm
143.898 18.398 m 149.898 18.398 l S Q
q 1 0 0 1 0 0 cm
146.898 15.398 m 146.898 21.398 l S Q
q 1 0 0 1 0 0 cm
163.648 17.852 m 169.648 17.852 l S Q
q 1 0 0 1 0 0 cm
166.648 14.852 m 166.648 20.852 l S Q
q 1 0 0 1 0 0 cm
183.352 23.75 m 189.352 23.75 l S Q
q 1 0 0 1 0 0 cm
186.352 20.75 m 186.352 26.75 l S Q
q 1 0 0 1 0 0 cm
203.102 22.699 m 209.102 22.699 l S Q
q 1 0 0 1 0 0 cm
206.102 19.699 m 206.102 25.699 l S Q
q 1 0 0 1 0 0 cm
222.801 25.898 m 228.801 25.898 l S Q
q 1 0 0 1 0 0 cm
225.801 22.898 m 225.801 28.898 l S Q
q 1 0 0 1 0 0 cm
242.551 18.398 m 248.551 18.398 l S Q
q 1 0 0 1 0 0 cm
245.551 15.398 m 245.551 21.398 l S Q
q 1 0 0 1 0 0 cm
262.25 20.551 m 268.25 20.551 l S Q
q 1 0 0 1 0 0 cm
265.25 17.551 m 265.25 23.551 l S Q
q 1 0 0 1 0 0 cm
282 22.699 m 288 22.699 l S Q
q 1 0 0 1 0 0 cm
285 19.699 m 285 25.699 l S Q
q 1 0 0 1 0 0 cm
301.699 39.25 m 307.699 39.25 l S Q
q 1 0 0 1 0 0 cm
304.699 36.25 m 304.699 42.25 l S Q
q 1 0 0 1 0 0 cm
321.449 22.148 m 327.449 22.148 l S Q
q 1 0 0 1 0 0 cm
324.449 19.148 m 324.449 25.148 l S Q
q 1 0 0 1 0 0 cm
318.898 18.199 m 324.898 18.199 l S Q
q 1 0 0 1 0 0 cm
321.898 15.199 m 321.898 21.199 l S Q
0 g
q 1 0 0 1 0 0 cm
28.551 9.852 315.598 187.047 re S Q
Q Q
showpage
%%Trailer
end
%%EOF

@ -1,570 +0,0 @@
%!PS-Adobe-3.0 EPSF-3.0
%%Creator: cairo 1.16.0 (https://cairographics.org)
%%CreationDate: Mon Apr 4 18:59:50 2022
%%Pages: 1
%%DocumentData: Clean7Bit
%%LanguageLevel: 2
%%BoundingBox: 0 0 360 216
%%EndComments
%%BeginProlog
50 dict begin
/q { gsave } bind def
/Q { grestore } bind def
/cm { 6 array astore concat } bind def
/w { setlinewidth } bind def
/J { setlinecap } bind def
/j { setlinejoin } bind def
/M { setmiterlimit } bind def
/d { setdash } bind def
/m { moveto } bind def
/l { lineto } bind def
/c { curveto } bind def
/h { closepath } bind def
/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto
0 exch rlineto 0 rlineto closepath } bind def
/S { stroke } bind def
/f { fill } bind def
/f* { eofill } bind def
/n { newpath } bind def
/W { clip } bind def
/W* { eoclip } bind def
/BT { } bind def
/ET { } bind def
/BDC { mark 3 1 roll /BDC pdfmark } bind def
/EMC { mark /EMC pdfmark } bind def
/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def
/Tj { show currentpoint cairo_store_point } bind def
/TJ {
{
dup
type /stringtype eq
{ show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse
} forall
currentpoint cairo_store_point
} bind def
/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore
cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def
/Tf { pop /cairo_font exch def /cairo_font_matrix where
{ pop cairo_selectfont } if } bind def
/Td { matrix translate cairo_font_matrix matrix concatmatrix dup
/cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point
/cairo_font where { pop cairo_selectfont } if } bind def
/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def
cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def
/g { setgray } bind def
/rg { setrgbcolor } bind def
/d1 { setcachedevice } bind def
/cairo_data_source {
CairoDataIndex CairoData length lt
{ CairoData CairoDataIndex get /CairoDataIndex CairoDataIndex 1 add def }
{ () } ifelse
} def
/cairo_flush_ascii85_file { cairo_ascii85_file status { cairo_ascii85_file flushfile } if } def
/cairo_image { image cairo_flush_ascii85_file } def
/cairo_imagemask { imagemask cairo_flush_ascii85_file } def
%%EndProlog
%%BeginSetup
%%BeginResource: font DejaVuSans
11 dict begin
/FontType 42 def
/FontName /DejaVuSans def
/PaintType 0 def
/FontMatrix [ 1 0 0 1 0 0 ] def
/FontBBox [ 0 0 0 0 ] def
/Encoding 256 array def
0 1 255 { Encoding exch /.notdef put } for
Encoding 32 /space put
Encoding 48 /zero put
Encoding 49 /one put
Encoding 50 /two put
Encoding 52 /four put
Encoding 53 /five put
Encoding 54 /six put
Encoding 55 /seven put
Encoding 56 /eight put
Encoding 57 /nine put
Encoding 66 /B put
Encoding 67 /C put
Encoding 80 /P put
Encoding 84 /T put
Encoding 97 /a put
Encoding 100 /d put
Encoding 101 /e put
Encoding 102 /f put
Encoding 104 /h put
Encoding 105 /i put
Encoding 108 /l put
Encoding 110 /n put
Encoding 114 /r put
Encoding 116 /t put
Encoding 117 /u put
Encoding 119 /w put
/CharStrings 27 dict dup begin
/.notdef 0 def
/space 1 def
/six 2 def
/zero 3 def
/five 4 def
/seven 5 def
/eight 6 def
/nine 7 def
/two 8 def
/four 9 def
/one 10 def
/T 11 def
/C 12 def
/P 13 def
/B 14 def
/a 15 def
/n 16 def