diff -rupN DPF/cover/ltd_cover_all.c DPF2/cover/ltd_cover_all.c --- DPF/cover/ltd_cover_all.c 1969-12-31 19:00:00.000000000 -0500 +++ DPF2/cover/ltd_cover_all.c 2007-01-16 21:28:24.000000000 -0500 @@ -0,0 +1,164 @@ +/* + +Copyright (C) Purdue University 2002 + +This program, which is part of the DPF software tool kit for +static distributed denial-of-service (DDoS) performance evaluation +developed at the Network Systems Lab, Purdue University, may be +redistributed and/or modified under the terms of the GNU General +Public License published by the Free Software Foundation. + + +Technical Contact at Purdue University: + +Ali Selcuk (selcuk@cs.purdue.edu) or Kihong Park (park@cs.purdue.edu) + +For future version updates and related information, check the website +http://www.cs.purdue.edu/nsl + +*/ + + +/* + The filter nodes are selected up to a given percentage. + Tie-breaking according to original degrees. + Placement is chosen from the all nodes only. +*/ + +#include +#include +#include + +#define MAXASN 65536 +#define MAXEDGE 1000000 + + +typedef struct { + int x; + int y; + int checked; +} EDGE; + +char taken[MAXASN]={0}, transitness[MAXASN]={0}; +int degree[MAXASN], orgdegree[MAXASN]; +int as2id[MAXASN], id2as[MAXASN]; +EDGE edge[MAXEDGE]; +int N=0, N_edge=0, N_checked=0, N_thresh, N_taken=0; + +void read_graph(); +int find_maxdegree(); +int ComputePlacement(); + + +main(int argc, char **argv) +{ + FILE *transfile; + int as, id, i; + float x; + + if (argc != 3) { + fprintf(stderr, "Usage: %s \n", argv[0]); + exit(-1); + } + + /* Initialization: */ + for (i=0; i maxdegree) || + (degree[i]==maxdegree && orgdegree[i]>maxorg))) { + + max_i = i; + maxdegree = degree[i]; + maxorg = orgdegree[i]; + } + } + return max_i; +} + + + + +void read_graph(char *graphname) +{ + FILE *graphfile; + int i, j, k, as, id, neighbor, deg; + char checked[MAXASN]; + + if ((graphfile = fopen(graphname, "r")) == NULL) { + fprintf(stderr, "graphfile %s is not found\n",graphname); + exit(1); + }; + + N = 0; + while (fscanf(graphfile, "%d", &as) > 0 ) { + int c; + id2as[id = N++] = as; + as2id[as] = id; + /* Skip the rest of the line */ + while( ((c = getc(graphfile)) != '\n') && (c != EOF)) ; + } + + rewind(graphfile); + while (fscanf(graphfile, "%d -> %d\t", &as, °) == 2) { + for (j=0; j < 65536; j++) + checked[j] = 0; + checked[as] = 1; + + while (fscanf(graphfile, ":%d", &neighbor) == 1) { + if ( !checked[neighbor] ) { + checked[neighbor] = 1; + edge[N_edge].x = as2id[as]; + edge[N_edge].y = as2id[neighbor]; + edge[N_edge].checked = 0; + N_edge++; + degree[as2id[as]]++; + } + } + } + for (i=0; i +#include +#include + +#define MAXASN 65536 +#define MAXEDGE 1000000 + + +typedef struct { + int x; + int y; + int checked; +} EDGE; + +char taken[MAXASN]={0}, transitness[MAXASN]={0}; +int degree[MAXASN], orgdegree[MAXASN]; +int as2id[MAXASN], id2as[MAXASN]; +EDGE edge[MAXEDGE]; +int N=0, N_edge=0, N_checked=0, N_thresh, N_taken=0; + +void read_graph(); +int find_maxdegree(); +int ComputePlacement(); + + +main(int argc, char **argv) +{ + FILE *transfile; + int as, id, i; + float x; + + if (argc != 4) { + fprintf(stderr, "Usage: %s \n", argv[0]); + exit(-1); + } + + /* Initialization: */ + for (i=0; i maxdegree) || + (degree[i]==maxdegree && orgdegree[i]>maxorg))) { + + max_i = i; + maxdegree = degree[i]; + maxorg = orgdegree[i]; + } + } + return max_i; +} + + + + +void read_graph(char *graphname) +{ + FILE *graphfile; + int i, j, k, as, id, neighbor, deg; + char checked[MAXASN]; + + if ((graphfile = fopen(graphname, "r")) == NULL) { + fprintf(stderr, "graphfile %s is not found\n",graphname); + exit(1); + }; + + N = 0; + while (fscanf(graphfile, "%d", &as) > 0 ) { + int c; + id2as[id = N++] = as; + as2id[as] = id; + /* Skip the rest of the line */ + while( ((c = getc(graphfile)) != '\n') && (c != EOF)) ; + } + + rewind(graphfile); + while (fscanf(graphfile, "%d -> %d\t", &as, °) == 2) { + for (j=0; j < 65536; j++) + checked[j] = 0; + checked[as] = 1; + + while (fscanf(graphfile, ":%d", &neighbor) == 1) { + if ( !checked[neighbor] ) { + checked[neighbor] = 1; + edge[N_edge].x = as2id[as]; + edge[N_edge].y = as2id[neighbor]; + edge[N_edge].checked = 0; + N_edge++; + degree[as2id[as]]++; + } + } + } + for (i=0; i +#include +#include + +#define MAXASN 65536 + +/* internally, we always use id, + * as numbers are only used externally + */ +char taken[MAXASN]={0}; +int id2as[MAXASN]; +int N, N_left; +int fnum; + +void read_graph(); +int find_nextNode(); +int find_filters(); + + +main(int argc, char **argv) +{ + int i; + int seed; + float ratio; + + if (argc != 4) { + fprintf(stderr, "Usage: %s \n", argv[0]); + exit(-1); + } + N = 0; + for (i=0; i 0 ) { + int c; + id2as[N++] = as; + /* Skip the rest of the line */ + while( ((c = getc(graphfile)) != '\n') && (c != EOF)) ; + } +} diff -rupN DPF/cover/random_filter.cold DPF2/cover/random_filter.cold --- DPF/cover/random_filter.cold 1969-12-31 19:00:00.000000000 -0500 +++ DPF2/cover/random_filter.cold 2007-01-16 14:35:41.000000000 -0500 @@ -0,0 +1,176 @@ +/* + +Copyright (C) Purdue University 2002 + +This program, which is part of the DPF software tool kit for +static distributed denial-of-service (DDoS) performance evaluation +developed at the Network Systems Lab, Purdue University, may be +redistributed and/or modified under the terms of the GNU General +Public License published by the Free Software Foundation. + + +Technical Contact at Purdue University: + +Ali Selcuk (selcuk@cs.purdue.edu) or Kihong Park (park@cs.purdue.edu) + +For future version updates and related information, check the website +http://www.cs.purdue.edu/nsl + +*/ + + +/* + Tie-breaking according to original degrees. + VC is chosen from the transit nodes only. + filter nodes are chosen randomly. +*/ + +#include +#include +#include + +#define MAXASN 65536 +#define MAXEDGE 1000000 + + +typedef struct { + int x; + int y; + int checked; +} EDGE; + +char taken[MAXASN]={0}, transitness[MAXASN]={0}; +int degree[MAXASN], orgdegree[MAXASN]; +int transitNodes[MAXASN]; +int as2id[MAXASN], id2as[MAXASN]; +EDGE edge[MAXEDGE]; +int N, N_edge, N_checked, N_transit, N_transitleft; +int fnum; + +void read_graph(); +int find_nextNode(); +int find_vc2(); + + +main(int argc, char **argv) +{ + FILE *transfile; + int as, id, i; + int seed; + + if (argc != 5) { + fprintf(stderr, "Usage: %s \ + \n", argv[0]); + exit(-1); + } + N = N_edge = N_checked = N_transit = 0; + for (i=0; i 0 ) { + int c; + id2as[id = N++] = as; + as2id[as] = id; + /* Skip the rest of the line */ + while( ((c = getc(graphfile)) != '\n') && (c != EOF)) ; + } + + rewind(graphfile); + while (fscanf(graphfile, "%d -> %d\t", &as, °) == 2) { + for (j=0; j < 65536; j++) + checked[j] = 0; + checked[as] = 1; + + while (fscanf(graphfile, ":%d", &neighbor) == 1) { + if ( !checked[neighbor] ) { + checked[neighbor] = 1; + edge[N_edge].x = as2id[as]; + edge[N_edge].y = as2id[neighbor]; + edge[N_edge].checked = 0; + N_edge++; + degree[as2id[as]]++; + } + } + } + for (i=0; i +#include +#include + +#define MAXASN 65536 +#define MAXEDGE 1000000 + + +typedef struct { + int x; + int y; + int checked; +} EDGE; + +char taken[MAXASN]={0}, transitness[MAXASN]={0}; +int degree[MAXASN], orgdegree[MAXASN]; +int transitNodes[MAXASN]; +int as2id[MAXASN], id2as[MAXASN]; +EDGE edge[MAXEDGE]; +int N, N_edge, N_checked, N_transit, N_transitleft; + +void read_graph(); +int find_nextNode(); +int find_vc2(); + + +main(int argc, char **argv) +{ + FILE *transfile; + int as, id, i; + int seed; + + if (argc != 4) { + fprintf(stderr, "Usage: %s \n", argv[0]); + exit(-1); + } + N = N_edge = N_checked = N_transit = 0; + for (i=0; i 0 ) { + int c; + id2as[id = N++] = as; + as2id[as] = id; + /* Skip the rest of the line */ + while( ((c = getc(graphfile)) != '\n') && (c != EOF)) ; + } + + rewind(graphfile); + while (fscanf(graphfile, "%d -> %d\t", &as, °) == 2) { + for (j=0; j < 65536; j++) + checked[j] = 0; + checked[as] = 1; + + while (fscanf(graphfile, ":%d", &neighbor) == 1) { + if ( !checked[neighbor] ) { + checked[neighbor] = 1; + edge[N_edge].x = as2id[as]; + edge[N_edge].y = as2id[neighbor]; + edge[N_edge].checked = 0; + N_edge++; + degree[as2id[as]]++; + } + } + } + for (i=0; i +#include +#include + +#define MAXASN 65536 +#define MAXEDGE 1000000 + + +typedef struct { + int x; + int y; + int checked; +} EDGE; + +char taken[MAXASN]={0}; +int degree[MAXASN], orgdegree[MAXASN]; +int as2id[MAXASN], id2as[MAXASN]; +EDGE edge[MAXEDGE]; +int N, N_edge, N_checked; + +void read_graph(); +int find_maxdegree(); +int find_vc2(); + + +main(int argc, char **argv) +{ + FILE *transfile; + int as, id, i; + + if (argc != 2) { + fprintf(stderr, "Usage: %s \n", argv[0]); + exit(-1); + } + N = N_edge = N_checked = 0; + for (i=0; i maxdegree) || + (degree[i]==maxdegree && maxdegree>0 && orgdegree[i]>maxorg))) { + max_i = i; + maxdegree = degree[i]; + maxorg = orgdegree[i]; + } + } + return max_i; +} + + + + +void read_graph(char *graphname) +{ + FILE *graphfile; + int i, j, k, as, id, neighbor, deg; + char checked[MAXASN]; + + if ((graphfile = fopen(graphname, "r")) == NULL) { + fprintf(stderr, "graphfile %s is not found\n",graphname); + exit(1); + }; + + N = 0; + while (fscanf(graphfile, "%d", &as) > 0 ) { + int c; + id2as[id = N++] = as; + as2id[as] = id; + /* Skip the rest of the line */ + while( ((c = getc(graphfile)) != '\n') && (c != EOF)) ; + } + + rewind(graphfile); + while (fscanf(graphfile, "%d -> %d\t", &as, °) == 2) { + for (j=0; j < 65536; j++) + checked[j] = 0; + checked[as] = 1; + + while (fscanf(graphfile, ":%d", &neighbor) == 1) { + if ( !checked[neighbor] ) { + checked[neighbor] = 1; + edge[N_edge].x = as2id[as]; + edge[N_edge].y = as2id[neighbor]; + edge[N_edge].checked = 0; + N_edge++; + degree[as2id[as]]++; + } + } + } + for (i=0; i +#include +#include + +#define MAXASN 65536 +#define MAXEDGE 1000000 + + +typedef struct { + int x; + int y; + int checked; +} EDGE; + +char taken[MAXASN]={0}, transitness[MAXASN]={0}; +int degree[MAXASN], orgdegree[MAXASN]; +int as2id[MAXASN], id2as[MAXASN]; +EDGE edge[MAXEDGE]; +int N, N_edge, N_checked; + +void read_graph(); +int find_maxdegree(); +int find_vc2(); + + +main(int argc, char **argv) +{ + FILE *transfile; + int as, id, i; + + if (argc != 3) { + fprintf(stderr, "Usage: %s \n", argv[0]); + exit(-1); + } + N = N_edge = N_checked = 0; + for (i=0; i maxdegree) || + (degree[i]==maxdegree && maxdegree>0 && orgdegree[i]>maxorg))) { + max_i = i; + maxdegree = degree[i]; + maxorg = orgdegree[i]; + } + } + return max_i; +} + + + + +void read_graph(char *graphname) +{ + FILE *graphfile; + int i, j, k, as, id, neighbor, deg; + char checked[MAXASN]; + + if ((graphfile = fopen(graphname, "r")) == NULL) { + fprintf(stderr, "graphfile %s is not found\n",graphname); + exit(1); + }; + + N = 0; + while (fscanf(graphfile, "%d", &as) > 0 ) { + int c; + id2as[id = N++] = as; + as2id[as] = id; + /* Skip the rest of the line */ + while( ((c = getc(graphfile)) != '\n') && (c != EOF)) ; + } + + rewind(graphfile); + while (fscanf(graphfile, "%d -> %d\t", &as, °) == 2) { + for (j=0; j < 65536; j++) + checked[j] = 0; + checked[as] = 1; + + while (fscanf(graphfile, ":%d", &neighbor) == 1) { + if ( !checked[neighbor] ) { + checked[neighbor] = 1; + edge[N_edge].x = as2id[as]; + edge[N_edge].y = as2id[neighbor]; + edge[N_edge].checked = 0; + N_edge++; + degree[as2id[as]]++; + } + } + } + for (i=0; i49 -D<13FF000313E0380E03F0381800F848137C48137E00787F12FC6CEB1F80A4127CC7FC15 -005C143E147E147C5C495A495A5C495A010EC7FC5B5B903870018013E0EA018039030003 -0012065A001FB5FC5A485BB5FCA219267DA521>I E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: Fb cmsy8 8 1 -/Fb 1 51 df<91B512C01307131FD97F80C7FC01FCC8FCEA01F0EA03C0485A48C9FC120E -121E5A123812781270A212F05AA3B712C0A300E0C9FCA37E1270A212781238123C7E120E -120F6C7E6C7EEA01F0EA00FCEB7F80011FB512C013071300222B7AA52F>50 -D E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: Fc cmsy9 9 1 -/Fc 1 21 df<171C177EEE01FEEE07FCEE1FF0EE7FC0923801FF00ED07FCED1FF0ED7FC0 -4A48C7FCEC07FCEC1FF0EC7FC04948C8FCEB07FCEB1FF0EB7FC04848C9FCEA07FCEA1FF0 -EA7FC048CAFCA2EA7FC0EA1FF0EA07FCEA01FF38007FC0EB1FF0EB07FCEB01FF9038007F -C0EC1FF0EC07FCEC01FF9138007FC0ED1FF0ED07FCED01FF9238007FC0EE1FF0EE07FCEE -01FEEE007E171C1700AC007FB712FCB812FEA26C16FC2F3E7AB03C>20 -D E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: Fd cmtt9 9 16 -/Fd 16 121 df<121EEA7F80A2EAFFC0A4EA7F80A2EA1E000A0A728927>46 -D<1538157C15FCA2140115F8140315F0140715E0140F15C0141F1580143F1500A25C147E -14FE5C13015C13035C13075C130F5CA2131F5C133F91C7FC5B137E13FE5B12015B12035B -A212075B120F5B121F5B123F90C8FC5A127E12FE5AA25A12781E3A7CB327>I65 D<90387FC0E03901FFF1F0000713FF5A5AEA3FE0EB801F387F000F007E130712 -FE5A1403A3EC01E06C90C7FC127E127FEA3FC013F86CB47E6C13F86C13FE6CEBFF80C614 -C0010F13E0010013F0140FEC07F81403140115FC1400127812FCA46CEB01F8A26C130390 -388007F09038F01FE090B5FC15C0150000F85B38701FF81E307CAE27>83 -D<3803FFC0000F13F04813FC4813FF811380EC1FC0381F000F000480C71207A2EB0FFF13 -7F0003B5FC120F5A383FFC07EA7FC0130012FE5AA46C130F007F131FEBC0FF6CB612806C -15C07E000313F1C69038807F8022207C9F27>97 D99 D101 -D<387FFF80B57EA37EEA000FB3B2007FB512F8B612FCA36C14F81E2E7CAD27>108 -D<397F07C01F3AFF9FF07FC09039FFF9FFE091B57E7E3A0FFC7FF1F89038F03FC001E013 -8001C01300A3EB803EB03A7FF0FFC3FF486C01E3138001F913E701F813E36C4801C31300 -2920819F27>I<387FE07F39FFF1FFC001F713F090B5FC6C80000313C1EC01FCEBFE005B -5BA25BB03A7FFF83FFE0B500C713F0A36C018313E024207F9F27>I<387FE0FFD8FFF313 -C090B512F0816C800003EB81FE49C67E49EB3F8049131F16C049130FA216E01507A6150F -16C07F151F6DEB3F80157F6DEBFF009038FF83FEECFFFC5D5D01F313C0D9F0FEC7FC91C8 -FCAC387FFF80B57EA36C5B23317F9F27>112 D<397FFC03FC39FFFE0FFF023F13804A13 -C0007F90B5FC39007FFE1F14F89138F00F809138E002004AC7FC5CA291C8FCA2137EAD00 -7FB57EB67EA36C5C22207E9F27>114 D<9038FFF3800007EBFFC0121F5A5AEB803F38FC -000F5AA2EC07806C90C7FCEA7F8013FC383FFFF06C13FC000713FF00011480D8000F13C0 -9038003FE014070078EB03F000FC1301A27E14036CEB07E0EBE01F90B512C01580150000 -FB13FC38707FF01C207B9F27>I<133C137EA8007FB512F0B612F8A36C14F0D8007EC7FC -AE1518157EA415FE6D13FC1483ECFFF86D13F06D13E0010313C0010013001F297EA827> -I<3A7FFC0FFF80486C4813C0A36C486C13803A07C000F800EBE00100035CA2EBF0030001 -5CA2EBF80700005CA390387C0F80A36D48C7FCA3EB3F3FEB1F3EA214FE6D5AA36D5AA26D -5A22207E9F27>118 D<393FFC1FFF486C5A168016006C487E3901F807E06C6C485A4A5A -017E90C7FC6D5AEB1F7E5C6D5A13076D5A5C80497E130F497E143EEB3E3FEB7E1F90387C -0F8001F87F00016D7E3803F0033A7FFE1FFF80A2B54813C06C486C1380A222207E9F27> -120 D E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: Fe cmss10 10.95 12 -/Fe 12 118 df<12FFA81200B3A612FFA8082878A719>58 D67 -D80 D97 D<49B47E010F13F0013F13FC49 -13FF90B612805A481300D807FCEB1F00D80FF0130748487F4990C7FC123F5B127F90C9FC -A312FEAA127FA36C7EA26C6C14406DEB01C06C6C13036C6C131F01FF13FF6C90B5FC7E6C -6C14806DEBFE00010F13F001011380222B7DA928>99 DI<26FC01FFECFF800107D9C00313E001 -1FD9F00F13F8017FD9F83F7F90B56C487F00FD92B5FC3CFFF80FFFFC07FFD9E003EBF001 -496C497E496C49EB7F80A290C76C48133FA34892C7FCB3A9392979A848>109 -D<38FC01FF010713C0011F13F0017F13F890B512FC12FD39FFF80FFEEBE003EBC0019038 -8000FFA290C7127FA35AB3A9202979A82F>II<00FC137CEB03FC130F131F133F137FEBFFC038FDFE00EAFFF85B5B5BA25BA2 -90C7FCA25AB3A6162979A81F>114 D<13FCACB612C0A6D800FCC7FCB3A86D132015E0EB -7F03ECFFF0A27F15C06D1300EB07F01C357EB321>116 D<00FE147FB3AC15FFA25C6C5B -6C130FEBC03F90B6FC6CEBFE7F6C13FC6C13E0000390C7FC202979A72F>I -E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: Ff cmti10 10.95 42 -/Ff 42 123 df<15FCEC07FF91261F038014F091263E01C0EB01F84A6C6C13035C494813 -70494816F0010716014948150091268001F014E0011F01071401030F15C0D93F001503F0 -0780495C017EEE0F00DB0780131E92C85A01FE5E495EEF03E04D5A021F141FDAFFC0497E -D9FBE1ECF8F0903AFFC0E001F00280903807C0780200EB0F80017E91381E0038D9FC0149 -133C0001DAC038131C01FE14783A03FF03807048EB8700D9E3FE13F0260FE0F8EBE38049 -C7EAEFC0001FED7FE0A2484815C0163F93380F003C007F92C7123890CAFCA21878187000 -FE17F060127E4D5A170360007F16076C4CC7FC171E6C6C151C5F6C6C15F06C6C4A5A6C6C -EC07C06C6C021FC8FCD8007E147C90391FC007F00107B512809026007FF8C9FC3D4375C0 -46>38 DI44 D<120FEA3FC0127FA212FFA31380EA7F00123C0A0A77891C> -46 D<15FE913807FF8091381F07C091387C01F0ECF000494813F8494813780107147C49 -5A49C7FC167E133E137EA25BA2485AA2000315FEA25B000715FCA2491301120FA34848EB -03F8A44848EB07F0A448C7EA0FE0A316C0007E141F12FE1680153FA2481500A2157EA25D -A25D4813015D6C495A127C4A5A4A5A6C49C7FC143E6C5B380FC1F03803FFC0C648C8FC27 -3F76BC2E>48 D<15031507150F151F151E153E157EEC01FEEC03FC1407141FEB01FF9038 -0FFBF8EB1FC3EB0E07130015F0A2140FA215E0A2141FA215C0A2143FA21580A2147FA215 -00A25CA25CA21301A25CA21303A25CA21307A25CA2130FA25CA2131FA25CEB7FE0B612F0 -A215E0203D77BC2E>I<15FE913803FFC091380F01F091383C00F84A137C4A7F4948133F -49487F4A148049C7FC5BEB0E0C011E15C0EB1C0EEB3C06133813781370020E133FD9F00C -148013E0141C0218137F00011600EBC0384A13FEEC600102E05B3A00E3C003F89039FF00 -07F0013C495A90C7485A5E037FC7FC15FC4A5A4A5AEC0FC04AC8FC147E14F8EB03E0495A -011FC9FC133E49141801F0143C48481438485A1678485A48C85A120E001E4A5AD83FE013 -0301FF495A397C3FF01FD8780FB55AD8700391C7FCD8F0015B486C6C5A6E5AEC07C02A3F -79BC2E>I<171C173C177CA217FCA216011603A21607A24C7EA2161DA216391679167116 -E1A2ED01C1A2ED038115071601150EA2031C7FA24B7EA25D15F05D4A5AA24A5AA24AC7FC -5C140E5C021FB6FC4A81A20270C7127FA25C13015C495AA249C8FCA2130E131E131C133C -5B01F882487ED807FEEC01FFB500E0017FEBFF80A25C39417BC044>65 -D<9339FF8001C0030F13E0033F9038F803809239FF807E07913A03FC001F0FDA0FF0EB07 -1FDA1FC0ECBF00DA7F806DB4FC4AC77E495AD903F86E5A495A130F4948157E4948157C49 -5A13FF91C9FC4848167812035B1207491670120FA2485A95C7FC485AA3127F5BA312FF5B -A490CCFCA2170FA2170EA2171E171C173C173817786C16706D15F04C5A003F5E6D140300 -1F4B5A6D4AC8FC000F151E6C6C5C6C6C14F86C6C495A6C6CEB07C090397FC03F8090261F -FFFEC9FC010713F0010013803A4272BF41>67 D<49B712C018F818FE903B0003FE0003FF -9438007F804BEC1FC0F00FE0F007F014074BEC03F8F001FCA2140F4BEC00FEA3141F4B15 -FFA3143F5DA3027F5D5DA219FE14FF92C81203A34917FC4A1507A219F813034A150F19F0 -A20107EE1FE05CF03FC0A2010FEE7F804A16006060011F4B5A4A4A5A4D5AA2013F4B5A4A -EC3FC04DC7FC017F15FEEE03FC4AEB0FF001FFEC7FE0B8128004FCC8FC16E0403E7BBD45 ->I<49B812F0A390260003FEC7123F180F4B1403A2F001E014075DA3140F5D19C0A2141F -5D1770EFF003023F02E013804B91C7FCA21601027F5CED8003A2160702FFEB1F8092B5FC -A349D9003FC8FC4A7F82A20103140E5CA2161E0107141C5CA293C9FC130F5CA3131F5CA3 -133F5CA2137FA25C497EB612E0A33C3E7BBD3B>70 D<9339FF8001C0030F13E0033F9038 -F803809239FF807E07913A03FC001F0FDA0FF0EB071FDA1FC0ECBF00DA7F806DB4FC4AC7 -7E495AD903F86E5A495A130F4948157E4948157C495A13FF91C9FC4848167812035B1207 -491670120FA2485A95C7FC485AA3127F5BA312FF5BA30303B512FC90C7FCA2DB000190C7 -FCA25FA216035FA316076C5E7FA2003F150F6D5D121F6D141F000F153F6C6C4A5A6C6C14 -F76C6CEB01E36CB4EB07C1903A7FC03F81C090391FFFFE00010701F890C8FC010013803A -4272BF46>I<49B6FC5BA2D9000313005D5DA314075DA3140F5DA3141F5DA3143F5DA314 -7F5DA314FF92C7FCA35B5CA313035CA313075CA3130F5CA3131F5CA3133F5CA2137FA25C -497EB67EA3283E7BBD23>73 D<49B5933807FFFC496062D90003F0FC00505ADBBF805E1A -771AEF1407033F923801CFE0A2F1039F020FEE071F020E606F6C140E1A3F021E161C021C -04385BA2F1707F143C023804E090C7FCF001C0629126780FE0495A02705FF00700F00E01 -14F002E0031C5BA2F03803010116704A6C6C5D18E019070103ED01C00280DA03805BA294 -3807000F13070200020E5C5FDB03F8141F495D010E4B5CA24D133F131E011CDAF9C05CEE -FB80197F013C6DB4C7FC013895C8FC5E01784A5C13F8486C4A5CD807FE4C7EB500F04948 -B512FE16E01500563E7BBD52>77 D79 D<49B77E18F018FC903B0003FE0003FEEF00 -FF4BEC7F80F03FC00207151F19E05DA2020F16F0A25DA2141FF03FE05DA2023F16C0187F -4B1580A2027FEDFF00604B495A4D5A02FF4A5A4D5A92C7EA3FC04CB4C7FC4990B512FC17 -E04ACAFCA21303A25CA21307A25CA2130FA25CA2131FA25CA2133FA25CA2137FA25C497E -B67EA33C3E7BBD3E>I<49B612FCEFFF8018F0903B0003FE000FF8EF03FE4BEB00FF8419 -800207ED3FC05DA219E0140F5DA3021FED7FC05DA2F0FF80143F4B15004D5A60027F4A5A -4B495A4D5AEF3F8002FF02FEC7FC92380007F892B512E01780499038000FE04A6D7E707E -707E0103814A130083A213075CA25E130F5C5F1603131F5CA3013F020714404A16E05F01 -7F160119C04A01031303496C1680B6D8800113079438FE0F009338007E1ECAEA3FFCEF07 -F03B407BBD42>82 D<92391FE00380ED7FFC913A01FFFE0700913907F01F8F91390FC007 -DF4AC66CB4FC023E6D5A4A130014FC495A4948147CA2495AA2010F15785CA3011F1570A4 -6E91C7FCA2808014FE90380FFFE015FC6DEBFF8016E06D806D806D6C7F141F02037FEC00 -3FED07FF1501A281A282A212075A167E120EA2001E15FE5EA25E003E14015E003F14034B -5A486C5C150F6D495A6D49C8FCD8F9F0137C39F8FE01F839F03FFFF0D8E00F13C026C001 -FEC9FC314279BF33>I<48B9FCA25A903AFE001FF00101F89138E0007FD807E0163E4901 -3F141E5B48C75BA2001E147FA2001C4B131C123C003814FFA2007892C7FC12704A153C00 -F01738485CC716001403A25DA21407A25DA2140FA25DA2141FA25DA2143FA25DA2147FA2 -5DA214FFA292C9FCA25BA25CA21303A25CEB0FFE003FB67E5AA2383D71BC41>I<913801 -FFF05CA216E0EDC00014075DA3140F92C7FCA35C141EA3143E143CA3147C1478A314F85C -A313015CA313035CA313075CA3130F91C8FCA35B131EA3133E133CA3137C1378A313F85B -A312015BA312035BA312075BA3120F90C9FCA35A121EA3123E123CA3127C1278EA7FFCA2 -12FFA2245B7CC31C>91 D<913801FFF05CA216E0EC00011503A216C0A21507A21680A215 -0FA21600A25DA2151EA2153EA2153CA2157CA21578A215F8A25DA21401A25DA21403A25D -A21407A25DA2140FA292C7FCA25CA2141EA2143EA2143CA2147CA21478A214F8A25CA213 -01A25CA21303A25CA21307A25CA2130FA291C8FCA25BA2131EA2133EA2EA7FFCA212FFA2 -245B83C31C>93 D<147E49B47E903907C1C38090391F80EFC090383F00FF017E137F4914 -804848133F485AA248481400120F5B001F5C157E485AA215FE007F5C90C7FCA21401485C -5AA21403EDF0385AA21407EDE078020F1370127C021F13F0007E013F13E0003E137FECF3 -E1261F01E313C03A0F8781E3803A03FF00FF00D800FC133E252977A72E>97 -D99 DII< -167C4BB4FC923807C78092380F83C0ED1F87161FED3F3FA2157EA21780EE0E004BC7FCA4 -14015DA414035DA30103B512F8A390260007E0C7FCA3140F5DA5141F5DA4143F92C8FCA4 -5C147EA414FE5CA413015CA4495AA4495AA4495A121E127F5C12FF49C9FCA2EAFE1EEAF8 -3C1270EA7878EA3FE0EA0F802A5383BF1C>III<1478EB01FCA21303A314F8EB00E01400AD137C48B4FC38 -038F80EA0707000E13C0121E121CEA3C0F1238A2EA781F00701380A2EAF03F140012005B -137E13FE5BA212015BA212035B1438120713E0000F1378EBC070A214F0EB80E0A2EB81C0 -1383148038078700EA03FEEA00F8163E79BC1C>I107 DIIII<903903E001F8 -90390FF807FE903A1E7C1E0F80903A1C3E3C07C0013C137801389038E003E0EB783F0170 -01C013F0ED80019038F07F0001E015F8147E1603000113FEA2C75AA20101140717F05CA2 -0103140F17E05CA20107EC1FC0A24A1480163F010F15005E167E5E131F4B5A6E485A4B5A -90393FB80F80DA9C1FC7FCEC0FFCEC03E049C9FCA2137EA213FEA25BA21201A25BA21203 -A2387FFFE0B5FCA22D3A80A72E>I114 DII<13 -7C48B4141C26038F80137EEA0707000E7F001E15FE121CD83C0F5C12381501EA781F0070 -01805BA2D8F03F1303140000005D5B017E1307A201FE5C5B150F1201495CA2151F0003ED -C1C0491481A2153F1683EE0380A2ED7F07000102FF13005C01F8EBDF0F00009038079F0E -90397C0F0F1C90391FFC07F8903907F001F02A2979A731>I<017CEB01C048B4EB07F038 -038F80EA0707000E01C013F8121E001C1403EA3C0F0038EC01F0A2D8781F130000705BA2 -EAF03F91C712E012005B017E130116C013FE5B1503000115805BA2ED07001203495B150E -A25DA25D1578000114706D5B0000495A6D485AD97E0FC7FCEB1FFEEB03F0252979A72A> -I<903903F001F890390FFC07FE90393C1E0E0F9026780F1C138001F0EBB83FD801E013F8 -9039C007F07FEA0380000714E0D9000F140048151C000E4AC7FCA2001E131FA2C75BA214 -3F92C8FCA35C147EA314FE4A131CA30101143C001E1538003F491378D87F811470018314 -F000FF5D9039077801C039FE0F7C033A7C0E3C078027783C1E1EC7FC391FF80FFC3907E0 -03F029297CA72A>120 D122 D E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: Fg cmti9 9 6 -/Fg 6 118 df -101 D<14FCEB07FF90381F07C090383E03E09038FC01F0EA01F83903F000F8485A5B120F -484813FCA248C7FCA214014814F8127EA2140300FE14F05AA2EC07E0A2007CEB0FC01580 -141FEC3F006C137E5C381F01F0380F83E03803FF80D800FCC7FC1E2278A027>111 -D<3903C00FC0390FF03FF0391E78F078391C7DE03C393C3FC0FC00381380EB7F00007814 -F8D8707E13701500EAF0FC12E0EA60F812001201A25BA21203A25BA21207A25BA2120FA2 -5BA2121FA290C8FC120E1E227AA020>114 DI<1303EB0F80A3131FA21400A25BA2133EA2137EA2137C387FFFF8A2B5 -FC3800F800A21201A25BA21203A25BA21207A25BA2120FA25B1460001F13F014E0130013 -0114C01303001E1380EB07005BEA0F1EEA07F8EA01E015307AAE19>II E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: Fh cmmi6 6 4 -/Fh 4 117 df<127812FCA212FEA2127E1206A3120CA2121C121812301260124007107A -8513>59 D<131FEBFF8C3801E0DE3803807E3807007C48133C121E123E003C5B127CA348 -5BA215401560903801E0C012781303393807E180391C1CF300380FF87F3807E03C1B177E -9522>97 D115 D<133013785BA4485AA4485AB51280A23803C000485AA448C7 -FCA4121EA25B1480383C03001306A25BEA1C38EA0FF0EA07C011217D9F18>I -E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: Fi cmmi9 9 4 -/Fi 4 121 df<123C127EB4FCA21380A2127F123D1201A412031300A25A1206120E120C -121C5A5A126009177A8715>59 D67 D<03FF13180207EBE038021FEBF87891397F00FCF802FCEB1FF0D901F0130F494813 -0749481303494814E0A249C71201A2013E15C0A3137E1780A2017F91C7FC8080EB3FF014 -FF15F06D13FE6D6D7E6D806D80010080020F7F1400150F6F7E150315011500A2120CA200 -1C5D1218A2150100385D003C14035E4B5A007E4A5A007F141F6D49C7FCD87BE0137C39F9 -FC03F839F07FFFE0D8E01F138026C003FEC8FC2D377CB42F>83 D<90391F801F8090397F -E07FE09039E0F0E0703A01C0F9C0F83903807D833807007F000E1403000C15F0001C137E -0018EC01C002FEC7FC00385B1210C7FC13015CA31303A25C1640010714E016C0001C5B00 -7E1401010F148000FE1403011FEB0700011B130E39F839F01C397070F878393FE07FE039 -0F801F8025227EA02C>120 D E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: Fj cmr6 6 9 -/Fj 9 58 df<13E01201120712FF12F91201B3A7487EB512C0A212217AA01E>49 -DI<13FF000313C0380F03E0381C00F014F800 -3E13FC147CA2001E13FC120CC712F8A2EB01F0EB03E0EB0FC03801FF00A2380003E0EB00 -F01478147C143E143F1230127812FCA2143E48137E0060137C003813F8381E03F0380FFF -C00001130018227DA01E>I<14E01301A213031307A2130D131D13391331136113E113C1 -EA01811203EA07011206120C121C12181230127012E0B6FCA2380001E0A6EB03F0EB3FFF -A218227DA11E>I<00101330381E01F0381FFFE014C01480EBFE00EA1BF00018C7FCA513 -FE381BFF80381F03C0381C01E0381800F014F8C71278A2147CA21230127812F8A2147848 -13F8006013F0387001E01238381E07803807FF00EA01F816227CA01E>II<1230123C003FB5FCA24813FE14FC38 -60001C143814704813E014C0EA0001EB0380EB07001306130E5BA25BA21378A35BA41201 -A76C5A18237CA11E>I<137F3803FFC0380781E0380E00704813380018131C1238A3123C -003F1338381FC078EBE0F0380FF9E03807FF80120114C0000713F0380F0FF8381C03FC38 -3801FE3870007E141F48130F1407A314060070130E0078130C6C1338001F13F03807FFC0 -C6130018227DA01E>I<13FE3803FFC0380781E0380E0070481378003C133848133CA200 -F8131EA3141FA40078133FA26C137F121C380F01DF3807FF9F3803FE1EC7FCA2143E143C -001C1338003E13781470003C13E0381801C0381C0780380FFE00EA03F818227DA01E>I -E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: Fk cmex10 10 2 -/Fk 2 92 df40 D<007C1A1FA200FEF23F80 -B3B3B3B3A76C1A7FA26C1B00A26D61A2003F626D1801A2001F626D1803A26C6C4E5A6D18 -0F0007626C6C4E5A6D183F6C6C4E5A6C6D4D5A6E5E6D6C4C90C7FCD93FF8EE0FFE6D6C4C -5A6DB4EE7FF86D01C04A485A6D01F002075B6D01FC021F5B9028007FFFE003B5C8FC6E90 -B65A020F16F8020316E002001680033F4AC9FC030714F09226003FFECAFC51747B7F5C> -91 D E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: Fl cmsy10 10.95 14 -/Fl 14 107 df<007FB812F8B912FCA26C17F83604789847>0 D<121EEA7F80A2EAFFC0 -A4EA7F80A2EA1E000A0A799B19>I<0060166000F816F06C1501007E15036CED07E06C6C -EC0FC06C6CEC1F806C6CEC3F006C6C147E6C6C5C6C6C495A017E495A6D495A6D6C485A6D -6C485A6D6C48C7FC903803F07E6D6C5A903800FDF8EC7FF06E5A6E5AA24A7E4A7EECFDF8 -903801F8FC903803F07E49487E49486C7E49486C7E49486C7E017E6D7E496D7E48486D7E -4848147E4848804848EC1F804848EC0FC048C8EA07E0007EED03F0481501481500006016 -602C2C73AC47>I -15 D25 D<140C141EA2143E143CA2147C1478A214F8495AA2495A -495AA2495A49CDFC133E137EEA01F8485AEA0FE0003FBB12FEBDFCA2003F1AFED80FE0CD -FCEA03F06C7EEA007E133E7F6D7E6D7EA26D7E6D7EA26D7E1478A2147C143CA2143E141E -A2140C50307BAE5B>32 D49 D<0207B512E0023F14F049B6FC4915E0D9 -0FFCC8FCEB1FE0017FC9FC13FEEA01F8485A485A5B485A121F90CAFC123EA25AA21278A2 -12F8A25AA2B812E017F0A217E000F0CAFCA27EA21278A2127CA27EA27E7F120F6C7E7F6C -7E6C7EEA00FE137FEB1FE0EB0FFC0103B612E06D15F0EB003F020714E02C3678B13D>I< -176017F01601A2EE03E0A2EE07C0A2EE0F80A2EE1F00A2163EA25EA25EA24B5AA24B5AA2 -4B5AA24B5AA24BC7FCA2153EA25DA25DA24A5AA24A5AA24A5AA24A5AA24AC8FCA2143EA2 -5CA25CA2495AA2495AA2495AA2495AA249C9FCA2133EA25BA25BA2485AA2485AA2485AA2 -485AA248CAFCA2123EA25AA25AA25A12602C5473C000>54 D<1518153CA2157CA2903803 -FC7890380FFFF8EB3E0790387801F0EBF0004848487ED803C07FD807807FA2390F0003EF -A248ECCF80001EEB07C7003E15C01587A2140F007E15E0007C1403A2141FA2141E00FC01 -3E13F0A2143CA2147CA21478A214F8A214F01301A214E0A21303A214C0A21307A21480D8 -7C0F14E0A21400007E14075BA2D83E1E14C0A2133E001FEC0F80133CD80F7C1400A2495B -0007141E00035C00015C4913F83900F801E03901FE07C090B5C7FCEBE3FCD803E0C8FCA2 -5BA26C5A244D7CC52D>59 D92 -D<153FEC03FFEC0FE0EC3F80EC7E00495A5C495AA2495AB3AA130F5C131F495A91C7FC13 -FEEA03F8EA7FE048C8FCEA7FE0EA03F8EA00FE133F806D7E130F801307B3AA6D7EA26D7E -80EB007EEC3F80EC0FE0EC03FFEC003F205B7AC32D>102 D<12FCEAFFC0EA07F0EA01FC -EA007E6D7E131F6D7EA26D7EB3AA801303806D7E1300147FEC1FC0EC07FEEC00FFEC07FE -EC1FC0EC7F0014FC1301495A5C13075CB3AA495AA2495A133F017EC7FC485AEA07F0EAFF -C000FCC8FC205B7AC32D>I<126012F0B3B3B3B3B11260045B76C319>106 -D E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: Fm cmmi8 8 8 -/Fm 8 122 df<123C127EB4FCA21380A2127F123D1201A312031300A25A1206120E5A5A -5A126009157A8714>59 D<90273FFFFC0FB5FCA2D900FEC7EA3F80A24A1500A201015D17 -7E5CA2010315FE5F5CA2010714015F5CA2010F14035F5C91B6FC5B9139C00007E05CA201 -3F140F5F91C7FCA249141F5F137EA201FE143F94C7FC5BA200015D167E5BA2000315FEB5 -39E03FFFF8A2382D7CAC3A>72 D97 D<13F8121FA21201A25BA21203A25BA21207A25BA2120FEBC7E0EB9FF8 -EBB83C381FF01EEBE01F13C09038800F80EA3F00A2123EA2007E131FA2127CA2143F00FC -14005AA2147EA2147C14FC5C387801F01303495A383C0F806C48C7FCEA0FFCEA03F0192F -7DAD1E>I115 -D<130E131FA25BA2133EA2137EA2137CA213FCA2B512F8A23801F800A25BA21203A25BA2 -1207A25BA2120FA25BA2001F1310143013001470146014E0381E01C0EB0380381F0700EA -0F0EEA07FCEA01F0152B7EA919>I<013F137C9038FFC1FF3A01C1E383803A0380F703C0 -390700F60F000E13FE4813FC12180038EC0700003049C7FCA2EA200100005BA313035CA3 -01075B5D14C000385CD87C0F130600FC140E011F130C011B131C39F03BE038D8707113F0 -393FE0FFC0260F803FC7FC221F7E9D28>120 DI E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: Fn cmmi10 10.95 26 -/Fn 26 122 df<121EEA7F8012FF13C0A213E0A3127FEA1E601200A413E013C0A3120113 -80120313005A120E5A1218123812300B1C798919>59 D<126012F8B4FCEA7FC0EA1FF0EA -07FCEA01FF38007FC0EB1FF0EB07FCEB01FF9038007FC0EC1FF0EC07FCEC01FF9138007F -C0ED1FF0ED07FCED01FF9238007FC0EE1FF0EE07FCEE01FF9338007FC0EF1FF0EF07F8EF -01FCA2EF07F8EF1FF0EF7FC0933801FF00EE07FCEE1FF0EE7FC04B48C7FCED07FCED1FF0 -ED7FC04A48C8FCEC07FCEC1FF0EC7FC04948C9FCEB07FCEB1FF0EB7FC04848CAFCEA07FC -EA1FF0EA7FC048CBFC12FC1270363678B147>62 D67 D<49B712F818FF19C0D9000190C7EA3FF0F00FF84BEC03FCF000FE19 -7F0203EE3F805DF11FC0A20207EE0FE05D1AF0A2020F16075DA21AF8141F5DA2190F143F -5DA21AF0147F4B151FA302FF17E092C9123FA21AC049177F5C1A8019FF010318005C4E5A -61010716034A5E4E5A180F010F4C5A4A5E4E5A4EC7FC011F16FE4A4A5AEF07F8013FED0F -E0EF3FC04A49B4C8FC017FEC0FFCB812F017C004FCC9FC453E7DBD4B>I<49B912C0A3D9 -000190C71201F0003F4B151F190F1A80020316075DA314075D1A00A2140F4B1307A24D5B -021F020E130E4B92C7FC171EA2023F5C5D177CEE01FC4AB55AA3ED800302FF6D5A92C7FC -A3495D5C19380401147801034B13704A16F093C85AA2010716014A5E180361010F16074A -4BC7FCA260011F163E4A157E60013F15014D5A4A140F017F15FFB95AA260423E7DBD43> -I<49B9FCA3D9000190C7120718004B157F193F191E14035DA314075D191CA2140F5D1707 -4D133C021F020E13384B1500A2171E023F141C4B133C177C17FC027FEB03F892B5FCA391 -39FF8003F0ED00011600A2495D5CA2160101035D5CA293C9FC13075CA3130F5CA3131F5C -A2133FA25C497EB612F8A3403E7DBD3A>I<49B6D8C03FB512F81BF01780D900010180C7 -383FF00093C85B4B5EA2197F14034B5EA219FF14074B93C7FCA260140F4B5DA21803141F -4B5DA21807143F4B5DA2180F4AB7FC61A20380C7121F14FF92C85BA2183F5B4A5EA2187F -13034A5EA218FF13074A93C8FCA25F130F4A5DA21703131F4A5DA2013F1507A24A5D496C -4A7EB6D8E01FB512FCA2614D3E7DBD4C>72 D<49B56C49B512F81BF0A290C76D9039000F -FE004AEE03F0705D735A03DF150302037F038F5E82190791380787FC030793C7FC150370 -5C140F91260E01FF140EA26F151E021E80021C017F141C83193C023C6D7E02381638161F -711378147802706D6C1370A2040714F002F0804A01035C8318010101EC01FF4A5E821883 -13034A91387FC380A2EF3FC7010716E791C8001F90C8FC18F718FF4981010E5E1707A213 -1E011C6F5AA2013C1501137C01FE6F5AEA03FFB512FC187818704D3E7DBD49>78 -DI83 D86 -D97 -DIIII<143C14FEA21301A314FC -EB00701400AD137E3801FF803803C7C0EA0703000F13E0120E121C13071238A2EA780F00 -7013C0A2EAF01F14801200133F14005B137EA213FE5BA212015B0003130E13F0A2000713 -1EEBE01CA2143CEBC0381478147014E013C13803E3C03801FF00EA007C173E7EBC1F> -105 DI108 D<01F8EB0FF0D803FEEB3FFC3A078F80F03E3A0F0F83C01F3B0E -07C7800F80001CEBCF0002FE80003C5B00385B495A127800705BA200F049131F011F5D00 -005BA2163F013F92C7FC91C7FC5E167E5B017E14FE5EA201FE0101EB03804914F8A20303 -1307000103F013005B170E16E000035E49153C17385F0007913801F1E0496DB45AD801C0 -023FC7FC31297EA737>110 DI114 -DI<147014FC1301A25CA21303A25CA21307A2 -5CA2130FA25CA2007FB512F0B6FC15E039001F8000133FA291C7FCA25BA2137EA213FEA2 -5BA21201A25BA21203A25BA21207EC01C013E01403000F1480A2EBC0071500140E141E5C -000713385C3803E1E03801FF80D8003EC7FC1C3A7EB821>I120 -D<137C48B4EC03802603C7C0EB0FC0EA0703000F7F000E151F001C168013071238163FD8 -780F150000705BA2D8F01F5C4A137E1200133F91C712FE5E5B137E150113FE495CA21503 -00015D5BA215075EA2150F151F00005D6D133F017C137F017E13FF90393F03DF8090380F -FF1FEB01FC90C7123F93C7FCA25DD80380137ED80FE013FE001F5C4A5AA24848485A4A5A -6CC6485A001C495A001E49C8FC000E137C380781F03803FFC0C648C9FC2A3B7EA72D>I -E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: Fo cmtt10 10.95 71 -/Fo 71 126 df<121C127FEAFF80B3EA7F00B2123EC7FCA8121C127FA2EAFF80A3EA7F00 -A2121C09396DB830>33 D<00101304007C131F00FEEB3F80A26C137FA248133FB2007E14 -00007C7F003C131E00101304191C75B830>I<903907C007C0A2496C487EA8011F131FA2 -02C05BA3007FB7FCA2B81280A36C16006C5D3A007F807F80A2020090C7FCA9495BA2003F -90B512FE4881B81280A36C1600A22701FC01FCC7FCA300031303A201F85BA76C486C5AA2 -29387DB730>I37 D39 -D<141E147F14FF5BEB03FEEB07FCEB0FF0EB1FE0EB3FC0EB7F80EBFF00485A5B12035B48 -5A120F5BA2485AA2123F5BA2127F90C7FCA412FEAD127FA47F123FA27F121FA26C7EA27F -12076C7E7F12017F6C7EEB7F80EB3FC0EB1FE0EB0FF0EB07FCEB03FEEB01FF7F147F141E -184771BE30>I<127812FE7E7F6C7E6C7EEA0FF06C7E6C7E6C7E6C7EEB7F80133F14C013 -1FEB0FE014F01307A2EB03F8A214FC1301A214FE1300A4147FAD14FEA4130114FCA21303 -14F8A2EB07F0A2130F14E0EB1FC0133F1480137FEBFF00485A485A485A485AEA3FE0485A -485A90C7FC5A1278184778BE30>I<14E0497E497EA60038EC0380007EEC0FC0D8FF83EB -3FE001C3137F9038F3F9FF267FFBFB13C06CB61280000FECFE00000314F86C5C6C6C13C0 -011F90C7FC017F13C048B512F04880000F14FE003FECFF80267FFBFB13C026FFF3F913E0 -9038C3F87F0183133FD87E03EB0FC00038EC0380000091C7FCA66D5A6D5A23277AAE30> -I44 D<007FB612F0A2B712F8 -A36C15F0A225077B9E30>I<120FEA3FC0EA7FE0A2EAFFF0A4EA7FE0A2EA3FC0EA0F000C -0C6E8B30>I<16F01501ED03F8A21507A2ED0FF0A2ED1FE0A2ED3FC0A2ED7F80A2EDFF00 -A24A5AA25D1403A24A5AA24A5AA24A5AA24A5AA24A5AA24AC7FCA2495AA25C1303A2495A -A2495AA2495AA2495AA2495AA249C8FCA2485AA25B1203A2485AA2485AA2485AA2485AA2 -485AA248C9FCA25AA2127CA225477BBE30>I<14FE903807FFC0497F013F13F8497F90B5 -7E48EB83FF4848C6138049137F4848EB3FC04848EB1FE049130F001F15F0491307A24848 -EB03F8A290C712014815FCA400FEEC00FEAD6C14016C15FCA36D1303003F15F8A26D1307 -001F15F0A26D130F6C6CEB1FE0A26C6CEB3FC06C6CEB7F806D13FF2601FF8313006CEBFF -FE6D5B6D5B010F13E06D5BD900FEC7FC273A7CB830>IIIII<000FB612804815C05AA316800180C8FCAEEB83FF019F13C090B512F0 -15FC8181D9FE0313809039F0007FC049133F0180EB1FE06CC7120F000E15F0C81207A216 -F81503A31218127EA2B4FC150716F048140F6C15E06C141F6DEB3FC06D137F3A3FE001FF -80261FFC0F13006CB55A6C5C6C5C6C14E06C6C1380D90FFCC7FC25397BB730>I -I<127CB712FC16FEA416FC48C7EA0FF816F0ED1FE0007CEC3FC0C8EA7F80EDFF00A24A5A -4A5A5D14075D140F5D4A5AA24A5AA24AC7FCA25C5C13015CA213035CA213075CA4495AA6 -131F5CA96D5A6DC8FC273A7CB830>I<49B4FC011F13F0017F13FC90B57E0003ECFF8048 -15C048010113E03A1FF8003FF049131FD83FC0EB07F8A24848EB03FC90C71201A56D1303 -003F15F86D13076C6CEB0FF06C6CEB1FE0D807FCEB7FC03A03FF83FF806C90B512006C6C -13FC011F13F0497F90B512FE48802607FE0013C0D80FF8EB3FE0D81FE0EB0FF04848EB07 -F8491303007F15FC90C712014815FE481400A66C14016C15FC6D1303003F15F86D1307D8 -1FF0EB1FF06D133F3A0FFF01FFE06C90B512C06C1580C6ECFE006D5B011F13F0010190C7 -FC273A7CB830>I<49B4FC010F13E0013F13F890B57E4880488048010113803A0FFC007F -C0D81FF0EB3FE04848131F49EB0FF048481307A290C7EA03F85A4815FC1501A416FEA37E -7E6D1303A26C6C13076C6C130F6D133FD80FFC13FF6CB6FC7E6C14FE6C14F9013FEBE1FC -010F138190380060011400ED03F8A2150716F0150F000F15E0486C131F486CEB3FC0157F -EDFF804A1300EC07FE391FF01FFC90B55A6C5C6C5C6C1480C649C7FCEB3FF0273A7CB830 ->I<120FEA3FC0EA7FE0A2EAFFF0A4EA7FE0A2EA3FC0EA0F00C7FCAF120FEA3FC0EA7FE0 -A2EAFFF0A4EA7FE0A2EA3FC0EA0F000C276EA630>II< -1278127EB4FC13C07FEA7FF813FEEA1FFF6C13C000037F6C13F86C6C7EEB1FFF6D7F0103 -13E06D7F9038007FFC6E7E91380FFF806E13C0020113F080ED3FF8151F153FEDFFF05C02 -0713C04A138091383FFE004A5A903801FFF0495B010F13804990C7FCEB7FFC48485A4813 -E0000F5B4890C8FCEA7FFE13F8EAFFE05B90C9FC127E1278252F7BB230>62 -D<147F4A7EA2497FA4497F14F7A401077F14E3A3010F7FA314C1A2011F7FA490383F80FE -A590387F007FA4498049133F90B6FCA34881A39038FC001F00038149130FA40007814913 -07A2D87FFFEB7FFFB56CB51280A46C496C130029397DB830>65 D<007FB512F0B612FE6F -7E82826C813A03F8001FF815076F7E1501A26F7EA615015EA24B5A1507ED1FF0ED7FE090 -B65A5E4BC7FC6F7E16E0829039F8000FF8ED03FC6F7E1500167FA3EE3F80A6167F1700A2 -5E4B5A1503ED1FFC007FB6FCB75A5E16C05E6C02FCC7FC29387EB730>I<91387F803C90 -3903FFF03E49EBFC7E011F13FE49EBFFFE5B9038FFE07F48EB801F3903FE000F48481307 -5B48481303A2484813015B123F491300A2127F90C8FC167C16005A5AAC7E7EA2167C6D14 -FE123FA27F121F6D13016C6C14FCA26C6CEB03F86D13076C6CEB0FF03901FF801F6C9038 -E07FE06DB512C06D14806D1400010713FC6D13F09038007FC0273A7CB830>I<003FB512 -E04814FCB67E6F7E6C816C813A03F8007FF0ED1FF8150F6F7E6F7E15016F7EA2EE7F80A2 -163F17C0161FA4EE0FE0AC161F17C0A3163F1780A2167F17005E4B5A15034B5A150F4B5A -ED7FF0003FB65A485DB75A93C7FC6C14FC6C14E02B387FB730>I<007FB7FCB81280A47E -D803F8C7123FA8EE1F0093C7FCA4157C15FEA490B5FCA6EBF800A4157C92C8FCA5EE07C0 -EE0FE0A9007FB7FCB8FCA46C16C02B387EB730>I<003FB712804816C0B8FCA27E7ED801 -FCC7121FA8EE0F8093C7FCA5153E157FA490B6FCA69038FC007FA4153E92C8FCAE383FFF -F8487FB5FCA27E6C5B2A387EB730>I<02FF13F00103EBC0F8010F13F1013F13FD4913FF -90B6FC4813C1EC007F4848133F4848131F49130F485A491307121F5B123F491303A2127F -90C7FC6F5A92C8FC5A5AA892B5FC4A14805CA26C7F6C6D1400ED03F8A27F003F1407A27F -121F6D130F120F7F6C6C131FA2D803FE133F6C6C137FECC1FF6C90B5FC7F6D13FB010F13 -F30103EBC1F0010090C8FC293A7DB830>I<007FB6FCB71280A46C1500260007F0C7FCB3 -B3A8007FB6FCB71280A46C1500213879B730>73 D<383FFFF8487FB57EA26C5B6C5BD801 -FCC9FCB3B0EE0F80EE1FC0A9003FB7FC5AB8FCA27E6C16802A387EB730>76 -DII<90383FFFE048B512FC000714FF4815804815C04815E0EBF80001E0133FD87F80EB -0FF0A290C71207A44815F8481403B3A96C1407A26C15F0A36D130FA26D131F6C6CEB3FE0 -01F813FF90B6FC6C15C06C15806C1500000114FCD8003F13E0253A7BB830>I<007FB512 -F0B612FE6F7E16E0826C813903F8003FED0FFCED03FE15016F7EA2821780163FA6167F17 -005EA24B5A1503ED0FFCED3FF890B6FC5E5E16804BC7FC15F001F8C9FCB0387FFFC0B57E -A46C5B29387EB730>I<003FB57E4814F0B612FC15FF6C816C812603F8017F9138003FF0 -151F6F7E15071503821501A515035E1507150F4B5A153F4AB45A90B65A5E93C7FC5D8182 -D9F8007FED3FE0151F150F821507A817F8EEF1FCA53A3FFF8003FB4801C0EBFFF8B56C7E -17F06C496C13E06C49EB7FC0C9EA1F002E397FB730>82 D<90390FF803C0D97FFF13E048 -B512C74814F74814FF5A381FF80F383FE001497E4848137F90C7123F5A48141FA2150FA3 -7EED07C06C91C7FC7F7FEA3FF0EA1FFEEBFFF06C13FF6C14E0000114F86C80011F13FF01 -031480D9003F13C014019138007FE0151FED0FF0A2ED07F8A2007C140312FEA56C140716 -F07F6DEB0FE06D131F01F8EB3FC001FF13FF91B51280160000FD5CD8FC7F13F8D8F81F5B -D878011380253A7BB830>I<003FB712C04816E0B8FCA43AFE003F800FA8007CED07C0C7 -91C7FCB3B1011FB5FC4980A46D91C7FC2B387EB730>I89 D<007FB5FCB61280A415 -0048C8FCB3B3B3A5B6FC1580A46C140019476DBE30>91 D<127CA212FEA27EA26C7EA26C -7EA26C7EA26C7EA26C7EA26C7EA212017FA26C7EA26D7EA26D7EA26D7EA26D7EA26D7EA2 -6D7EA2130180A26D7EA26E7EA26E7EA26E7EA26E7EA26E7EA26E7EA2140181A26E7EA2ED -7F80A2ED3FC0A2ED1FE0A2ED0FF0A2ED07F8A21503A2ED01F0150025477BBE30>I<007F -B5FCB61280A47EC7123FB3B3B3A5007FB5FCB6FCA46C140019477DBE30>I<007FB612F0 -A2B712F8A36C15F0A225077B7D30>95 D97 -DII<913801FFE04A7F5C -A28080EC0007AAEB03FE90381FFF874913E790B6FC5A5A481303380FFC00D81FF0133F49 -131F485A150F4848130790C7FCA25AA25AA87E6C140FA27F003F141F6D133F6C7E6D137F -390FF801FF2607FE07EBFFC06CB712E06C16F06C14F76D01C713E0011F010313C0D907FC -C8FC2C397DB730>I<49B4FC010713E0011F13F8017F7F90B57E488048018113803A07FC -007FC04848133FD81FE0EB1FE0150F484814F0491307127F90C7FCED03F85A5AB7FCA516 -F048C9FC7E7EA27F003FEC01F06DEB03F86C7E6C7E6D1307D807FEEB1FF03A03FFC07FE0 -6C90B5FC6C15C0013F14806DEBFE00010713F8010013C0252A7CA830>IIII< -14E0EB03F8A2497EA36D5AA2EB00E091C8FCA9381FFFF8487F5AA27E7EEA0001B3A9003F -B612C04815E0B7FCA27E6C15C023397AB830>I107 -D<387FFFF8B57EA47EEA0001B3B3A8007FB612F0B712F8A46C15F025387BB730>I<02FC -137E3B7FC3FF01FF80D8FFEF01877F90B500CF7F15DF92B57E6C010F13872607FE07EB03 -F801FC13FE9039F803FC01A201F013F8A301E013F0B3A23C7FFE0FFF07FF80B548018F13 -C0A46C486C01071380322881A730>II<49B4FC010F -13E0013F13F8497F90B57E0003ECFF8014013A07FC007FC04848EB3FE0D81FE0EB0FF0A2 -4848EB07F8491303007F15FC90C71201A300FEEC00FEA86C14016C15FCA26D1303003F15 -F86D13076D130F6C6CEB1FF06C6CEB3FE06D137F3A07FF01FFC06C90B512806C15006C6C -13FC6D5B010F13E0010190C7FC272A7CA830>II114 D<90381FFC1E48B5129F000714FF5A5A5A387FF0 -07EB800100FEC7FC4880A46C143E007F91C7FC13E06CB4FC6C13FC6CEBFF806C14E00001 -14F86C6C7F01037F9038000FFF02001380007C147F00FEEC1FC0A2150F7EA27F151F6DEB -3F806D137F9039FC03FF0090B6FC5D5D00FC14F0D8F83F13C026780FFEC7FC222A79A830 ->III<3B3FFFC07FFF80486DB512C0B515E0A26C16C06C496C1380 -3B01F80003F000A26D130700005DA26D130F017E5CA2017F131F6D5CA2EC803F011F91C7 -FCA26E5A010F137EA2ECE0FE01075BA214F101035BA3903801FBF0A314FF6D5BA36E5A6E -5A2B277EA630>I<3B3FFFC01FFFE0486D4813F0B515F8A26C16F06C496C13E0D807E0C7 -EA3F00A26D5C0003157EA56D14FE00015DEC0F80EC1FC0EC3FE0A33A00FC7FF1F8A2147D -A2ECFDF9017C5C14F8A3017E13FBA290393FF07FE0A3ECE03FA2011F5C90390F800F802D -277FA630>I<3A3FFF81FFFC4801C37FB580A26C5D6C01815BC648C66CC7FC137FEC80FE -90383F81FC90381FC3F8EB0FE3ECE7F06DB45A6D5B7F6D5B92C8FC147E147F5C497F8190 -3803F7E0EB07E790380FE3F0ECC1F890381F81FC90383F80FE90387F007E017E137F01FE -6D7E48486D7E267FFF80B5FCB500C1148014E3A214C16C0180140029277DA630>I<3B3F -FFC07FFF80486DB512C0B515E0A26C16C06C496C13803B01FC0003F000A2000014076D5C -137E150F017F5C7F151FD91F805BA214C0010F49C7FCA214E00107137EA2EB03F0157C15 -FCEB01F85DA2EB00F9ECFDF0147D147FA26E5AA36E5AA35DA2143F92C8FCA25C147EA200 -0F13FE486C5AEA3FC1EBC3F81387EB8FF0EBFFE06C5B5C6C90C9FC6C5AEA01F02B3C7EA6 -30>I123 D125 D E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: Fp cmr8 8 11 -/Fp 11 58 df<13031307130E131C1338137013F0EA01E013C01203EA0780A2EA0F00A2 -121EA35AA45AA512F8A25AAB7EA21278A57EA47EA37EA2EA0780A2EA03C0120113E0EA00 -F013701338131C130E1307130310437AB11B>40 D<12C07E12707E7E7E120FEA07801203 -13C0EA01E0A2EA00F0A21378A3133CA4131EA5131FA2130FAB131FA2131EA5133CA41378 -A313F0A2EA01E0A2EA03C013801207EA0F00120E5A5A5A5A5A10437CB11B>I<130C133C -137CEA03FC12FFEAFC7C1200B3B113FE387FFFFEA2172C7AAB23>49 -DII<140EA2141E143EA2147E14FEA2EB01BE13 -03143E1306130E130C131813381330136013E013C0EA0180120313001206120E120C5A12 -3812305A12E0B612FCA2C7EA3E00A9147F90381FFFFCA21E2D7EAC23>I<000CEB018038 -0FC01F90B512005C5C14F014C0D80C7EC7FC90C8FCA8EB1FC0EB7FF8380DE07C380F801F -01001380000E130F000CEB07C0C713E0A2140315F0A4127812FCA448EB07E012E0006014 -C00070130F6C14806CEB1F006C133E380780F83801FFE038007F801C2D7DAB23>II<1230123C003FB512F8A215F05A15E0397000 -01C000601480140348EB0700140E140CC7121C5C143014705C495AA2495AA249C7FCA25B -130E131EA2133EA3133C137CA413FCA913781D2E7CAC23>III E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: Fq cmr10 10.95 87 -/Fq 87 125 df2 D<010FB612E0A3D900030180C7FCDA00FEC8FCA8913807FFC0027F13FC90 -3A03FCFE7F80D90FE0EB0FE0D93F80EB03F8D9FE00EB00FE4848157F4848ED3F804848ED -1FC0000F17E04848ED0FF0003F17F8A24848ED07FCA200FF17FEA8007F17FCA26C6CED0F -F8A2001F17F06C6CED1FE0000717C06C6CED3F806C6CED7F006C6C15FED93F80EB03F8D9 -0FE0EB0FE0D903FCEB7F809027007FFFFCC7FC020713C0DA00FEC8FCA8913803FF80010F -B612E0A3373E7BBD42>8 D<49B612FCA390C7D87FF0C8FCED1FC0A8B4EF0FF001C0163F -D81FE0EE7F806C6CEEFF006C6C4B5A00035FA26D150300015FAB12006D4B5AA4017F4B5A -A26D5E0280141FD91FC05D010F153F02E04AC7FCD907F0147ED903F85CD900FCEBC3F802 -7FEBC7E091391FDFFF80912607FFFEC8FC9138007FF0ED1FC0A8ED7FF049B612FCA33C3E -7BBD47>I<913801FFC0021F13FC9139FF007F80D903F8EB0FE0D90FF0EB07F8D91FC0EB -01FCD97F806DB4FC49C86C7E48486F7E00038348486F7E000F8349150F001F8349150700 -3F83A348486F7EAA6C6C4B5AA3001F5FA26C6C4B5AA200075F6D151F00035FA26C6C4B5A -00005FA2017F4BC7FC6D157EA26D6C5C010F5DA26D6C495A00E0EF0380010315E0D87001 -9238C007006E130301001580A36C0160EC000E003C017049131E263FFFF0ECFFFEA36C5F -A339407CBF42>I<4AB4EB0FE0021F9038E03FFC913A7F00F8FC1ED901FC90383FF03FD9 -07F090397FE07F80494801FF13FF4948485BD93F805C137F0200ED7F00EF003E01FE6D91 -C7FC82ADB97EA3C648C76CC8FCB3AE486C4A7E007FD9FC3FEBFF80A339407FBF35>II14 D<001E130F397F803FC000FF13 -7F01C013E0A201E013F0A3007F133F391E600F3000001300A401E01370491360A3000114 -E04913C00003130101001380481303000EEB070048130E0018130C0038131C003013181C -1C7DBE2D>34 D<013F1603D9FFC04B7E2601E0E0150F2607C070151F48486C4BC7FC023E -157E48486C15FE48D90FC0EB03FC003ED90EF0EB0FF8DA0F3F13FD007E903A070FFFF1F0 -007C0200EB03E0160000FC6D6C495A170F604DC8FC5F173E5F17FC5F4C5A1603007CD907 -005B4C5A007E150F003E495C020E49C9FC003F5D6C49133E260F803C5B023813FC6C6C48 -5B3A01E0E001F03800FFC090273F0003E0133F90C70007ECFFC09339C001E0E0923A0F80 -07C070031F49487E0400143C033E90381F001C037E497F037C133E4B150F0201027E7F4B -137C4A5A020702FCEB03805D4A5A141F92C7FC143E147E147C5CA2495A0103037CEB0700 -5C4948147E010F033E5B4A160E49C8123F496F5B013E92380F803C49173801FC6F6C5A49 -923801E0E0496FB45A0160043FC7FC41497BC34C>37 D<121EEA7F8012FF13C0A213E0A3 -127FEA1E601200A413E013C0A312011380120313005A120E5A1218123812300B1C79BE19 ->39 D<1430147014E0EB01C0EB03801307EB0F00131E133E133C5B13F85B12015B1203A2 -485AA2120F5BA2121F90C7FCA25AA3123E127EA6127C12FCB2127C127EA6123E123FA37E -A27F120FA27F1207A26C7EA212017F12007F13787F133E131E7FEB07801303EB01C0EB00 -E014701430145A77C323>I<12C07E12707E7E121E7E6C7E7F12036C7E7F12007F137813 -7CA27FA2133F7FA21480130FA214C0A3130714E0A6130314F0B214E01307A614C0130FA3 -1480A2131F1400A25B133EA25BA2137813F85B12015B485A12075B48C7FC121E121C5A5A -5A5A145A7BC323>II<1506150FB3A9007FB912E0BA12F0A26C18E0C8000FC9FCB3A91506 -3C3C7BB447>I<121EEA7F8012FF13C0A213E0A3127FEA1E601200A413E013C0A3120113 -80120313005A120E5A1218123812300B1C798919>II<121EEA7F -80A2EAFFC0A4EA7F80A2EA1E000A0A798919>IIIIII<150E -151E153EA2157EA215FE1401A21403EC077E1406140E141CA214381470A214E0EB01C0A2 -EB0380EB0700A2130E5BA25B5BA25B5B1201485A90C7FC5A120E120C121C5AA25A5AB8FC -A3C8EAFE00AC4A7E49B6FCA3283E7EBD2D>I<00061403D80780131F01F813FE90B5FC5D -5D5D15C092C7FC14FCEB3FE090C9FCACEB01FE90380FFF8090383E03E090387001F8496C -7E49137E497F90C713800006141FC813C0A216E0150FA316F0A3120C127F7F12FFA416E0 -90C7121F12FC007015C012780038EC3F80123C6CEC7F00001F14FE6C6C485A6C6C485A39 -03F80FE0C6B55A013F90C7FCEB07F8243F7CBC2D>II<1238123C123F90B612FCA316F85A16F016E00078C712010070EC03C0 -ED078016005D48141E151C153C5DC8127015F04A5A5D14034A5A92C7FC5C141EA25CA214 -7C147814F8A213015C1303A31307A3130F5CA2131FA6133FAA6D5A0107C8FC26407BBD2D ->III<121EEA7F80A2EAFFC0A4EA7F80A2EA1E00C7FCB312 -1EEA7F80A2EAFFC0A4EA7F80A2EA1E000A2779A619>I<121EEA7F80A2EAFFC0A4EA7F80 -A2EA1E00C7FCB3121E127FEAFF80A213C0A4127F121E1200A412011380A3120313005A12 -06120E120C121C5A1230A20A3979A619>I<007FB912E0BA12F0A26C18E0CDFCAE007FB9 -12E0BA12F0A26C18E03C167BA147>61 D<15074B7EA34B7EA34B7EA34B7EA34B7E15E7A2 -913801C7FC15C3A291380381FEA34AC67EA3020E6D7EA34A6D7EA34A6D7EA34A6D7EA34A -6D7EA349486D7E91B6FCA249819138800001A249C87EA24982010E157FA2011E82011C15 -3FA2013C820138151FA2017882170F13FC00034C7ED80FFF4B7EB500F0010FB512F8A33D -417DC044>65 DIIIIIIII<011FB512FCA3D9000713006E5A1401B3 -B3A6123FEA7F80EAFFC0A44A5A1380D87F005B007C130700385C003C495A6C495A6C495A -2603E07EC7FC3800FFF8EB3FC026407CBD2F>IIIII -II82 DI<003FB91280A3903AF0007FE001018090393FC0003F48C7ED1F -C0007E1707127C00781703A300701701A548EF00E0A5C81600B3B14B7E4B7E0107B612FE -A33B3D7DBC42>II< -B691380FFFFEA3000301E0020113E06C01809138007F806CEF3F00017F163E181C6E153C -013F1638A26E1578011F1670A26D6C5DA26E140101075EA26E140301035EA26D6C4AC7FC -A2806D150EA26F131E027F141CA26F133C023F1438A26E6C5BA26F13F0020F5CA2EDF801 -02075CA26E6C485AA2EDFE07020191C8FCA26F5A6E130EA2ED7F9CA216DCED3FF8A36F5A -A36F5AA26F5AA36F5A3F407EBD44>II<007FB5D8C003B512E0A3C649C7EBFC00D93F -F8EC3FE06D48EC1F806D6C92C7FC171E6D6C141C6D6C143C5F6D6C14706D6D13F04C5ADA -7FC05B023F13036F485ADA1FF090C8FC020F5BEDF81E913807FC1C163C6E6C5A913801FF -7016F06E5B6F5AA26F7E6F7EA28282153FED3BFEED71FF15F103E07F913801C07F020380 -4B6C7EEC07004A6D7E020E6D7E5C023C6D7E02386D7E14784A6D7E4A6D7F130149486E7E -4A6E7E130749C86C7E496F7E497ED9FFC04A7E00076DEC7FFFB500FC0103B512FEA33F3E -7EBD44>II<003FB712F8A391C7EA -1FF013F801E0EC3FE00180EC7FC090C8FC003EEDFF80A2003C4A1300007C4A5A12784B5A -4B5AA200704A5AA24B5A4B5AA2C8485A4A90C7FCA24A5A4A5AA24A5AA24A5A4A5AA24A5A -4A5AA24990C8FCA2495A4948141CA2495A495AA2495A495A173C495AA24890C8FC485A17 -78485A484815F8A24848140116034848140F4848143FED01FFB8FCA32E3E7BBD38>II<486C13C000031301010013804813 -03000EEB070048130E0018130C0038131C003013180070133800601330A300E013704813 -60A400CFEB678039FFC07FE001E013F0A3007F133FA2003F131F01C013E0390F0007801C -1C73BE2D>II97 DI<49B4FC010F13E090 -383F00F8017C131E4848131F4848137F0007ECFF80485A5B121FA24848EB7F00151C007F -91C7FCA290C9FC5AAB6C7EA3003FEC01C07F001F140316806C6C13076C6C14000003140E -6C6C131E6C6C137890383F01F090380FFFC0D901FEC7FC222A7DA828>IIII<167C903903F801FF903A1FFF078F8090397E0FDE1F9038F803F83803F001A2 -3B07E000FC0600000F6EC7FC49137E001F147FA8000F147E6D13FE00075C6C6C485AA239 -01F803E03903FE0FC026071FFFC8FCEB03F80006CAFC120EA3120FA27F7F6CB512E015FE -6C6E7E6C15E06C810003813A0FC0001FFC48C7EA01FE003E140048157E825A82A46C5D00 -7C153E007E157E6C5D6C6C495A6C6C495AD803F0EB0FC0D800FE017FC7FC90383FFFFC01 -0313C0293D7EA82D>III<1478EB01FEA2EB03FFA4EB01FEA2EB -00781400AC147FEB7FFFA313017F147FB3B3A5123E127F38FF807E14FEA214FCEB81F8EA -7F01387C03F0381E07C0380FFF803801FC00185185BD1C>III<2701F801FE14FF00FF902707FFC00313E0913B1E07E0 -0F03F0913B7803F03C01F80007903BE001F87000FC2603F9C06D487F000101805C01FBD9 -00FF147F91C75B13FF4992C7FCA2495CB3A6486C496CECFF80B5D8F87FD9FC3F13FEA347 -287DA74C>I<3901F801FE00FF903807FFC091381E07E091387803F000079038E001F826 -03F9C07F0001138001FB6D7E91C7FC13FF5BA25BB3A6486C497EB5D8F87F13FCA32E287D -A733>I<14FF010713E090381F81F890387E007E01F8131F4848EB0F804848EB07C04848 -EB03E0000F15F04848EB01F8A2003F15FCA248C812FEA44815FFA96C15FEA36C6CEB01FC -A3001F15F86C6CEB03F0A26C6CEB07E06C6CEB0FC06C6CEB1F80D8007EEB7E0090383F81 -FC90380FFFF0010090C7FC282A7EA82D>I<3901FC03FC00FF90381FFF8091387C0FE090 -39FDE003F03A07FFC001FC6C496C7E6C90C7127F49EC3F805BEE1FC017E0A2EE0FF0A3EE -07F8AAEE0FF0A4EE1FE0A2EE3FC06D1580EE7F007F6E13FE9138C001F89039FDE007F090 -39FC780FC0DA3FFFC7FCEC07F891C9FCAD487EB512F8A32D3A7EA733>I<02FF131C0107 -EBC03C90381F80F090397F00387C01FC131CD803F8130E4848EB0FFC150748481303121F -485A1501485AA448C7FCAA6C7EA36C7EA2001F14036C7E15076C6C130F6C7E6C6C133DD8 -007E137990383F81F190380FFFC1903801FE0190C7FCAD4B7E92B512F8A32D3A7DA730> -I<3901F807E000FFEB1FF8EC787CECE1FE3807F9C100031381EA01FB1401EC00FC01FF13 -30491300A35BB3A5487EB512FEA31F287EA724>I<90383FC0603901FFF8E03807C03F38 -1F000F003E1307003C1303127C0078130112F81400A27E7E7E6D1300EA7FF8EBFFC06C13 -F86C13FE6C7F6C1480000114C0D8003F13E0010313F0EB001FEC0FF800E01303A214017E -1400A27E15F07E14016C14E06CEB03C0903880078039F3E01F0038E0FFFC38C01FE01D2A -7DA824>I<131CA6133CA4137CA213FCA2120112031207001FB512C0B6FCA2D801FCC7FC -B3A215E0A912009038FE01C0A2EB7F03013F138090381F8700EB07FEEB01F81B397EB723 ->I -IIIII<001FB61280A2EBE00001801400 -49485A001E495A121C4A5A003C495A141F00385C4A5A147F5D4AC7FCC6485AA2495A495A -130F5C495A90393FC00380A2EB7F80EBFF005A5B484813071207491400485A48485BA248 -485B4848137F00FF495A90B6FCA221277EA628>III E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: Fr cmbx10 10.95 51 -/Fr 51 122 df40 D<127012F8127C7EEA3F806C7E6C7E12076C7E7F6C7E6C -7EA2137F80133F806D7EA280130FA280130780A36D7EA4807FA51580B01500A55B5CA449 -5AA35C130F5CA2131F5CA2495A5C137F91C7FC13FEA2485A485A5B485A120F485A485A00 -3EC8FC5A5A1270195A7AC329>I45 DI<161C163E167EA216FE16FC -150116F8A2150316F0A2150716E0150F16C0A2151F1680153F1600A25D157E15FE5DA214 -015DA214035D14075DA2140F5D141F5DA2143F92C7FC5C147EA214FE5CA213015C13035C -A213075C130F5CA2131F5C133F91C8FCA25B137EA213FE5B12015BA212035B12075BA212 -0F5B121F5BA2123F90C9FCA25A127E12FE5AA25A1278275B7AC334>I<140F143F5C495A -130F48B5FCB6FCA313F7EAFE071200B3B3A8007FB612F0A5243C78BB34>49 -D<903803FF80013F13F890B512FE00036E7E4881260FF80F7F261FC0037F4848C67F486C -6D7E6D6D7E487E6D6D7EA26F1380A46C5A6C5A6C5A0007C7FCC8FC4B1300A25E153F5E4B -5AA24B5A5E4A5B4A5B4A48C7FC5D4A5AEC1FE04A5A4A5A9139FF000F80EB01FC495A4948 -EB1F00495AEB1F8049C7FC017E5C5B48B7FC485D5A5A5A5A5AB7FC5EA4293C7BBB34>I< -903801FFE0010F13FE013F6D7E90B612E04801817F3A03FC007FF8D807F06D7E82D80FFC -131F6D80121F7FA56C5A5E6C48133FD801F05CC8FC4B5A5E4B5A4A5B020F5B902607FFFE -C7FC15F815FEEDFFC0D9000113F06E6C7E6F7E6F7E6F7E1780A26F13C0A217E0EA0FC048 -7E487E487E487EA317C0A25D491580127F49491300D83FC0495A6C6C495A3A0FFE01FFF8 -6CB65A6C5DC61580013F49C7FC010313E02B3D7CBB34>II<00071538D80FE0EB01F801FE133F90B6FC5E5E5E5E93 -C7FC5D15F85D15C04AC8FC0180C9FCA9ECFFC0018713FC019F13FF90B67E020113E09039 -F8007FF0496D7E01C06D7E5B6CC77FC8120F82A31780A21207EA1FC0487E487E12FF7FA2 -1700A25B4B5A6C5A01805C6CC7123F6D495AD81FE0495A260FFC075B6CB65A6C92C7FCC6 -14FC013F13F0010790C8FC293D7BBB34>II<121F7F13F890B712F0A45A17E017C0178017005E5E5A007EC7EA01F84B5A -007C4A5A4B5A4B5A93C7FC485C157E5DC7485A4A5AA24A5A140F5D141F143F5D147FA214 -FF92C8FC5BA25BA3495AA3130FA5131FAA6D5A6D5A6D5A2C3F7ABD34>I<903801FFE001 -0F13FC013F13FF90B612C04801E07F489038003FF048486D7E000F6E7E485A6F7E123F48 -488081178012FFA217C0A517E0A4007F5CA4003F5C6C7E5D6C7E00075C3903FF80FB6C13 -FF6C6C13F36D13C3010F018313C090380008031400A24B1380EA03F0487E486C1500487E -4B5AA25E151F4B5A495C6C48EBFFE049485B2607FC0F5B6CB6C7FC6C14FC6C14F06D13C0 -D90FFEC8FC2B3D7CBB34>57 DI<16FCA24B7EA24B7EA34B7FA24B7FA34B7FA24B7FA34B7F157C03FC7FED -F87FA2020180EDF03F0203804B7E02078115C082020F814B7E021F811500824A81023E7F -027E81027C7FA202FC814A147F49B77EA34982A2D907E0C7001F7F4A80010F835C83011F -8391C87E4983133E83017E83017C81B500FC91B612FCA5463F7CBE4F>65 -DI<9226 -07FFC0130E92B500FC131E020702FF133E023FEDC07E91B7EAE1FE01039138803FFB4990 -39F80003FF4901C01300013F90C8127F4948151FD9FFF8150F48491507485B4A15034817 -01485B18004890CAFC197E5A5B193E127FA349170012FFAC127F7F193EA2123FA27F6C18 -7E197C6C7F19FC6C6D16F86C6D150119F06C6D15036C6DED07E0D97FFEED0FC06D6CED3F -80010F01C0ECFF006D01F8EB03FE6D9039FF801FFC010091B55A023F15E0020715800200 -02FCC7FC030713C03F407ABE4C>IIII<922607FFC0 -130E92B500FC131E020702FF133E023FEDC07E91B7EAE1FE01039138803FFB499039F800 -03FF4901C01300013F90C8127F4948151FD9FFF8150F48491507485B4A1503481701485B -18004890CAFC197E5A5B193E127FA34994C7FC12FFAB0407B612FC127F7FA3003F92C738 -3FFE00A27F7EA26C7FA26C7F6C7FA26C7F6C7FD97FFE157F6D6C7E010F01E014FF6D01F8 -13036D9038FF801F010091B512F3023F15C00207ED803E02009138FE000E030701E090C7 -FC46407ABE52>I73 -D77 D79 DI82 D<903A03FFC001C0011FEBF803017FEBFE0748B612 -8F4815DF48010013FFD80FF8130F48481303497F4848EB007F127F49143F161F12FF160F -A27F1607A27F7F01FC91C7FCEBFF806C13F8ECFFC06C14FCEDFF806C15E016F86C816C81 -6C816C16806C6C15C07F010715E0EB007F020714F0EC003F1503030013F8167F163F1278 -00F8151FA2160FA27EA217F07E161F6C16E06D143F01E015C001F8EC7F8001FEEB01FF90 -26FFE00713004890B55A486C14F8D8F81F5CD8F00314C027E0003FFEC7FC2D407ABE3A> -I<003FB912FCA5903BFE003FFE003FD87FF0EE0FFE01C0160349160190C71500197E127E -A2007C183EA400FC183F48181FA5C81600B3AF010FB712F8A5403D7CBC49>II<903807FFC0013F13F848B6FC48812607 -FE037F260FF8007F6DEB3FF0486C806F7EA36F7EA26C5A6C5AEA01E0C8FC153F91B5FC13 -0F137F3901FFFE0F4813E0000F1380381FFE00485A5B485A12FF5BA4151F7F007F143F6D -90387BFF806C6C01FB13FE391FFF07F36CEBFFE100031480C6EC003FD91FF890C7FC2F2B -7DA933>97 D99 DIII<903A03FF8007F001 -3F9038F83FF8499038FCFFFC48B712FE48018313F93A07FC007FC34848EB3FE1001FEDF1 -FC4990381FF0F81700003F81A7001F5DA26D133F000F5D6C6C495A3A03FF83FF8091B5C7 -FC4814FC01BF5BD80F03138090CAFCA2487EA27F13F06CB6FC16F016FC6C15FF17806C16 -C06C16E01207001F16F0393FE000034848EB003F49EC1FF800FF150F90C81207A56C6CEC -0FF06D141F003F16E001F0147FD81FFC903801FFC02707FF800F13006C90B55AC615F801 -3F14E0010101FCC7FC2F3D7DA834>I<13FFB5FCA512077EAFED1FF8EDFFFE02036D7E4A -80DA0FE07F91381F007F023C805C4A6D7E5CA25CA35CB3A4B5D8FE0FB512E0A5333F7CBE -3A>II<13FFB5FCA512077EB3B3AFB512FCA5163F7CBE1D>108 -D<01FFD91FF8ECFFC0B590B5010713F80203DAC01F13FE4A6E487FDA0FE09026F07F077F -91261F003FEBF8010007013EDAF9F0806C0178ECFBC04A6DB4486C7FA24A92C7FC4A5CA3 -4A5CB3A4B5D8FE07B5D8F03FEBFF80A551297CA858>I<01FFEB1FF8B5EBFFFE02036D7E -4A80DA0FE07F91381F007F0007013C806C5B4A6D7E5CA25CA35CB3A4B5D8FE0FB512E0A5 -33297CA83A>II<01FFEBFFE0B500 -0713FC021FEBFF80027F80DAFF8113F09139FC007FF8000701F06D7E6C496D7E4A130F4A -6D7E1880A27013C0A38218E0AA4C13C0A318805E18005E6E5C6E495A6E495A02FCEBFFF0 -DAFF035B92B55A029F91C7FC028713FC028113C00280C9FCACB512FEA5333B7DA83A>I< -DA7FE01378902607FFFC13F8011FEBFF01017F14819039FFF81FC3489038E007E7489038 -8003F74890380001FF48487F001F157F5B003F153F5B127F161FA2485AAA127F7FA36C6C -143F167F121F6C6C14FF6D5B6C6D5A6CEBC00F6CEBF03F6C6CB512BF6DEBFE3F010713F8 -010013C091C7FCAC030FB512E0A5333B7DA837>I<3901FE01FE00FF903807FF804A13E0 -4A13F0EC3F1F91387C3FF8000713F8000313F0EBFFE0A29138C01FF0ED0FE091388007C0 -92C7FCA391C8FCB3A2B6FCA525297DA82B>I<90383FFC1E48B512BE000714FE5A381FF0 -0F383F800148C7FC007E147EA200FE143EA27E7F6D90C7FC13F8EBFFE06C13FF15C06C14 -F06C806C806C806C80C61580131F1300020713C014000078147F00F8143F151F7EA27E16 -806C143F6D140001E013FF9038F803FE90B55A15F0D8F87F13C026E00FFEC7FC222B7DA9 -29>IIIIII< -B500FC90383FFFC0A5000101C0903803E0006E1307A26C5E6E130F017F5D6E131F013F92 -C7FC6E5B011F143E6E137E010F147C6E13FCA26D5C15816D5C15C36D5C15E76D5C15FF6E -5BA36E90C8FCA26E5AA26E5AA26E5AA26E5AA35D14075D000E130FD83F805B387FC01FD8 -FFE090C9FC5C143E147E5CEBC1F8387FC3F0387E0FE06CB45A6C5B6C48CAFCEA03F8323B -7EA737>I E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: Fs cmbx12 14.4 41 -/Fs 41 122 df45 D<157815FC14031407141F14FF130F0007B5 -FCB6FCA2147F13F0EAF800C7FCB3B3B3A6007FB712FEA52F4E76CD43>49 -DI<91380FFFC091B512FC0107ECFF80011F15E09026 -3FF8077F9026FF800113FC4848C76C7ED803F86E7E491680D807FC8048B416C080486D15 -E0A4805CA36C17C06C5B6C90C75AD801FC1680C9FC4C13005FA24C5A4B5B4B5B4B13C04B -5BDBFFFEC7FC91B512F816E016FCEEFF80DA000713E0030113F89238007FFE707E701380 -7013C018E07013F0A218F8A27013FCA218FEA2EA03E0EA0FF8487E487E487EB57EA318FC -A25E18F891C7FC6C17F0495C6C4816E001F04A13C06C484A1380D80FF84A13006CB44A5A -6CD9F0075BC690B612F06D5D011F1580010302FCC7FCD9001F1380374F7ACD43>I<177C -17FEA2160116031607160FA2161F163F167FA216FF5D5DA25D5DED1FBFED3F3F153E157C -15FCEC01F815F0EC03E01407EC0FC01580EC1F005C147E147C5C1301495A495A5C495A13 -1F49C7FC133E5B13FC485A5B485A1207485A485A90C8FC123E127E5ABA12C0A5C96C48C7 -FCAF020FB712C0A53A4F7CCE43>III<121F7F7FEB -FF8091B81280A45A1900606060A2606060485F0180C86CC7FC007EC95A4C5A007C4B5A5F -4C5A160F4C5A484B5A4C5A94C8FC16FEC812014B5A5E4B5A150F4B5AA24B5AA24B5A15FF -A24A90C9FCA25C5D1407A2140FA25D141FA2143FA4147F5DA314FFA55BAC6D5BA2EC3FC0 -6E5A395279D043>I<171F4D7E4D7EA24D7EA34C7FA24C7FA34C7FA34C7FA24C7FA34C80 -83047F80167E8304FE804C7E03018116F8830303814C7E03078116E083030F814C7E031F -81168083033F8293C77E4B82157E8403FE824B800201835D840203834B800207835D844A -B87EA24A83A3DA3F80C88092C97E4A84A2027E8202FE844A82010185A24A820103854A82 -010785A24A82010F855C011F717FEBFFFCB600F8020FB712E0A55B547BD366>65 -DI<932601FFFCEC01C0047F -D9FFC013030307B600F81307033F03FE131F92B8EA803F0203DAE003EBC07F020F01FCC7 -383FF0FF023F01E0EC0FF94A01800203B5FC494848C9FC4901F882494982494982494982 -4949824990CA7E494883A2484983485B1B7F485B481A3FA24849181FA3485B1B0FA25AA2 -98C7FC5CA2B5FCAE7EA280A2F307C07EA36C7FA21B0F6C6D1980A26C1A1F6C7F1C006C6D -606C6D187EA26D6C606D6D4C5A6D6D16036D6D4C5A6D6D4C5A6D01FC4C5A6D6DEE7F806D -6C6C6C4BC7FC6E01E0EC07FE020F01FEEC1FF80203903AFFE001FFF0020091B612C0033F -93C8FC030715FCDB007F14E0040101FCC9FC525479D261>III<932601FFFCEC01C0047FD9FFC013030307B600F81307 -033F03FE131F92B8EA803F0203DAE003EBC07F020F01FCC7383FF0FF023F01E0EC0FF94A -01800203B5FC494848C9FC4901F8824949824949824949824949824990CA7E494883A248 -4983485B1B7F485B481A3FA24849181FA3485B1B0FA25AA298C8FC5CA2B5FCAE6C057FB7 -12E0A280A36C94C7003FEBC000A36C7FA36C7FA27E6C7FA26C7F6C7FA26D7E6D7F6D7F6D -6D5E6D7F6D01FC93B5FC6D13FF6D6C6D5C6E01F0EC07FB020F01FEEC1FF10203903AFFF0 -01FFE0020091B6EAC07F033FEE001F030703FC1307DB007F02E01301040149CAFC5B5479 -D26A>71 D73 -D77 D80 D82 D<91260FFF80130791B500F85B010702FF5B011FED -C03F49EDF07F9026FFFC006D5A4801E0EB0FFD4801800101B5FC4848C87E48488149150F -001F824981123F4981007F82A28412FF84A27FA26D82A27F7F6D93C7FC14C06C13F014FF -15F86CECFF8016FC6CEDFFC017F06C16FC6C16FF6C17C06C836C836D826D82010F821303 -010082021F16801400030F15C0ED007F040714E01600173F050F13F08383A200788200F8 -82A3187FA27EA219E07EA26CEFFFC0A27F6D4B13806D17006D5D01FC4B5A01FF4B5A02C0 -4A5A02F8EC7FF0903B1FFFC003FFE0486C90B65AD8FC0393C7FC48C66C14FC48010F14F0 -48D9007F90C8FC3C5479D24B>I<003FBC1280A59126C0003F9038C0007F49C71607D87F -F8060113C001E08449197F49193F90C8171FA2007E1A0FA3007C1A07A500FC1BE0481A03 -A6C994C7FCB3B3AC91B912F0A553517BD05E>II97 D<913801FFF8021FEBFF8091 -B612F0010315FC010F9038C00FFE903A1FFE0001FFD97FFC491380D9FFF05B4817C04849 -5B5C5A485BA2486F138091C7FC486F1300705A4892C8FC5BA312FFAD127F7FA27EA2EF03 -E06C7F17076C6D15C07E6E140F6CEE1F806C6DEC3F006C6D147ED97FFE5C6D6CEB03F801 -0F9038E01FF0010390B55A01001580023F49C7FC020113E033387CB63C>99 -D<4DB47E0407B5FCA5EE001F1707B3A4913801FFE0021F13FC91B6FC010315C7010F9038 -E03FE74990380007F7D97FFC0101B5FC49487F4849143F484980485B83485B5A91C8FC5A -A3485AA412FFAC127FA36C7EA37EA26C7F5F6C6D5C7E6C6D5C6C6D49B5FC6D6C4914E0D9 -3FFED90FEFEBFF80903A0FFFC07FCF6D90B5128F0101ECFE0FD9003F13F8020301C049C7 -FC41547CD24B>I<913803FFC0023F13FC49B6FC010715C04901817F903A3FFC007FF849 -486D7E49486D7E4849130F48496D7E48178048497F18C0488191C7FC4817E0A248815B18 -F0A212FFA490B8FCA318E049CAFCA6127FA27F7EA218E06CEE01F06E14037E6C6DEC07E0 -A26C6DEC0FC06C6D141F6C6DEC3F806D6CECFF00D91FFEEB03FE903A0FFFC03FF8010390 -B55A010015C0021F49C7FC020113F034387CB63D>II< -DA3FFF14FF0103B5D8F00713C0010FDAFC1F13E0013FECFF7F90267FFC0F9038FF9FF090 -26FFE001EBF83F48496C13E0484990387FF01F4890C7D83FF813E0489338FC0FC0F00780 -48486E6CC7FCA2003F82A9001F5EA26C6C4A5AA26C5E6C6D495A6C6D495A6C6D485BDAFC -0F5B4890B6C8FCD803EF14FC01C314F02607C03F90C9FC91CBFCA2120FA37FA213F813FE -90B7FC6C16F817FF18C06C836C836C836D828448B9FC12074848C700031480D81FF8EC00 -3F4848150748486F13C083485A83A56D5D007F18806D5D003F18006C6C4B5AD80FFEED1F -FC6C6C6CEC7FF86C01E049485A6C01FE011F5B6C6CB71280010F03FCC7FC010115E0D900 -0F01FCC8FC3C4F7CB543>II<137F497E000313E0487FA2487FA7 -6C5BA26C5BC613806DC7FC90C8FCADEB3FF0B5FCA512017EB3B3A6B612E0A51B547BD325 ->I108 DII<913801FFE0021F13FE91B612C0010315F0010F9038 -807FFC903A1FFC000FFED97FF86D6C7E49486D7F48496D7F48496D7F4A147F48834890C8 -6C7EA24883A248486F7EA3007F1880A400FF18C0AC007F1880A3003F18006D5DA26C5FA2 -6C5F6E147F6C5F6C6D4A5A6C6D495B6C6D495B6D6C495BD93FFE011F90C7FC903A0FFF80 -7FFC6D90B55A010015C0023F91C8FC020113E03A387CB643>I<903A3FF001FFE0B5010F -13FE033FEBFFC092B612F002F301017F913AF7F8007FFE0003D9FFE0EB1FFFC602806D7F -92C76C7F4A824A6E7F4A6E7FA2717FA285187F85A4721380AC1A0060A36118FFA2615F61 -6E4A5BA26E4A5B6E4A5B6F495B6F4990C7FC03F0EBFFFC9126FBFE075B02F8B612E06F14 -80031F01FCC8FC030313C092CBFCB1B612F8A5414D7BB54B>I<912601FFE0EB0780021F -01F8130F91B500FE131F0103ECFF80010F9039F03FC03F499039800FE07F903A7FFE0003 -F04948903801F8FF4849EB00FD4849147F4A805A4849805A4A805AA291C87E5AA35B12FF -AC6C7EA37EA2806C5EA26C6D5CA26C6D5C6C6D5C6C93B5FC6C6D5B6D6C5B6DB4EB0FEF01 -0F9038C07FCF6D90B5120F010114FED9003F13F80203138091C8FCB1040FB61280A5414D -7CB547>I<90397FE003FEB590380FFF80033F13E04B13F09238FE1FF89139E1F83FFC00 -03D9E3E013FEC6ECC07FECE78014EF150014EE02FEEB3FFC5CEE1FF8EE0FF04A90C7FCA5 -5CB3AAB612FCA52F367CB537>I<903903FFF00F013FEBFE1F90B7FC120348EB003FD80F -F81307D81FE0130148487F4980127F90C87EA24881A27FA27F01F091C7FC13FCEBFFC06C -13FF15F86C14FF16C06C15F06C816C816C81C681013F1580010F15C01300020714E0EC00 -3F030713F015010078EC007F00F8153F161F7E160FA27E17E07E6D141F17C07F6DEC3F80 -01F8EC7F0001FEEB01FE9039FFC00FFC6DB55AD8FC1F14E0D8F807148048C601F8C7FC2C -387CB635>I<143EA6147EA414FEA21301A313031307A2130F131F133F13FF5A000F90B6 -FCB8FCA426003FFEC8FCB3A9EE07C0AB011FEC0F8080A26DEC1F0015806DEBC03E6DEBF0 -FC6DEBFFF86D6C5B021F5B020313802A4D7ECB34>II< -007FB500F090387FFFFEA5C66C48C7000F90C7FC6D6CEC07F86D6D5C6D6D495A6D4B5A6F -495A6D6D91C8FC6D6D137E6D6D5B91387FFE014C5A6E6C485A6EEB8FE06EEBCFC06EEBFF -806E91C9FCA26E5B6E5B6F7E6F7EA26F7F834B7F4B7F92B5FCDA01FD7F03F87F4A486C7E -4A486C7E020F7FDA1FC0804A486C7F4A486C7F02FE6D7F4A6D7F495A49486D7F01076F7E -49486E7E49486E7FEBFFF0B500FE49B612C0A542357EB447>120 -DI E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: Ft cmr9 9 63 -/Ft 63 122 df<91393FE00FE0903A01FFF83FF8903A07E01EF83C903A1F800FF07E903A -3F001FE0FE017E133F4914C0485A1738484890381F8000ACB812C0A33B03F0001F8000B3 -A7486C497EB50083B5FCA32F357FB42D>11 DI<14C01301EB0380EB0F00130E5B13 -3C5B5BA2485A485AA212075B120F90C7FC5AA2121E123EA3123C127CA55AB0127CA5123C -123EA3121E121FA27E7F12077F1203A26C7E6C7EA213787F131C7F130FEB0380EB01C013 -00124A79B71E>40 D<12C07E1270123C121C7E120F6C7E6C7EA26C7E6C7EA27F1378137C -133C133EA2131E131FA37F1480A5EB07C0B0EB0F80A514005BA3131E133EA2133C137C13 -7813F85BA2485A485AA2485A48C7FC120E5A123C12705A5A124A7CB71E>I<130E131FA6 -39700E01C000F8EB03E000FE130F00FF131F397F8E3FC0391FEEFF003803FFF8C613E0EB -3F80A2EBFFE0000313F8381FEEFF397F8E3FC039FF0E1FE000FE130F00F813030070EB01 -C0D8001FC7FCA6130E1B207BB726>I<123C127EB4FCA21380A2127F123D1201A4120313 -00A25A1206120E120C121C5A5A126009177A8715>44 DI<123C -127E12FFA4127E123C08087A8715>I<1530157815F8A215F01401A215E01403A215C014 -07A21580140FA215005CA2143EA2143C147CA2147814F8A25C1301A25C1303A25C1307A2 -495AA291C7FC5BA2131E133EA2133C137CA2137813F8A25B1201A25B1203A2485AA25B12 -0FA290C8FC5AA2121E123EA2123C127CA2127812F8A25A12601D4B7CB726>II<13075B5B137FEA07FFB5FC13BFEA -F83F1200B3B3A2497E007FB51280A319327AB126>III<000C14C0380FC00F90B5128015005C5C14F014C0D80C18C7FC90C8FCA9 -EB0FC0EB7FF8EBF07C380FC03F9038001F80EC0FC0120E000CEB07E0A2C713F01403A215 -F8A41218127E12FEA315F0140712F8006014E01270EC0FC06C131F003C14806CEB7F0038 -0F80FE3807FFF8000113E038003F801D347CB126>53 D<14FE903807FF80011F13E09038 -3F00F0017C13703901F801F8EBF003EA03E01207EA0FC0EC01F04848C7FCA248C8FCA35A -127EEB07F0EB1FFC38FE381F9038700F809038E007C039FFC003E0018013F0EC01F81300 -15FC1400A24814FEA5127EA4127F6C14FCA26C1301018013F8000F14F0EBC0030007EB07 -E03903E00FC03901F81F806CB51200EB3FFCEB0FE01F347DB126>I57 -D<123C127E12FFA4127E123C1200B0123C127E12FFA4127E123C08207A9F15>I<15E0A3 -4A7EA24A7EA34A7EA3EC0DFE140CA2EC187FA34A6C7EA202707FEC601FA202E07FECC00F -A2D901807F1507A249486C7EA301066D7EA2010E80010FB5FCA249800118C77EA2498116 -3FA2496E7EA3496E7EA20001821607487ED81FF04A7ED8FFFE49B512E0A333367DB53A> -65 DIIIII72 DI75 -DIIIII82 D<90381FE00390387FFC0748B5FC3907F01FCF -390F8003FF48C7FC003E80814880A200788000F880A46C80A27E92C7FC127F13C0EA3FF0 -13FF6C13F06C13FF6C14C06C14F0C680013F7F01037F9038003FFF140302001380157F15 -3FED1FC0150F12C0A21507A37EA26CEC0F80A26C15006C5C6C143E6C147E01C05B39F1FC -03F800E0B512E0011F138026C003FEC7FC22377CB42B>I<007FB712FEA390398007F001 -D87C00EC003E0078161E0070160EA20060160600E01607A3481603A6C71500B3AB4A7E01 -1FB512FCA330337DB237>I86 -DI<267FFFFC90B512C0A3000101E090381FF8 -0026007F80EB0FC0013F6E5A6E91C7FC6D6C130E010F140C6E5B6D6C133801035C6E1360 -6D6C13E06D6C485A5EDA7F83C8FCEC3FC715C6EC1FECEC0FFC5D14076E7EA26E7E815C6F -7E9138063FC0140E4A6C7E9138180FF0EC380702707F91386003FCECC0010101804A6C7E -49C77E4981010E6E7E010C6E7E131C496E7E01786E7E13FCD807FEEC1FFEB56C90B512F8 -A335337EB23A>I91 -D93 D97 DII<153FEC0FFFA3EC007F81AE -EB07F0EB3FFCEBFC0F3901F003BF3907E001FF48487E48487F8148C7FCA25A127E12FEAA -127E127FA27E6C6C5BA26C6C5B6C6C4813803A03F007BFFC3900F81E3FEB3FFCD90FE013 -0026357DB32B>III<151F90391FC07F809039FFF8E3C039 -01F07FC73907E03F033A0FC01F83809039800F8000001F80EB00074880A66C5CEB800F00 -0F5CEBC01F6C6C48C7FCEBF07C380EFFF8380C1FC0001CC9FCA3121EA2121F380FFFFEEC -FFC06C14F06C14FC4880381F0001003EEB007F4880ED1F8048140FA56C141F007C15006C -143E6C5C390FC001F83903F007E0C6B51280D91FFCC7FC22337EA126>IIII -II<2703F01FE013FF00FF -90267FF80313C0903BF1E07C0F03E0903BF3803E1C01F02807F7003F387FD803FE147049 -6D486C7EA2495CA2495CB3486C496C487EB53BC7FFFE3FFFF0A33C217EA041>I<3903F0 -1FC000FFEB7FF09038F1E0FC9038F3807C3907F7007EEA03FE497FA25BA25BB3486CEB7F -80B538C7FFFCA326217EA02B>II<3903F03F8000FFEBFFE09038F3C0F89038F7007ED807FE7F6C48EB1F804914C049 -130F16E0ED07F0A3ED03F8A9150716F0A216E0150F16C06D131F6DEB3F80160001FF13FC -9038F381F89038F1FFE0D9F07FC7FC91C8FCAA487EB512C0A325307EA02B>I<3803E07C -38FFE1FF9038E38F809038E71FC0EA07EEEA03ECA29038FC0F8049C7FCA35BB2487EB512 -E0A31A217FA01E>114 DI<13 -30A51370A313F0A21201A212031207381FFFFEB5FCA23803F000AF1403A814073801F806 -A23800FC0EEB7E1CEB1FF8EB07E0182F7FAD1E>IIIII<3A7FFF807F -F8A33A07F8001FC00003EC0F800001EC070015066C6C5BA26D131C017E1318A26D5BA2EC -8070011F1360ECC0E0010F5BA2903807E180A214F3010390C7FC14FBEB01FEA26D5AA314 -78A21430A25CA214E05CA2495A1278D8FC03C8FCA21306130EEA701CEA7838EA1FF0EA0F -C025307F9F29>I E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: Fu cmsy6 6 1 -/Fu 1 4 df<136013701360A20040132000E0137038F861F0387E67E0381FFF803807FE -00EA00F0EA07FE381FFF80387E67E038F861F038E060700040132000001300A213701360 -14157B9620>3 D E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: Fv cmbx10 10 17 -/Fv 17 118 df<141E143E14FE1307133FB5FCA313CFEA000FB3B3A6007FB61280A42137 -79B630>49 DI< -EA0F80EA3FE0EA7FF0A2EAFFF8A5EA7FF0A2EA3FE0EA0F80C7FCABEA0F80EA3FE0EA7FF0 -A2EAFFF8A5EA7FF0A2EA3FE0EA0F800D2579A41B>58 D65 D70 D<003FB91280A4D9F800EBF003D87FC09238007FC049161F00 -7EC7150FA2007C1707A200781703A400F818E0481701A4C892C7FCB3AE010FB7FCA43B38 -7DB742>84 D97 D<13FFB5FCA412077EAF4AB47E020F13F0023F13FC9138FE -03FFDAF00013804AEB7FC00280EB3FE091C713F0EE1FF8A217FC160FA217FEAA17FCA3EE -1FF8A217F06E133F6EEB7FE06E14C0903AFDF001FF80903AF8FC07FE009039F03FFFF8D9 -E00F13E0D9C00390C7FC2F3A7EB935>I<903801FFC0010F13FC017F13FFD9FF80138026 -03FE0013C048485AEA0FF8121F13F0123F6E13804848EB7F00151C92C7FC12FFA9127FA2 -7F123FED01E06C7E15036C6CEB07C06C6C14806C6C131FC69038C07E006DB45A010F13F0 -0101138023257DA42A>I<903803FF80011F13F0017F13FC3901FF83FE3A03FE007F8048 -48133F484814C0001FEC1FE05B003FEC0FF0A2485A16F8150712FFA290B6FCA301E0C8FC -A4127FA36C7E1678121F6C6C14F86D14F000071403D801FFEB0FE06C9038C07FC06DB512 -00010F13FC010113E025257DA42C>101 D<161FD907FEEBFFC090387FFFE348B6EAEFE0 -2607FE07138F260FF801131F48486C138F003F15CF4990387FC7C0EEC000007F81A6003F -5DA26D13FF001F5D6C6C4890C7FC3907FE07FE48B512F86D13E0261E07FEC8FC90CAFCA2 -123E123F7F6C7E90B512F8EDFF8016E06C15F86C816C815A001F81393FC0000F48C81380 -48157F5A163FA36C157F6C16006D5C6C6C495AD81FF0EB07FCD807FEEB3FF00001B612C0 -6C6C91C7FC010713F02B377DA530>103 D105 -D<13FFB5FCA412077EB3B3ACB512FCA4163A7DB91B>108 D<9038FE03F000FFEB0FFEEC -3FFF91387C7F809138F8FFC000075B6C6C5A5CA29138807F80ED3F00150C92C7FC91C8FC -B3A2B512FEA422257EA427>114 D<90383FF0383903FFFEF8000F13FF381FC00F383F00 -03007E1301007C130012FC15787E7E6D130013FCEBFFE06C13FCECFF806C14C06C14F06C -14F81203C614FC131F9038007FFE140700F0130114007E157E7E157C6C14FC6C14F8EB80 -019038F007F090B512C000F8140038E01FF81F257DA426>I<130FA55BA45BA25B5BA25A -1207001FEBFFE0B6FCA3000390C7FCB21578A815F86CEB80F014816CEBC3E090383FFFC0 -6D1380903803FE001D357EB425>I<01FFEC3FC0B5EB3FFFA4000714016C80B3A35DA25D -A26C5C6E4813E06CD9C03E13FF90387FFFFC011F13F00103138030257DA435>I -E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: Fw cmbx12 12 42 -/Fw 42 123 df45 DI48 DIII<163FA25E5E5D5DA25D5D5D5DA25D92B5FCEC01F7EC03E714 -0715C7EC0F87EC1F07143E147E147C14F8EB01F0EB03E0130714C0EB0F80EB1F00133E5B -A25B485A485A485A120F5B48C7FC123E5A12FCB91280A5C8000F90C7FCAC027FB61280A5 -31417DC038>I<0007150301E0143F01FFEB07FF91B6FC5E5E5E5E5E16804BC7FC5D15E0 -92C8FC01C0C9FCAAEC3FF001C1B5FC01C714C001DF14F09039FFE03FFC9138000FFE01FC -6D7E01F06D13804915C0497F6C4815E0C8FC6F13F0A317F8A4EA0F80EA3FE0487E12FF7F -A317F05B5D6C4815E05B007EC74813C0123E003F4A1380D81FC0491300D80FF0495AD807 -FEEBFFFC6CB612F0C65D013F1480010F01FCC7FC010113C02D427BC038>I<4AB47E021F -13F0027F13FC49B6FC01079038807F8090390FFC001FD93FF014C04948137F4948EBFFE0 -48495A5A1400485A120FA248486D13C0EE7F80EE1E00003F92C7FCA25B127FA2EC07FC91 -381FFF8000FF017F13E091B512F89039F9F01FFC9039FBC007FE9039FF8003FF17804A6C -13C05B6F13E0A24915F0A317F85BA4127FA5123FA217F07F121FA2000F4A13E0A26C6C15 -C06D4913806C018014006C6D485A6C9038E01FFC6DB55A011F5C010714C0010191C7FC90 -38003FF02D427BC038>I<121E121F13FC90B712FEA45A17FC17F817F017E017C0A24816 -80007EC8EA3F00007C157E5E00785D15014B5A00F84A5A484A5A5E151FC848C7FC157E5D -A24A5A14035D14074A5AA2141F5D143FA2147F5D14FFA25BA35B92C8FCA35BA55BAA6D5A -6D5A6D5A2F447AC238>II65 -DIII70 D73 -D77 -D<923807FFC092B512FE0207ECFFC0021F15F091267FFE0013FC902601FFF0EB1FFF0107 -0180010313C04990C76C7FD91FFC6E6C7E49486F7E49486F7E01FF8348496F7E48496F13 -80A248496F13C0A24890C96C13E0A24819F04982003F19F8A3007F19FC49177FA400FF19 -FEAD007F19FC6D17FFA3003F19F8A26D5E6C19F0A26E5D6C19E0A26C6D4B13C06C19806E -5D6C6D4B13006C6D4B5A6D6C4B5A6D6C4B5A6D6C4A5B6D01C001075B6D01F0011F5B0101 -01FE90B5C7FC6D90B65A023F15F8020715C002004AC8FC030713C047467AC454>79 -DI82 D -I<003FBA12E0A59026FE000FEB8003D87FE09338003FF049171F90C71607A2007E180300 -7C1801A300781800A400F819F8481978A5C81700B3B3A20107B8FCA545437CC24E>I<90 -3801FFE0011F13FE017F6D7E48B612E03A03FE007FF84848EB1FFC6D6D7E486C6D7EA26F -7FA36F7F6C5A6C5AEA00F090C7FCA40203B5FC91B6FC1307013F13F19038FFFC01000313 -E0000F1380381FFE00485A5B127F5B12FF5BA35DA26D5B6C6C5B4B13F0D83FFE013EEBFF -C03A1FFF80FC7F0007EBFFF86CECE01FC66CEB8007D90FFCC9FC322F7DAD36>97 -D99 D101 DIII<137C48B4FC4813804813 -C0A24813E0A56C13C0A26C13806C1300EA007C90C7FCAAEB7FC0EA7FFFA512037EB3AFB6 -FCA518467CC520>I108 -D<90277F8007FEEC0FFCB590263FFFC090387FFF8092B5D8F001B512E002816E4880913D -87F01FFC0FE03FF8913D8FC00FFE1F801FFC0003D99F009026FF3E007F6C019E6D013C13 -0F02BC5D02F86D496D7EA24A5D4A5DA34A5DB3A7B60081B60003B512FEA5572D7CAC5E> -I<90397F8007FEB590383FFF8092B512E0028114F8913987F03FFC91388F801F00039039 -9F000FFE6C139E14BC02F86D7E5CA25CA35CB3A7B60083B512FEA5372D7CAC3E>II<90397FC00FF8B590B57E02C314 -E002CF14F89139DFC03FFC9139FF001FFE000301FCEB07FF6C496D13804A15C04A6D13E0 -5C7013F0A2EF7FF8A4EF3FFCACEF7FF8A318F017FFA24C13E06E15C06E5B6E4913806E49 -13006E495A9139DFC07FFC02CFB512F002C314C002C091C7FCED1FF092C9FCADB67EA536 -407DAC3E>I<90387F807FB53881FFE0028313F0028F13F8ED8FFC91389F1FFE000313BE -6C13BC14F8A214F0ED0FFC9138E007F8ED01E092C7FCA35CB3A5B612E0A5272D7DAC2E> -114 D<90391FFC038090B51287000314FF120F381FF003383FC00049133F48C7121F127E -00FE140FA215077EA27F01E090C7FC13FE387FFFF014FF6C14C015F06C14FC6C80000380 -6C15806C7E010F14C0EB003F020313E0140000F0143FA26C141F150FA27EA26C15C06C14 -1FA26DEB3F8001E0EB7F009038F803FE90B55A00FC5CD8F03F13E026E007FEC7FC232F7C -AD2C>III120 DI<001FB71280A490 -26FC001F130001E0495A5B49495A90C7485A48495B123E4A5B4A5B003C495BA24A90C7FC -4A5A4A5AC7FC4A5A495B495BA2495B499038800780491300A2495A4948130F49481400A2 -485B48495B485BA248495B4890C75A48485C15034848EB1FFEB7FCA4292C7DAB32>I -E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: Fx cmtt10 10 14 -/Fx 14 118 df44 -D<121FEA3F80EA7FC0EAFFE0A5EA7FC0EA3F80EA1F000B0B708A2C>46 -D64 D<3801FFF0000713FE001F6D7E15E048809038C01FF81407EC -01FC381F80000006C77EC8127EA3ECFFFE131F90B5FC1203120F48EB807E383FF800EA7F -C090C7FC12FE5AA47E007F14FEEB8003383FE01F6CB612FC6C15FE6C14BF0001EBFE1F3A -003FF007FC27247CA32C>97 D<903803FFE0011F13F8017F13FE48B5FC48804848C6FCEA -0FF0485A49137E4848131890C9FC5A127EA25AA8127EA2127F6C140F6DEB1F806C7E6D13 -3F6C6CEB7F003907FE03FF6CB55A6C5C6C6C5B011F13E0010390C7FC21247AA32C>99 -DII104 D107 D<387FFFE0B57EA37EEA0003B3B3A5007FB61280B712C0A36C15802233 -7BB22C>I<397FF01FE039FFF8FFF801FB13FE90B6FC6C158000019038F07FC09138801F -E091380007F049EB03F85BED01FC491300A216FE167EA816FE6D14FCA2ED01F86D13036D -EB07F0150F9138801FE09138E07FC091B51280160001FB5B01F813F8EC3FC091C8FCAD38 -7FFFE0B57EA36C5B27367FA32C>112 D114 D<90387FF8700003B512F8120F5A5A387FC00F387E000348 -13015AA36CEB00F0007F140013F0383FFFC06C13FE6CEBFF80000314E0C66C13F8010113 -FCEB0007EC00FE0078147F00FC143F151F7EA26C143F6D133E6D13FE9038F007FC90B5FC -15F815E000F8148039701FFC0020247AA32C>I<3A7FF003FF80486C487FA3007F7F0001 -EB000FB3A3151FA2153F6D137F3900FE03FF90B7FC6D15807F6D13CF902603FE07130029 -247FA32C>117 D E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: Fy cmsy10 10 2 -/Fy 2 104 df102 D<12FCEAFFC0EA07F0EA01FCEA -007E7F80131F80130FB3A7801307806D7E6D7EEB007EEC1FF0EC07F8EC1FF0EC7E00495A -495A495A5C130F5CB3A7131F5C133F91C7FC137E485AEA07F0EAFFC000FCC8FC1D537ABD -2A>I E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: Fz cmr10 10 55 -/Fz 55 124 df<011FB512FEA39026001FFEC8FCEC07F8A8EC3FFE0103B512E0D91FF713 -FC90397F07F87F01FCEC1F80D803F8EC0FE0D807F06E7ED80FE06E7E001F82D83FC06E7E -A2007F8201808000FF1780A7007F170001C05C003F5EA2D81FE04A5A000F5ED807F04A5A -D803F84A5AD800FCEC1F80017F027FC7FC90391FF7FFFC0103B512E09026003FFEC8FCEC -07F8A8EC1FFE011FB512FEA331397BB83C>8 D<010FB612C0A3D900070180C7FCDA01FE -C8FCA7D8FF80ED07FC01E0151F001F17E001F0153F000F17C001F8157F00071780ACD803 -FCEDFF00A4D801FE4A5AA200005E017F4A5A02811307013F5DD91FC1495AD90FE1495AD9 -03F9017FC7FC0100B512FC023F13F0020390C8FC6E5AA8913807FF80010FB612C0A33639 -7BB841>I<146014E0EB01C0EB0380EB0700130E131E5B5BA25B485AA2485AA212075B12 -0F90C7FCA25A121EA2123EA35AA65AB2127CA67EA3121EA2121F7EA27F12077F1203A26C -7EA26C7E1378A27F7F130E7FEB0380EB01C0EB00E01460135278BD20>40 -D<12C07E12707E7E7E120F6C7E6C7EA26C7E6C7EA21378A2137C133C133E131EA2131F7F -A21480A3EB07C0A6EB03E0B2EB07C0A6EB0F80A31400A25B131EA2133E133C137C1378A2 -5BA2485A485AA2485A48C7FC120E5A5A5A5A5A13527CBD20>I<121C127FEAFF80A213C0 -A3127F121C1200A412011380A2120313005A1206120E5A5A5A12600A19798817>44 -DI<121C127FEAFF80A5EA7F00121C0909798817>I48 -D -III<1538A2157815F8 -A2140114031407A2140F141F141B14331473146314C313011483EB030313071306130C13 -1C131813301370136013C01201EA038013005A120E120C5A123812305A12E0B712F8A3C7 -3803F800AB4A7E0103B512F8A325397EB82A>I<12301238123E003FB612E0A316C05A16 -8016000070C712060060140E5D151800E01438485C5D5DC712014A5A92C7FC5C140E140C -141C5CA25CA214F0495AA21303A25C1307A2130FA3495AA3133FA5137FA96DC8FC131E23 -3B7BB82A>55 DII<1538A3157CA3 -15FEA34A7EA34A6C7EA202077FEC063FA2020E7FEC0C1FA2021C7FEC180FA202387FEC30 -07A202707FEC6003A202C07F1501A2D901807F81A249C77F167FA20106810107B6FCA249 -81010CC7121FA2496E7EA3496E7EA3496E7EA213E0707E1201486C81D80FFC02071380B5 -6C90B512FEA3373C7DBB3E>65 DI<913A01FF800180020FEBE00302 -7F13F8903A01FF807E07903A03FC000F0FD90FF0EB039F4948EB01DFD93F80EB00FF49C8 -127F01FE153F12014848151F4848150FA248481507A2485A1703123F5B007F1601A35B00 -FF93C7FCAD127F6DED0180A3123F7F001F160318006C7E5F6C7E17066C6C150E6C6C5D00 -001618017F15386D6C5CD91FE05C6D6CEB03C0D903FCEB0F80902701FF803FC7FC903900 -7FFFFC020F13F002011380313D7BBA3C>II70 D73 D<013FB512E0A39039001FFC00EC07F8B3B3A3 -123FEA7F80EAFFC0A44A5A1380D87F005B0070131F6C5C6C495A6C49C7FC380781FC3801 -FFF038007F80233B7DB82B>I76 -D78 -D80 D82 -D -I<003FB812E0A3D9C003EB001F273E0001FE130348EE01F00078160000701770A3006017 -30A400E01738481718A4C71600B3B0913807FF80011FB612E0A335397DB83C>II87 D91 -D93 D97 -DIIII<147E903803FF8090380FC1E0EB1F8790383F0FF0137EA213 -FCA23901F803C091C7FCADB512FCA3D801F8C7FCB3AB487E387FFFF8A31C3B7FBA19>I< -ED03F090390FF00FF890393FFC3C3C9039F81F707C3901F00FE03903E007C03A07C003E0 -10000FECF000A248486C7EA86C6C485AA200075C6C6C485A6D485A6D48C7FC38073FFC38 -060FF0000EC9FCA4120FA213C06CB512C015F86C14FE6CECFF804815C03A0F80007FE048 -C7EA0FF0003E140348140116F8481400A56C1401007C15F06CEC03E0003F1407D80F80EB -0F80D807E0EB3F003901FC01FC39007FFFF0010790C7FC26387EA52A>III107 DI<2703F00FF0EB1FE000FFD93FFCEB7FF8913AF03F01E07E903B -F1C01F83803F3D0FF3800FC7001F802603F70013CE01FE14DC49D907F8EB0FC0A2495CA3 -495CB3A3486C496CEB1FE0B500C1B50083B5FCA340257EA445>I<3903F00FF000FFEB3F -FCECF03F9039F1C01F803A0FF3800FC03803F70013FE496D7EA25BA35BB3A3486C497EB5 -00C1B51280A329257EA42E>II<3903F01FE000FFEB7FF89038F1E07E -9039F3801F803A0FF7000FC0D803FEEB07E049EB03F04914F849130116FC150016FEA316 -7FAA16FEA3ED01FCA26DEB03F816F06D13076DEB0FE001F614C09039F7803F009038F1E0 -7E9038F0FFF8EC1FC091C8FCAB487EB512C0A328357EA42E>I<3807E01F00FFEB7FC090 -38E1E3E09038E387F0380FE707EA03E613EE9038EC03E09038FC0080491300A45BB3A248 -7EB512F0A31C257EA421>114 DI<1318A51338A31378A313F8120112031207001FB5FCB6FCA2D801 -F8C7FCB215C0A93800FC011580EB7C03017E13006D5AEB0FFEEB01F81A347FB220>IIII121 -D123 D E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: FA cmr12 12 32 -/FA 32 122 df<0103B612FCA390C701F0C8FC6F5A6F5AA8913801FFF0023FEBFF80903A -01FF3FDFF0D907F0EBC1FCD91FC0EBC07FD93F00EC1F8001FEED0FE048486F7E48486F7E -48486F7E48486F7E001F834982003F1880007F18C0A249163F00FF18E0A8007F18C06D16 -7FA2003F1880001F18006D5E000F5F6C6C4B5A6C6C4B5A6C6C4B5A6C6C4B5A013FED1F80 -D91FC0027FC7FCD907F0EBC1FCD901FFEBDFF0D9003FB51280020101F0C8FC9138003FC0 -A84B7E4B7E0103B612FCA33B447BC346>8 D<027FB67EA39126001FFEC9FC6F5A6F5AA8 -B46CEFFF8001E01603D81FF0933807FC006C6C4C5A0007606D161F000360A26D163F0001 -60AC6C6C5F187FA4D97F804BC7FCA2013F5E02C01401131F02E04A5A010F5ED907F01407 -D903F85DD901FC4A5AD900FE4A5A027F027FC8FCDA1FC713FE0207B512F8020114C09126 -001FFCC9FCED07F8A84B7E4B7E027FB67EA341447BC34C>I<13FEA4EBFFC0EB0FF0EB03 -F8EB01FCEB00FEA5EB01FCEB07F8EB3FF0B512C0EBF8001712747D2B>24 -D<140C141C1438147014E0EB01C01303EB0780EB0F00A2131E5BA25B13F85B12015B1203 -A2485AA3485AA348C7FCA35AA2123EA2127EA4127CA312FCB3A2127CA3127EA4123EA212 -3FA27EA36C7EA36C7EA36C7EA212017F12007F13787FA27F7FA2EB0780EB03C01301EB00 -E014701438141C140C166476CA26>40 D<12C07E12707E7E7E120F6C7E6C7EA26C7E6C7E -A21378137C133C133E131E131FA2EB0F80A3EB07C0A3EB03E0A314F0A21301A214F8A413 -00A314FCB3A214F8A31301A414F0A21303A214E0A3EB07C0A3EB0F80A3EB1F00A2131E13 -3E133C137C13785BA2485A485AA2485A48C7FC120E5A5A5A5A5A16647BCA26>I<121EEA -7F8012FF13C0A213E0A3127FEA1E601200A413E013C0A312011380120313005A1206120E -5A5A5A12600B1D78891B>44 D<121EEA7F80A2EAFFC0A4EA7F80A2EA1E000A0A78891B> -46 D<14FF010713E090381F81F890383E007C01FC133F4848EB1F8049130F4848EB07C0 -4848EB03E0A2000F15F0491301001F15F8A2003F15FCA390C8FC4815FEA54815FFB3A46C -15FEA56D1301003F15FCA3001F15F8A26C6CEB03F0A36C6CEB07E0000315C06D130F6C6C -EB1F806C6CEB3F00013E137C90381F81F8903807FFE0010090C7FC28447CC131>48 -D<143014F013011303131F13FFB5FC13E713071200B3B3B0497E497E007FB6FCA3204278 -C131>II<14FF010713E0011F13F890 -387F80FC9038FC007E48487F4848EB1F804848EB0FC0000FEC07E0485AED03F0485A16F8 -007F140190C713FCA25AA216FE1500A516FFA46C5CA36C7E5D121F7F000F5C6C6C130E15 -0C6C6C131C6C6C5BD8007C5B90383F01E090390FFF80FE903801FE0090C8FC150116FCA4 -ED03F8A216F0D80F801307486C14E0486C130F16C0ED1F80A249EB3F0049137E001EC75A -001C495A000F495A3907E01FE06CB51280C649C7FCEB1FF028447CC131>57 -D<16C04B7EA34B7EA34B7EA34B7EA3ED19FEA3ED30FFA203707FED607FA203E07FEDC03F -A2020180ED801FA2DA03007F160FA20206801607A24A6D7EA34A6D7EA34A6D7EA2027081 -0260147FA202E08191B7FCA249820280C7121FA249C87F170FA20106821707A2496F7EA3 -496F7EA3496F7EA201788313F8486C83D80FFF03037FB500E0027FEBFFC0A342477DC649 ->65 D72 -D75 DII80 -D<49B41303010FEBE007013F13F89039FE00FE0FD801F8131FD807E0EB079F49EB03DF48 -486DB4FC48C8FC4881003E81127E82127C00FC81A282A37E82A27EA26C6C91C7FC7F7FEA -3FF813FE381FFFE06C13FE6CEBFFE06C14FC6C14FF6C15C0013F14F0010F80010180D900 -1F7F14019138001FFF03031380816F13C0167F163F161F17E000C0150FA31607A37EA36C -16C0160F7E17806C151F6C16006C5D6D147ED8FBC05CD8F9F0495AD8F07C495A90393FC0 -0FE0D8E00FB51280010149C7FC39C0003FF02B487BC536>83 D97 D99 D101 D103 DII<14 -3C14FFA2491380A46D1300A2143C91C7FCADEC7F80EB3FFFA31300147F143FB3B3AA123E -127F39FF807F00A2147EA25C6C485A383C01F06C485A3807FF80D801FEC7FC195785C21E ->III<3901FC -01FE00FF903807FFC091381E07F091383801F8000701707F0003EBE0002601FDC07F5C01 -FF147F91C7FCA25BA35BB3A8486CECFF80B5D8F83F13FEA32F2C7DAB36>110 -DI<3903F803F000FFEB1FFCEC3C3EEC707F -0007EBE0FF3803F9C000015B13FBEC007E153C01FF13005BA45BB3A748B4FCB512FEA320 -2C7DAB26>114 D117 D121 D E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: FB cmsy10 12 1 -/FB 1 4 df<147014F8A81470007815F0007C1401B4EC07F8D87F80EB0FF0D83FE0EB3F -E0D80FF0EB7F80D803F8EBFE003900FE73F890383F77E090380FFF80D903FEC7FCEB00F8 -EB03FE90380FFF8090383F77E09038FE73F83903F870FED80FF0EB7F80D83FE0EB3FE0D8 -7F80EB0FF0D8FF00EB07F8007CEC01F000781400C7140014F8A81470252B7AAD32>3 -D E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: FC cmbx12 17.28 21 -/FC 21 119 df<167C16FC1501ED07F0150FED1FE0ED3FC0ED7F80EDFF004A5A14034A5A -4A5A5D141F4A5A147F4A5A5D5B4990C7FCA2495A130F5C131FA2495AA2495AA213FF5C5A -A25C5AA25A5CA25AA291C8FCA25AA35B123FA5127F5BA612FFB3A4127FA67F123FA5121F -7FA37EA280A27EA2807EA27E80A27E80137FA26D7EA26D7EA2130F8013076D7EA26D7F7F -816E7E143F6E7E140F816E7E6E7E14016E7EED7F80ED3FC0ED1FE0ED0FF01507ED01FC15 -00167C269071EB3F>40 D<127812FC127E6C7E7F6C7E6C7E6C7E6C7E6C7E7F6C7F6D7E13 -3F806D7E806D7E1307806D7EA26D7F817F81A26E7EA26E7EA281141F81A2140F81A21680 -80A216C0A280A216E0A38016F0A516F880A616FCB3A416F8A65C16F0A516E05CA316C0A2 -5CA21680A25C1600A25D141FA25D143F5DA24A5AA24A5AA25D5B5D4990C7FCA2495A5C13 -0F495A5C495A5C137F495A4890C8FC5B485A485A485A485A485A5B007EC9FC5A12782690 -77EB3F>I46 D<16F04B7E1507151F153FEC01FF1407147F -010FB5FCB7FCA41487EBF007C7FCB3B3B3B3007FB91280A6395E74DD51>49 -D68 D70 D80 D83 D<001FBEFCA64849C79126 -E0000F148002E0180091C8171F498601F81A0349864986A2491B7FA2491B3F007F1DC090 -C9181FA4007E1C0FA600FE1DE0481C07A5CA95C7FCB3B3B3A3021FBAFCA663617AE070> -I<913803FFFE027FEBFFF00103B612FE010F6F7E4916E090273FFE001F7FD97FE001077F -D9FFF801017F486D6D7F717E486D6E7F85717FA2717FA36C496E7FA26C5B6D5AEB1FC090 -C9FCA74BB6FC157F0207B7FC147F49B61207010F14C0013FEBFE004913F048B512C04891 -C7FC485B4813F85A5C485B5A5CA2B55AA45FA25F806C5E806C047D7F6EEB01F96C6DD903 -F1EBFF806C01FED90FE114FF6C9027FFC07FC01580000191B5487E6C6C4B7E011F02FC13 -0F010302F001011400D9001F90CBFC49437CC14E>97 D<92380FFFF04AB67E020F15F002 -3F15FC91B77E01039039FE001FFF4901F8010113804901E0010713C04901804913E0017F -90C7FC49484A13F0A2485B485B5A5C5A7113E0485B7113C048701380943800FE0095C7FC -485BA4B5FCAE7EA280A27EA2806C18FCA26C6D150119F87E6C6D15036EED07F06C18E06C -6D150F6D6DEC1FC06D01E0EC7F806D6DECFF00010701FCEB03FE6D9039FFC03FFC010091 -B512F0023F5D020F1580020102FCC7FCDA000F13C03E437BC148>99 -D<92380FFFC04AB512FC020FECFF80023F15E091B712F80103D9FE037F499039F0007FFF -011F01C0011F7F49496D7F4990C76C7F49486E7F48498048844A804884485B727E5A5C48 -717EA35A5C721380A2B5FCA391B9FCA41A0002C0CBFCA67EA380A27EA27E6E160FF11F80 -6C183F6C7FF17F006C7F6C6D16FE6C17016D6C4B5A6D6D4A5A6D01E04A5A6D6DEC3FE001 -0301FC49B45A6D9026FFC01F90C7FC6D6C90B55A021F15F8020715E0020092C8FC030713 -F041437CC14A>101 D<903807FF80B6FCA6C6FC7F7FB3A8EF1FFF94B512F0040714FC04 -1F14FF4C8193267FE07F7F922781FE001F7FDB83F86D7FDB87F07FDB8FC0814C7F039FC7 -8015BE03BC8003FC825DA25DA25DA45DB3B2B7D8F007B71280A651647BE35A>104 -DI<903807FF -80B6FCA6C6FC7F7FB3B3B3B3ADB712E0A623647BE32C>108 D<902607FF80D91FFFEEFF -F8B691B500F00207EBFF80040702FC023F14E0041F02FF91B612F84C6F488193267FE07F -6D4801037F922781FE001F9027E00FF0007FC6DA83F86D9026F01FC06D7F6DD987F06D4A -487F6DD98FC0DBF87EC7804C6D027C80039FC76E488203BEEEFDF003BC6E4A8003FC04FF -834B5FA24B5FA24B94C8FCA44B5EB3B2B7D8F007B7D8803FB612FCA67E417BC087>I<92 -3807FFE092B6FC020715E0021F15F8027F15FE494848C66C6C7E010701F0010F13E04901 -C001037F49496D7F4990C87F49486F7E49486F7E48496F13804819C04A814819E048496F -13F0A24819F8A348496F13FCA34819FEA4B518FFAD6C19FEA46C6D4B13FCA36C19F8A26C -6D4B13F0A26C19E06C6D4B13C0A26C6D4B13806C6D4B13006D6C4B5A6D6D495B6D6D495B -010701F0010F13E06D01FE017F5B010090B7C7FC023F15FC020715E0020092C8FC030713 -E048437CC151>111 D114 -D116 -D<902607FFC0ED3FFEB60207B5FCA6C6EE00076D826D82B3B3A260A360A2607F60183E6D -6D147E4E7F6D6D4948806D6DD907F0ECFF806D01FFEB3FE06D91B55A6E1500021F5C0203 -14F8DA003F018002F0C7FC51427BC05A>II E -%EndDVIPSBitmapFont -end -%%EndProlog -%%BeginSetup -%%Feature: *Resolution 600dpi -TeXDict begin - -%%EndSetup -%%Page: 1 1 -1 0 bop 878 1418 a FC(The)54 b(Static)g(DPF)g(Sim)l(ulator)f(\(v.1\)) -3138 1366 y FB(\003)1049 1768 y FA(Ali)31 b(A.)h(Sel\030)-43 -b(cuk)196 b(Kihong)31 b(P)m(ark)196 b(Heejo)33 b(Lee)1611 -1931 y Fz(Net)n(w)n(ork)27 b(Systems)g(Lab)1385 2047 -y(Departmen)n(t)h(of)f(Computer)h(Sciences)1676 2164 -y(Purdue)f(Univ)n(ersit)n(y)1546 2280 y(W)-7 b(est)28 -b(Lafa)n(y)n(ette,)e(IN)i(47907)1313 2396 y Fy(f)p Fx(selcuk,park,hl)o -(ee)o Fy(g)p Fx(@c)o(s.)o(pu)o(rdu)o(e.)o(edu)1616 2646 -y Fw(CSD-TR)38 b(02-008)1722 2759 y FA(Ma)m(y)33 b(29,)g(2002)1825 -3430 y Fv(Abstract)588 3604 y Fz(The)c(Static)h(DPF)g(Sim)n(ulator)e -(is)h(a)g(to)r(ol)g(for)g(ev)-5 b(aluating)29 b(the)g(p)r(erformance)g -(of)g(the)h(Route-)463 3704 y(Based)c(Distributed)i(P)n(ac)n(k)n(et)d -(Filtering)h(\(DPF\))i(proto)r(col)d([4,)i(3)o(])g(in)g(a)g(static)f -(net)n(w)n(ork)g(en)n(viron-)463 3803 y(men)n(t)33 b(where)f(the)h(no)r -(des)f(and)h(edges)e(do)i(not)f(c)n(hange.)50 b(In)33 -b(this)g(do)r(cumen)n(t,)h(w)n(e)e(describ)r(e)g(the)463 -3903 y(op)r(eration)23 b(of)g(the)h(DPF)f(sim)n(ulator)g(and)g(the)g -(structure)g(of)h(the)f(programs)e(in)j(the)g(pac)n(k)-5 -b(age,)22 b(and)463 4002 y(discuss)28 b(certain)f(issues)g(related)g -(to)g(installing)g(and)h(running)f(the)h(DPF)g(sim)n(ulator)e(to)r(ol)h -(suite.)p 236 4855 1418 4 v 338 4908 a Fu(\003)374 4940 -y Ft(This)j(w)n(ork)f(w)n(as)g(supp)r(orted)f(in)h(part)f(b)n(y)g(gran) -n(ts)h(from)f(D)n(ARP)-6 b(A)27 b(A)-6 b(TO)27 b(FTN)i(\(AFRL)f -(F30602-01-2-0539\))k(and)236 5032 y(CERIAS.)p eop -%%Page: 2 2 -2 1 bop 236 399 a Fs(Con)l(ten)l(ts)236 650 y Fr(1)85 -b(In)m(tro)s(duction)2778 b(3)236 901 y(2)85 b(General)34 -b(Structure)h(of)g(the)g(Sim)m(ulator)1743 b(3)236 1152 -y(3)85 b(Data)34 b(Structures)2620 b(4)236 1403 y(4)85 -b(Directory)35 b(Structure)2446 b(6)236 1654 y(5)85 b(Using)35 -b(the)g(Sim)m(ulator)2431 b(6)373 1814 y Fq(5.1)94 b(Installation)71 -b(.)46 b(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.) -f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f -(.)h(.)127 b(6)373 1974 y(5.2)94 b(Preparation)29 b(of)i(the)g(Sim)m -(ulation)d(Input)75 b(.)46 b(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.) -g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)127 b(6)373 2134 -y(5.3)94 b(Running)28 b(the)i(Sim)m(ulator)36 b(.)45 -b(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f -(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)127 b(7)373 -2294 y(5.4)94 b(Analysis)28 b(of)j(the)f(Output)i(.)45 -b(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f -(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)127 b(9)236 -2545 y Fr(6)85 b(Algorithms)34 b(of)h(the)g(Sim)m(ulator)2061 -b(9)373 2706 y Fq(6.1)94 b(Maximal)29 b(Filtering)86 -b(.)46 b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.) -f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)82 -b(14)236 2957 y Fr(7)j(System)34 b(Requiremen)m(ts)2305 -b(15)373 3117 y Fq(7.1)94 b(Space)30 b(Complexit)m(y)23 -b(.)45 b(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.) -g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)82 -b(15)373 3277 y(7.2)94 b(Time)29 b(Complexit)m(y)43 b(.)i(.)h(.)g(.)f -(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.) -h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)82 b(15)236 -3528 y Fr(A)58 b(Multi-P)m(ath)34 b(Routing)2391 b(16)373 -3688 y Fq(A.1)71 b(Data)32 b(Structures)e(.)46 b(.)f(.)h(.)g(.)f(.)h(.) -g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g -(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)82 b(16)373 3848 -y(A.2)71 b(The)30 b(Program)g(Structure)83 b(.)46 b(.)g(.)f(.)h(.)g(.)g -(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.) -f(.)h(.)g(.)f(.)h(.)82 b(16)373 4009 y(A.3)71 b(Running)28 -b(the)i(Sim)m(ulator)36 b(.)45 b(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.) -f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f -(.)h(.)82 b(17)236 4260 y Fr(B)63 b(Example)33 b(Gn)m(uplot)j(T)-9 -b(emplates)1992 b(17)373 4420 y Fq(B.1)75 b(T)-8 b(emplate)30 -b(for)g(\010)1188 4434 y Fp(2)1227 4420 y Fq(\(1\))48 -b(.)e(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f -(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)82 -b(17)373 4580 y(B.2)75 b(T)-8 b(emplate)30 b(for)g(\011)1193 -4594 y Fp(1)1320 4580 y Fq(.)45 b(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g -(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.) -f(.)h(.)g(.)f(.)h(.)82 b(19)p eop -%%Page: 3 3 -3 2 bop 236 399 a Fs(1)135 b(In)l(tro)t(duction)236 649 -y Fq(The)37 b(Static)g(DPF)g(Sim)m(ulator)f(is)g(a)h(to)s(ol)g(for)g -(ev)-5 b(aluating)36 b(the)h(p)s(erformance)g(of)g(the)g(Route-Based) -236 762 y(Distributed)27 b(P)m(ac)m(k)m(et)32 b(Filtering)c(\(DPF\))i -(proto)s(col)f([4)q(,)g(3)q(])g(in)f(a)h(static)h(net)m(w)m(ork)g(en)m -(vironmen)m(t)f(where)236 875 y(the)36 b(no)s(des)e(and)h(edges)h(do)f -(not)g(c)m(hange.)57 b(Giv)m(en)35 b(a)h(net)m(w)m(ork)g(top)s(ology)g -(with)e(a)h(list)f(of)i(no)s(des)e(and)236 987 y(edges,)43 -b(and)38 b(also)h(giv)m(en)h(a)f(list)f(of)i(the)f(\014lter)f(no)s(des) -h(in)f(the)h(net)m(w)m(ork,)k(the)c(DPF)h(sim)m(ulator)e(\014rst)236 -1100 y(calculates,)44 b(or)c(uploads,)h(the)g(routing)e(tables)h(for)g -(pairwise)f(routes)h(in)f(the)i(net)m(w)m(ork;)46 b(then)40 -b(sets)236 1213 y(the)33 b(DPF)h(\014lters)e(to)h(allo)m(w)g(only)f -(the)h(source)g(addresses)f(that)h(are)h(legitimate)f(according)f(to)i -(these)236 1326 y(routes;)g(and)d(\014nally)f(computes)i(according)g -(to)h(these)g(\014lters)e(whic)m(h)f(no)s(des)i(are)g(able)g(to)g -(launc)m(h)g(an)236 1439 y(attac)m(k)37 b(on)d(whic)m(h)f(no)s(des)g -(using)g(whic)m(h)g(sp)s(o)s(ofable)g(addresses,)i(and)e(it)h(outputs)g -(the)g(results.)51 b(The)236 1552 y(proactiv)m(e)31 b(and)f(reactiv)m -(e)i(p)s(erformance)d(measures)h(computed)g(b)m(y)g(the)h(Static)f(DPF) -h(Sim)m(ulator)e(are)236 1665 y(exact)40 b(for)f(a)g(giv)m(en)f(input.) -63 b(Hence,)42 b(in)37 b(this)h(sense,)j(it)d(is)f(di\013eren)m(t)h -(from)h(a)f(t)m(ypical)h(\\sim)m(ulator")236 1778 y(where)30 -b(appro)m(ximate)h(solutions)d(are)j(the)g(norm.)377 -1938 y(In)26 b(this)e(do)s(cumen)m(t,)j(w)m(e)f(describ)s(e)f(the)h(op) -s(eration)f(of)h(the)g(DPF)h(sim)m(ulator)e(and)g(the)h(structure)f(of) -236 2051 y(the)33 b(programs)f(in)f(the)i(pac)m(k)-5 -b(age,)35 b(and)d(discuss)f(certain)h(issues)f(related)i(to)g -(installing)c(and)j(running)236 2164 y(the)f(DPF)g(sim)m(ulator)e(to)s -(ol)h(suite.)236 2494 y Fs(2)135 b(General)46 b(Structure)e(of)h(the)h -(Sim)l(ulator)236 2744 y Fq(The)30 b(op)s(eration)g(of)g(the)h(DPF)g -(sim)m(ulator)e(consists)h(of)h(the)f(follo)m(wing)f(stages:)236 -2979 y Fr(1.)35 b(Input)45 b Fq(The)40 b(input)f(\014les)g(are)i(read)g -(in,)h(the)e(no)s(des)g(and)g(edges)h(are)g(created,)j(and)c(the)h -(\014lters)463 3092 y(and)c(routing)g(tables)g(are)g(allo)s(cated.)62 -b(The)37 b(input)e(\014les)h(are)i(a)g(\014le)e(sp)s(ecifying)f(the)j -(net)m(w)m(ork)463 3205 y(graph)26 b(top)s(ology)g(in)f(adjacency)i -(list)d(format,)k(another)e(\014le)f(that)i(lists)d(the)i(\014lter)f -(no)s(des)g(on)h(the)463 3318 y(net)m(w)m(ork,)32 b(and)e(a)g(third)f -(\014le)g(that)i(lists)e(the)i(transit)f(no)s(des.)463 -3464 y(The)f(function)f(that)h(is)f(in)g(c)m(harge)i(of)f(the)g(input)f -(stage)i(is)e Fo(GetInputGraph)d Fq(in)j(the)h(init.c)f(\014le.)236 -3643 y Fr(2.)35 b(Route)h(Computation)44 b Fq(P)m(airwise)35 -b(routes)i(are)g(computed)f(and)g(the)h(route)g(tables)f(are)h -(\014lled.)463 3756 y(By)g(default,)f(the)g(routes)g(are)g(shortest)h -(path)e(routes)h(computed)g(b)m(y)g(Dijkstra's)f(algorithm,)463 -3869 y(where)d(Dijkstra's)f(algorithm)f(is)h(run)f(starting)i(at)g(the) -g(destinations)e(rather)h(than)h(the)f(more)463 3982 -y(common)41 b(w)m(a)m(y)h(of)f(starting)f(at)i(the)f(sources.)72 -b(This)38 b(is)i(necessary)h(to)h(guaran)m(tee)g(that)f(the)463 -4095 y(path)31 b(from)f(the)h(next)g(hop)f(to)i(a)f(destination)e(is)h -(a)h(sub-path)f(of)h(the)g(original)e(path)h(from)g(the)463 -4208 y(original)f(source.)463 4354 y(Besides)41 b(shortest)f(path)h -(routing,)h(the)f(DPF)g(sim)m(ulation)e(to)s(ol)h(allo)m(ws)g(using)f -(routes)i(com-)463 4467 y(puted)c(b)m(y)h(an)m(y)g(other)f(algorithm)g -(as)h(w)m(ell)e(b)m(y)i(pro)m(viding)d(a)j(route)g(upload)e(option.)61 -b(If)38 b(this)463 4580 y(option)30 b(is)f(selected,)i(\014rst)f(the)g -(routes)g(are)h(uploaded)d(from)i(a)g(sp)s(eci\014ed)f(\014le)g(and)h -(c)m(hec)m(k)m(ed)i(for)463 4693 y(cycles.)39 b(If)24 -b(the)g(routes)f(are)i(cycle-free,)h(the)e(sim)m(ulation)e(pro)s(ceeds) -h(to)i(Step)e(3,)j(optionally)c(after)463 4806 y(complemen)m(ting)30 -b(the)h(routing)e(tables)h(with)f(shortest)h(path)g(routes)g(for)g(an)m -(y)h(missing)d(source-)463 4919 y(destination)41 b(pairs)f(in)g(the)i -(uploaded)e(\014le.)74 b(The)41 b(usage)h(of)g(routing)f(options)g(is)f -(discussed)463 5032 y(further)30 b(in)f(Section)h(5.3)1985 -5281 y(3)p eop -%%Page: 4 4 -4 3 bop 463 399 a Fq(The)32 b(main)g(function)f(in)g(c)m(harge)j(of)e -(the)h(route)g(computation)f(stage)i(is)d(the)i Fo(ComputeRoutes)463 -511 y Fq(function)d(in)f(the)h(route.c)h(\014le.)236 -686 y Fr(3.)k(Filter)g(Computation)44 b Fq(The)27 b(\014lters)g(at)h -(the)g(edges)h(of)f(the)g(DPF)g(\014lter)f(no)s(des)g(are)h -(constructed)463 799 y(to)d(allo)m(w)e(only)g(the)g(source)h(addresses) -f(that)h(can)g(tra)m(v)m(erse)h(that)f(edge)h(according)e(to)i(the)e -(routes)463 912 y(computed)33 b(in)e(stage)i(2.)47 b(This)31 -b(is)g(done)h(b)m(y)g(sending)f(a)i(\014lter)e(up)s(date)g(pac)m(k)m -(et)k(b)s(et)m(w)m(een)e(ev)m(ery)463 1025 y(source-destination)d(pair) -f(and)g(up)s(dating)f(all)h(the)h(\014lters)f(on)h(the)g(path)g(to)g -(allo)m(w)g(that)g(source)463 1138 y(address.)463 1281 -y(This)g(op)s(eration)g(is)g(p)s(erformed)f(b)m(y)i(the)g -Fo(TraverseRoute)p 2520 1281 29 4 v 31 w(SetFilters)d -Fq(function)i(in)f(the)i(\014l-)463 1394 y(ter.c)h(\014le.)236 -1569 y Fr(4.)j(Set)g(Computation)44 b Fq(An)28 b Fn(S)1385 -1583 y Fm(a;t)1500 1569 y Fq(set)h(is)f(the)g(set)h(of)g(sp)s(o)s -(ofable)e(addresses)h(that)h(can)g(b)s(e)f(sen)m(t)h(from)463 -1681 y(the)24 b(attac)m(k)i(source)d Fn(a)g Fq(to)i(the)e(target)i -Fn(t)e Fq(escaping)g(\014ltering.)37 b(The)22 b(fourth)h(stage)i(of)e -(the)h(program)463 1794 y(computes)36 b(the)f Fn(S)1090 -1808 y Fm(a;t)1212 1794 y Fq(sets)g(for)g(all)f(\()p -Fn(a;)15 b(t)p Fq(\))36 b(pairs.)53 b(The)35 b(set)h(computation)f -(algorithm)f(is)g(based)463 1907 y(on)d(the)f(recursiv)m(e)g(prop)s -(ert)m(y)g(that,)h(for)f Fn(a)c Fl(6)p Fq(=)e Fn(t)31 -b Fq(and)e Fn(b)i Fq(denoting)e(the)i(next)g(hop)e(from)h -Fn(a)h Fq(to)g Fn(t)p Fq(,)1140 2144 y Fn(S)1196 2158 -y Fm(a;t)1333 2144 y Fq(=)1454 2000 y Fk(\()1844 2064 -y Fn(S)1900 2079 y Fm(b;t)1979 2064 y Fn(;)159 b Fq(if)29 -b Fn(b)i Fq(is)e(not)i(a)g(\014lter)e(no)s(de)1563 2224 -y Fn(F)1621 2239 y Fm(a;b)1748 2224 y Fl(\\)35 b Fn(S)1900 -2239 y Fm(b;t)1979 2224 y Fn(;)159 b Fq(if)29 b Fn(b)i -Fq(is)e(a)i(\014lter)e(no)s(de)463 2381 y(where)k Fn(F)787 -2396 y Fm(a;b)912 2381 y Fq(is)f(the)h(set)h(of)f(p)s(ermissible)d -(source)j(addresses)f(on)h(the)h(\014lter)e(edge)i(on)f -Fn(b)g Fq(coming)463 2494 y(from)d Fn(a)p Fq(.)463 2638 -y(Giv)m(en)36 b(the)g(prop)s(ert)m(y)f(ab)s(o)m(v)m(e,)j(the)e -(algorithm)f(starts)h(with)e Fn(S)2669 2652 y Fm(t;t)2778 -2638 y Fq(=)g Fn(V)20 b Fq(,)37 b Fn(V)56 b Fq(denoting)35 -b(the)h(set)463 2751 y(of)f(all)f(no)s(des,)h(and)f(computes)h(the)g -Fn(S)1795 2765 y Fm(a;t)1882 2751 y Fn(;)15 b(a)33 b -Fl(6)p Fq(=)f Fn(t)p Fq(,)k(sets)f(in)e(a)j(recursiv)m(e)e(fashion.)52 -b(A)m(t)36 b(the)f(end,)463 2864 y Fn(S)519 2878 y Fm(t;t)626 -2864 y Fq(is)30 b(set)i(to)h Fl(;)f Fq(since)f Fn(t)g -Fq(is)g(not)h(considered)e(an)i(attac)m(k)i(no)s(de)d(on)g(itself.)43 -b(Similarly)-8 b(,)29 b(if)i(egress)463 2977 y(\014ltering)e(is)h(in)f -(e\013ect,)j Fn(S)1321 2991 y Fm(a;t)1438 2977 y Fq(is)d(set)i(to)g -Fl(f)p Fn(a)p Fl(g)g Fq(at)g(the)g(end)f(for)g(all)f(\014lter)g(no)s -(des)h Fn(a)p Fq(.)463 3120 y(The)g(main)g(function)f(in)g(c)m(harge)i -(of)g(this)e(stage)j(is)d Fo(ComputeSets)f Fq(in)h(the)h(\014lter.c)g -(\014le.)236 3295 y Fr(5.)35 b(Output)45 b Fq(Once)28 -b(the)h Fn(S)1173 3309 y Fm(a;t)1288 3295 y Fq(sets)g(are)f(computed)h -(for)f(a)h(giv)m(en)f Fn(t)p Fq(,)h(their)f(cardinalities)e -Fl(j)p Fn(S)3370 3309 y Fm(a;t)3456 3295 y Fl(j)p Fn(;)15 -b(a)26 b Fl(2)f Fn(V)20 b Fq(,)463 3408 y(are)44 b(written)e(out)i(to)g -(a)f(sp)s(eci\014c)f(\014le.)1817 3375 y Fp(1)1935 3408 -y Fq(A)m(t)i(the)f(same)h(time,)i(the)e(dual)d(sets)j -Fn(C)3377 3422 y Fm(s;t)3459 3408 y Fq(|whic)m(h)463 -3521 y(list)35 b(the)h(p)s(ossibilities)c(for)j(the)h(actual)g(source)h -(of)f(a)g(pac)m(k)m(et)i(receiv)m(ed)e(at)h(target)g -Fn(t)f Fq(with)e(the)463 3634 y(apparen)m(t)29 b(source)g(address)f -Fn(s)p Fq(|are)g(deriv)m(ed)g(from)g(the)h Fn(S)2467 -3648 y Fm(a;t)2582 3634 y Fq(sets)g(and)f(their)g(cardinalities)e(are) -463 3746 y(also)h(written)f(out.)39 b(The)26 b(outputting)g(is)g(done)g -(for)g(a)h(target)h Fn(t)e Fq(as)h(so)s(on)f(as)h(the)g(computation)f -(is)463 3859 y(completed)31 b(for)f(that)h(target)h(in)d(order)h(to)h -(reduce)f(the)h(space)g(requiremen)m(t)e(of)i(the)f(program.)463 -4003 y(The)f(function)f(in)h(c)m(harge)h(of)g(computing)e(and)h -(writing)e(out)j(the)g(cardinalities)d(is)h Fo(SaveStats)463 -4116 y Fq(in)i(the)g(output.c)h(\014le.)236 4443 y Fs(3)135 -b(Data)46 b(Structures)236 4694 y Fq(The)30 b(main)g(data)h(structures) -f(in)f(the)i(sim)m(ulator)f(are)h(the)g(no)s(des,)f(edges,)h(routing)f -(tables,)g(and)g(\014lter)236 4806 y(tables.)p 236 4855 -1418 4 v 340 4909 a Fj(1)374 4940 y Ft(Optionally)-6 -b(,)37 b(the)c(explicit)h Fi(S)1248 4948 y Fh(a;t)1362 -4940 y Ft(and)g Fi(C)1575 4948 y Fh(s;t)1685 4940 y Ft(sets)g(can)g(b)r -(e)g(written)g(out)g(instead)g(of)h(just)f(their)g(cardinalities,)k(as) -236 5032 y(explained)26 b(in)f(the)h(discussion)g(of)h(the)e -Fg(sets)33 b Ft(argumen)n(t)25 b(v)l(ariable)h(in)g(Section)f(5.3.)1985 -5281 y Fq(4)p eop -%%Page: 5 5 -5 4 bop 377 399 a Fq(The)35 b(no)s(des)f(are)h(represen)m(ted)g(b)m(y)g -(the)g Fo(NODE)e Fq(data)j(structure)e(whic)m(h)g(consists)g(of)h(a)h -(list)d(of)i(the)236 511 y(edges)30 b(inciden)m(t)e(on)h(the)h(no)s(de) -e(and)h(a)h(routing)e(table.)40 b(The)29 b(de\014nition)e(of)i(the)h -Fo(NODE)e Fq(structure)h(is)f(as)236 624 y(follo)m(ws:)427 -825 y Fo(typedef)46 b(struct)g({)618 938 y(EDGE)476 b(*edge;)618 -1051 y(RTABLE_ENTRY)92 b(*rtable;)427 1164 y(})48 b(NODE;)377 -1365 y Fq(The)27 b(edges)h(of)g(a)f(no)s(de)g(are)h(represen)m(ted)f -(as)g(an)h Fo(EDGE)e Fq(arra)m(y)i(of)f(size)g(equal)g(to)h(the)g -(degree)g(of)f(the)236 1477 y(no)s(de;)33 b(the)g(degree)g(of)f(the)h -(no)s(des)e(are)i(stored)g(in)e(the)h(cen)m(tral)h(arra)m(y)g -Fo(Degree)p Fq(.)45 b(An)32 b Fo(EDGE)f Fq(structure)236 -1590 y(includes)f(the)j(no)s(de)f(ID)g(of)h(the)g(neigh)m(b)s(or)e(no)s -(de.)46 b(It)33 b(also)f(includes)e(a)j(p)s(oin)m(ter)f(to)h(the)f -(\014lter)g(on)g(the)236 1703 y(neigh)m(b)s(or,)i(if)f(the)h(neigh)m(b) -s(or)f(no)s(de)g(is)g(a)i(\014lter)e(no)s(de.)2099 1670 -y Fp(2)2190 1703 y Fq(If)g(the)h(neigh)m(b)s(or)f(is)g(not)h(a)h -(\014lter)e(no)s(de,)i(this)236 1816 y(p)s(oin)m(ter)30 -b(is)f(set)i(to)g(nil.)39 b(The)30 b(de\014nition)e(of)i(of)h(the)f -Fo(EDGE)f Fq(structure)h(is)g(as)g(follo)m(ws:)427 2017 -y Fo(typedef)46 b(struct)g({)618 2130 y(NODE_ID)94 b(to;)618 -2243 y(FTR_ID)142 b(ftr;)427 2356 y(})95 b(EDGE;)377 -2556 y Fq(The)40 b(other)g(comp)s(onen)m(t)h(of)f(a)h(no)s(de)e(is)g -(its)h(routing)f(table,)k(whic)m(h)c(is)g(an)h(arra)m(y)h(of)f -Fo(EDGE)p 3621 2556 29 4 v 33 w(ID)p Fq(s)236 2669 y(indexed)24 -b(b)m(y)i(the)g(destination)e(address.)38 b(That)26 b(is,)g(the)f -Fn(i)p Fq(th)h(en)m(try)g(of)g(the)g(route)f(table)h(giv)m(es)g(the)g -(edge)236 2782 y(to)31 b(b)s(e)f(tak)m(en)i(to)f(reac)m(h)g(the)f(AS)g -(no)s(de)g(with)f(no)s(de)h(ID)g Fn(i)p Fq(.)377 2942 -y(The)j(last)h(ma)5 b(jor)33 b(data)i(structure)e(in)f(the)i(DPF)g(sim) -m(ulator)e(is)h(the)h(\014lter)e(table.)50 b(A)34 b(\014lter)f(table) -236 3055 y(includes)f(the)h(list)g(of)h(source)g(addresses)f(that)h -(are)g(p)s(ermissible)c(at)k(the)g(edge)h(where)e(it)g(is)g(lo)s -(cated.)236 3168 y(There)d(are)h(t)m(w)m(o)h(di\013eren)m(t)d(represen) -m(tations)i(of)f(a)h(\014lter)e(table)i(utilized)d(in)h(the)i(program:) -347 3369 y(1.)46 b(A)24 b(bit)e(arra)m(y)i(represen)m(tation,)h(where)e -(a)h(1)g(at)g(the)f Fn(i)p Fq(th)h(en)m(try)f(denotes)h(that)g(the)g -(source)f(address)463 3482 y Fn(i)31 b Fq(is)f(allo)m(w)m(ed)g(to)h -(pass)f(this)f(\014lter)h(and)f(a)i(0)g(denotes)g(that)g(it)f(is)f(not) -i(allo)m(w)m(ed.)347 3656 y(2.)46 b(A)31 b(dynamic)e(table)h(represen)m -(tation,)h(whic)m(h)e(includes)f(only)i(the)g(allo)m(w)m(ed)g(source)h -(addresses.)377 3856 y(The)24 b(bit)g(arra)m(y)h(represen)m(tation)g -(has)f(the)h(adv)-5 b(an)m(tage)26 b(of)f(enabling)d(direct)i(access)i -(to)f(the)g(\014ltering)236 3969 y(v)-5 b(alue)22 b(of)h(a)h(certain)e -(address.)38 b(The)22 b(dynamic)f(table)i(represen)m(tation)g(has)g -(the)g(adv)-5 b(an)m(tage)24 b(of)f(enabling)236 4082 -y(fast)f(en)m(umeration)e(of)i(the)f(allo)m(w)m(able)g(addresses)f -(where)h(the)g(bit)f(arra)m(y)i(represen)m(tation)f(w)m(ould)f(b)s(e)h -(to)s(o)236 4195 y(sparse.)47 b(The)32 b(sim)m(ulator)f(program)h(p)s -(erforms)f(b)s(oth)h(of)g(these)h(op)s(erations)f(quite)f(often.)48 -b(Therefore)236 4308 y(the)33 b(\014lters)f(are)i(main)m(tained)d(in)h -(b)s(oth)g(formats,)i(as)f(a)h(bit)e(arra)m(y)h(and)g(as)g(a)g(dynamic) -f(table,)i(at)f(the)236 4421 y(same)e(time.)377 4581 -y(The)40 b(\014lter)f(tables)g(are)i(main)m(tained)d(in)h(t)m(w)m(o)i -(cen)m(tral)g(arra)m(ys,)h Fo(Filter1)c Fq(and)i Fo(Filter2)p -Fq(.)67 b(The)236 4694 y(former)32 b(holds)f(the)h(\014lter)f(tables)h -(in)f(bit)g(arra)m(y)i(format;)g(the)g(latter)f(holds)f(them)h(in)f -(dynamic)g(table)236 4807 y(format.)41 b(The)30 b(\014lter)g(tables)g -(are)g(p)s(oin)m(ted)g(to)h(b)m(y)f(the)h Fo(ftr)e Fq(\014eld)g(of)i -(the)f Fo(EDGE)f Fq(data)j(structure.)p 236 4855 1418 -4 v 340 4909 a Fj(2)374 4940 y Ft(Keeping)24 b(a)g(p)r(oin)n(ter)g(to)f -(the)h(next)e(\014lter)i(is)g(in)f(order)h(to)g(sp)r(eed)g(up)e(the)i -(\014lter)f(disco)n(v)n(ery)g(pro)r(cess)i(during)e(the)g(\014lter)236 -5032 y(and)j Fi(S)433 5040 y Fh(a;t)538 5032 y Ft(computations.)1985 -5281 y Fq(5)p eop -%%Page: 6 6 -6 5 bop 236 399 a Fs(4)135 b(Directory)46 b(Structure)236 -649 y Fq(The)35 b(DPF)g(sim)m(ulator's)f(home)h(directory)g(includes)d -(a)k(n)m(um)m(b)s(er)d(of)i(sub)s(directories.)52 b(These)35 -b(sub)s(di-)236 762 y(rectories)c(and)f(their)f(con)m(ten)m(ts)j(are)f -(as)g(follo)m(ws:)236 1000 y Fr(dpf/)46 b Fq(This)29 -b(is)h(the)h(directory)f(that)h(includes)e(the)i(sim)m(ulator)e(co)s -(de.)43 b(All)29 b(\014les)h(discussed)f(so)i(far)f(are)463 -1113 y(lo)s(cated)h(in)e(this)g(directory)-8 b(.)236 -1294 y Fr(v)m(c/)47 b Fq(This)32 b(directory)i(includes)f(an)h -(auxiliary)e(to)s(ol)j(whic)m(h)e(computes)h(a)h(v)m(ertex)h(co)m(v)m -(er)g(on)f(a)f(giv)m(en)463 1407 y(graph.)40 b(V)-8 b(ertex)30 -b(co)m(v)m(er)g(is)e(an)h(e\013ectiv)m(e)h(c)m(hoice)f(for)g(the)g -(placemen)m(t)g(of)g(the)f(\014lter)g(no)s(des)g([4)q(,)h(3].)236 -1587 y Fr(measure/)45 b Fq(This)39 b(directory)i(also)f(includes)f(an)i -(auxiliary)d(part)j(of)g(the)g(sim)m(ulator)f(pac)m(k)-5 -b(age.)74 b(It)463 1700 y(pro)m(vides)30 b(the)h(programs)f(to)i -(compute)f(the)f(t)m(w)m(o)i(main)e(p)s(erformance)g(measures)g(of)h -(the)g(DPF)463 1813 y(to)s(ol,)g(\010)739 1827 y Fp(2)808 -1813 y Fq(and)f(\011)1056 1827 y Fp(1)1095 1813 y Fq(,)h(as)g -(discussed)d(in)h([4)q(,)h(3)q(].)236 1994 y Fr(examples/)45 -b Fq(This)24 b(directory)i(includes)d(a)j(sample)f(set)i(of)f(the)g -(sim)m(ulator's)f(input)f(and)h(output)g(\014les,)463 -2106 y(discussed)f(in)g(Section)h(5,)i(with)d Ff(ID)34 -b Fq(=)25 b(19971108.)43 b(The)24 b(data)j(are)e(based)g(on)h(the)f -(Route)h(Views)463 2219 y(Pro)5 b(ject's)38 b(BGP)f(dump)d(\014le)h -(for)i(No)m(v)m(em)m(b)s(er)g(8,)h(1997;)k(ASmap.19971108.87900985)q -(7.)q(gz)h(at)463 2332 y(h)m(ttp://moat.nlanr.net/Routing/ra)m(wdata/) -34 b(.)236 2663 y Fs(5)135 b(Using)46 b(the)f(Sim)l(ulator)236 -2916 y Fw(5.1)113 b(Installation)236 3135 y Fq(Running)29 -b Ff(make)j Fq(at)g(the)f(sim)m(ulator's)f(home)i(directory)f(will)d -(generate)33 b(all)d(the)i(executables)f(for)g(the)236 -3248 y(sim)m(ulator)e(as)i(w)m(ell)e(as)i(for)f(the)h(auxiliary)d(to)s -(ols.)377 3408 y(One)k(p)s(oin)m(t)e(that)j(needs)e(extra)i(care)f(is)f -(the)h(path)g(information)e(on)h(the)h(\014rst)f(line)g(of)h(the)g -(script)236 3521 y(\014les.)40 b(Curren)m(tly)-8 b(,)29 -b(the)i(p)s(erl)d(script)i(\014les)f(start)i(with)e(the)i(line)236 -3738 y Fo(#!/usr/bin/perl)236 3955 y Fq(The)40 b(path)f(for)h(p)s(erl)e -(ma)m(y)j(b)s(e)e(di\013eren)m(t)h(on)g(di\013eren)m(t)f(systems.)70 -b(It)40 b(is)f(the)h(user's)f(resp)s(onsibilit)m(y)236 -4068 y(to)i(mak)m(e)g(sure)f(that)g(the)h(path)f(information)e(at)j -(the)f(b)s(eginning)e(of)i(the)g(script)f(\014les)h(is)f(up)s(dated)236 -4181 y(according)31 b(to)g(the)f(host)h(system.)236 4469 -y Fw(5.2)113 b(Preparation)36 b(of)i(the)f(Sim)m(ulation)e(Input)236 -4687 y Fq(The)29 b(DPF)h(sim)m(ulator)f(tak)m(es)i(three)f(\014les)e -(as)i(input:)2039 4654 y Fp(3)2117 4687 y Fq(One)f(\014le)g(sp)s -(ecifying)e(the)j(AS)f(graph)g(top)s(ology)236 4800 y(in)h(an)h -(adjacency)h(list)d(represen)m(tation,)j(one)f(\014le)f(listing)f(the)i -(\014lter)f(no)s(des,)h(and)f(a)h(third)f(\014le)g(listing)p -236 4855 1418 4 v 340 4909 a Fj(3)374 4940 y Ft(Optionally)-6 -b(,)25 b(a)g(fourth)g(\014le)f(that)g(includes)h(the)f(pre-computed)f -(routing)h(en)n(tries)h(is)g(needed)f(if)h(route)g(uploading)g(is)236 -5032 y(c)n(hosen.)35 b(This)26 b(option)g(is)g(sp)r(eci\014ed)g(b)n(y)f -(the)g Fg(r)l(oute)33 b Ft(argumen)n(t)25 b(v)l(ariable,)h(discussed)g -(in)g(Section)g(5.3.)1985 5281 y Fq(6)p eop -%%Page: 7 7 -7 6 bop 236 399 a Fq(the)25 b(transit)g(no)s(des)f(in)g(the)h(net)m(w)m -(ork)1493 366 y Fp(4)1533 399 y Fq(.)39 b(The)24 b(follo)m(wing)g -(four-step)h(pro)s(cedure)e(describ)s(es)h(a)h(basic)f(w)m(a)m(y)236 -511 y(of)34 b(preparing)f(these)h(input)e(\014les.)51 -b(These)34 b(steps)g(are)g(not)g(an)g(in)m(tegral)g(part)g(of)g(the)g -(DPF)h(to)s(ol)f(and)236 624 y(can)d(b)s(e)f(skipp)s(ed)d(if)j(the)g -(input)f(\014les)g(are)i(obtained)f(b)m(y)g(other)h(means.)377 -784 y(Before)43 b(executing)e(the)h(follo)m(wing)e(pro)s(cedure,)j(a)f -(BGP)g(dump)e(table)h(in)f(the)i(format)g(of)f(the)236 -897 y(Oregon)i(Route)f(Views)1083 864 y Fp(5)1165 897 -y Fq(Pro)5 b(ject's)43 b(dump)d(tables)i(m)m(ust)h(b)s(e)e(presen)m(t)i -(in)e(the)h(sim)m(ulator's)f(home)236 1010 y(directory)-8 -b(.)65 b(The)38 b(name)g(of)h(this)e(\014le)h(m)m(ust)g(b)s(e)g(in)f -(the)h(form)g(of)h(\\ASmap.)p Ff(ID)9 b Fq(",)38 b(where)g -Ff(ID)47 b Fq(is)37 b(the)236 1123 y(iden)m(ti\014er)29 -b(of)h(the)h(data,)g(usually)d(the)j(date)g(of)f(the)h(dump,)e(suc)m(h) -h(as)h(19990101.)236 1354 y Fr(Step)k(1:)46 b Fq(Extracting)30 -b(the)h(AS)f(paths)g(from)g(the)g(BGP)h(dump)e(\014le)463 -1467 y Fe(Command:)42 b Fq(\045)60 b(get)p 1176 1467 -28 4 v 34 w(ASpaths.pl)f Ff(ID)463 1580 y Fe(Pro)s(duct:)132 -b Fq(ASpaths.)p Ff(ID)236 1758 y Fr(Step)35 b(2:)46 b -Fq(Deducing)29 b(the)i(graph)f(top)s(ology)g(from)g(the)h(AS)f(paths) -463 1870 y Fe(Command:)42 b Fq(\045)60 b(get)p 1176 1870 -V 34 w(ASgraph.pl)f Ff(ID)463 1983 y Fe(Pro)s(duct:)132 -b Fq(ASgraph.)p Ff(ID)236 2161 y Fr(Step)35 b(3:)46 b -Fq(Iden)m(tifying)28 b(the)j(transit)e(no)s(des)463 2274 -y Fe(Command:)42 b Fq(\045)60 b(get)p 1176 2274 V 34 -w(AStrans.pl)f Ff(ID)463 2387 y Fe(Pro)s(duct:)132 b -Fq(AStrans.)p Ff(ID)236 2565 y Fr(Step)35 b(4:)46 b Fq(Computing)28 -b(a)j(v)m(ertex)h(co)m(v)m(er)g(for)e(the)g(\014lter)g(placemen)m(t) -2578 2532 y Fp(6)463 2678 y Fe(Command:)42 b Fq(\045)60 -b(v)m(c/v)m(c.trans)j(ASgraph.)p Ff(ID)68 b Fq(AStrans.)p -Ff(ID)h Fn(>)30 b Fq(AS\014lter.)p Ff(ID)463 2791 y Fe(Pro)s(duct:)132 -b Fq(AS\014lter.)p Ff(ID)236 3077 y Fw(5.3)113 b(Running)37 -b(the)g(Sim)m(ulator)236 3296 y Fq(The)30 b(dpf)f(command)h(has)g(sev)m -(en)h(argumen)m(t)g(v)-5 b(ariables:)236 3503 y Fo(\045)95 -b(dpf/dpf)29 b Ff(gr)-5 b(aph)39 b(c)-5 b(over)41 b(tr)-5 -b(ans)39 b(max)j(e)-5 b(gr)g(ess)39 b(r)-5 b(oute)38 -b(sets)236 3734 y Fr(graph:)46 b Fq(This)27 b(v)-5 b(ariable)28 -b(is)h(the)g(name)g(of)h(the)f(\014le)f(that)i(con)m(tains)f(input)f -(AS)g(graph)h(top)s(ology)h(in)e(an)463 3847 y(adjacency)35 -b(list)d(format.)51 b(\(In)33 b(Section)h(5.2,)h(this)e(\014le)f(is)h -(named)g(ASgraph.)p Ff(ID)p Fq(,)g(generated)i(in)463 -3960 y(Step)e(2.\))48 b(Ev)m(ery)33 b(line)f(of)g(the)h(\014le)f -(includes)f(an)h(AS)h(no)s(de)f(and)g(the)h(list)e(of)i(its)f(neigh)m -(b)s(ors.)46 b(A)463 4072 y(example)31 b(line)d(from)i(an)g(input)f -Ff(gr)-5 b(aph)39 b Fq(\014le)29 b(is)h(as)h(follo)m(ws:)2471 -4039 y Fp(7)p 236 4124 1418 4 v 340 4178 a Fj(4)374 4210 -y Ft(It)i(is)h(p)r(ossible)g(to)f(run)g(the)f(sim)n(ulator)i(without)f -(making)f(an)n(y)h(distinction)g(b)r(et)n(w)n(een)g(stub)g(and)g -(transit)g(no)r(des)236 4301 y(b)n(y)j(simply)h(including)g(all)h(AS)f -(n)n(um)n(b)r(ers)e(of)j(the)f(net)n(w)n(ork)g(in)g(the)g(\014le)g(sp)r -(ecifying)h(the)f(transit)h(no)r(des.)69 b(The)37 b(\014le)236 -4392 y Fd(examples/AStrans.all)p Ft(,)31 b(whic)n(h)25 -b(lists)i(all)g(n)n(um)n(b)r(ers)d Fi(x;)12 b Ft(0)22 -b Fc(\024)f Fi(x)g Fc(\024)g Ft(65535,)28 b(can)e(b)r(e)f(used)h(for)g -(this)g(purp)r(ose.)340 4452 y Fj(5)374 4484 y Ft(F)-6 -b(or)26 b(information)g(on)g(the)f(Route)h(Views)g(Pro)t(ject,)h(see)g -(h)n(ttp://www.routeviews.org/)340 4543 y Fj(6)374 4575 -y Ft(By)f(default)h(w)n(e)f(assume)g(that)f(the)h(\014lters)g(will)h(b) -r(e)f(placed)g(at)g(the)g(transit)g(no)r(des)g(only)-6 -b(,)26 b(hence)g(the)f(V)n(C)h(selection)236 4666 y(is)f(restricted)g -(to)f(the)g(transit)h(no)r(des.)34 b(If)25 b(non-transit)f(no)r(des)g -(are)h(to)f(b)r(e)h(allo)n(w)n(ed)g(in)g(the)e(V)n(C)i(selection,)h -(the)e Fd(vc.trans)236 4758 y Ft(command)18 b(m)n(ust)g(b)r(e)i -(replaced)g(b)n(y)e Fd(vc.ntrans)p Ft(.)35 b(When)18 -b(the)i(non-transit)f(no)r(des)h(are)g(allo)n(w)n(ed)h(in)e(the)g -(selection)i(pro)r(cess,)236 4849 y(the)26 b(co)n(v)n(er)f(is)h -(usually)g(sligh)n(tly)g(smaller)g(but)f(the)h(e\013ectiv)n(eness)g(of) -g(the)f(\014ltering)h(tends)g(to)f(decrease)i(as)f(w)n(ell.)340 -4909 y Fj(7)374 4940 y Ft(More)100 b(examples)e(of)i(these)e(\014les)h -(can)g(b)r(e)g(found)f(as)h(the)g(ASconnlist.*)g(\014les)g(at)g(the)236 -5032 y(h)n(ttp://moat.nlanr.net/Routing/ra)n(wdata/)28 -b(site.)1985 5281 y Fq(7)p eop -%%Page: 8 8 -8 7 bop 463 399 a Fo(22)286 b(->)g(5)334 b(:668:7170:5855:5303:5881)463 -623 y Fq(In)30 b(this)f(example,)i(\\22")h(is)d(the)i(AS)f(n)m(um)m(b)s -(er)f(of)h(the)h(no)s(de)e(whic)m(h)g(this)h(adjacency)h(list)e(refers) -463 736 y(to.)61 b(The)36 b(second)h(en)m(try)g(on)f(this)g(line,)h -(\\5",)i(is)d(the)h(degree)g(of)g(AS)f(22.)61 b(The)36 -b(\014v)m(e)h(n)m(um)m(b)s(ers)463 849 y(that)31 b(follo)m(w)f(are)h -(the)f(neigh)m(b)s(ors)f(of)i(this)e(AS.)236 1037 y Fr(co)m(v)m(er:)47 -b Fq(This)34 b(\014le)h(lists)g(the)h(\014lter)f(no)s(des)g(in)g(the)h -(net)m(w)m(ork,)j(one)d(no)s(de)g(p)s(er)f(line.)56 b(In)35 -b(Section)h(5.2,)463 1150 y(this)30 b(\014le)f(is)h(named)g -(AS\014lter.)p Ff(ID)p Fq(,)f(generated)i(in)e(Step)h(4.)236 -1337 y Fr(trans:)46 b Fq(This)30 b(\014le)h(lists)f(the)i(transit)g(no) -s(des)f(in)f(the)j(net)m(w)m(ork,)g(one)f(no)s(de)f(p)s(er)g(line.)44 -b(In)31 b(Section)h(5.2,)463 1450 y(this)39 b(\014le)f(is)h(named)g -(AStrans.)p Ff(ID)p Fq(,)g(generated)h(in)f(Step)g(3.)68 -b(If)39 b(the)h(user)f(wishes)e(to)k(include)463 1563 -y(all)31 b(no)s(des)g(in)g(the)h(routing)f(pro)s(cess)h(without)f -(stub-transit)f(categorization,)35 b(he)c(can)i(use)e(the)463 -1676 y(AStrans.all)e(\014le)h(for)g Ff(tr)-5 b(ans)p -Fq(,)32 b(whic)m(h)d(is)h(pro)m(vided)f(in)g(the)h(examples/)h -(directory)-8 b(.)236 1864 y Fr(max:)45 b Fq(This)31 -b(v)-5 b(ariable)32 b(determines)h(whether)f(maximal)h(or)g -(semi-maximal)f(\014ltering)f(is)h(to)j(b)s(e)d(p)s(er-)463 -1977 y(formed.)54 b(A)36 b(1)f(sho)m(ws)g(the)g(\014ltering)e(to)j(b)s -(e)e(p)s(erformed)g(is)g(maximal,)h(a)g(0)h(sho)m(ws)e(it)h(is)f(semi-) -463 2090 y(maximal.)236 2277 y Fr(egress:)46 b Fq(This)27 -b(v)-5 b(ariable)26 b(determines)i(whether)f(egress)i(\014ltering)d(is) -h(to)i(b)s(e)e(p)s(erformed)g(at)i(\014lter)e(sites)463 -2390 y(or)k(not.)41 b(A)30 b(1)h(sho)m(ws)f(egress)h(\014ltering)e -(will)e(b)s(e)j(p)s(erformed;)f(a)i(0)g(sho)m(ws)f(it)g(will)e(not.)236 -2578 y Fr(route:)46 b Fq(This)33 b(v)-5 b(ariable)34 -b(determines)h(the)g(t)m(yp)s(e)h(of)f(routing)g(to)h(b)s(e)f(carried)f -(out.)56 b(A)36 b(0)g(means)f(that)463 2691 y(shortest-path)28 -b(routing)d(will)f(b)s(e)j(used.)38 b(A)27 b(1)g(or)g(2)g(means)g(that) -g(pre-computed)f(routes)h(will)d(b)s(e)463 2804 y(uploaded)29 -b(and)g(used.)40 b(If)29 b Ff(r)-5 b(oute)38 b Fq(=)29 -b(1,)i(the)f(uploaded)e(routes)i(will)d(b)s(e)j(completed)f(b)m(y)h -(running)463 2917 y(Dijkstra's)24 b(algorithm)f(for)g(the)h -(source-destination)f(pairs)g(missing)e(from)i(the)h(uploaded)f(data.) -463 3029 y(If)32 b Ff(r)-5 b(oute)39 b Fq(=)32 b(2,)h(no)e(completion)h -(is)e(done)i(and)f(only)g(the)h(pre-computed)g(routes)g(are)g(used.)44 -b(In)463 3142 y(b)s(oth)36 b(cases,)i(a)f Ff(gr)-5 b(aph)p -Fq(.rt)38 b(\014le)d(m)m(ust)h(b)s(e)f(presen)m(t)i(in)d(the)j -(directory)e(of)h(the)h Ff(gr)-5 b(aph)44 b Fq(\014le.)57 -b(This)463 3255 y(\014le)43 b(m)m(ust)h(include)d(the)j -(source-destination-hop)f(triplets)f(in)h(binary)f(for)h(the)h -(pre-routed)463 3368 y(source-destination)30 b(pairs.)236 -3556 y Fr(sets:)46 b Fq(This)28 b(v)-5 b(ariable)29 b(determines)h -(whether)f(the)i(output)f(will)d(b)s(e)j(the)h(cardinalit)m(y)d(of)j -(the)f Fn(S)3516 3570 y Fm(a;t)3633 3556 y Fq(and)463 -3669 y Fn(C)528 3683 y Fm(s;t)646 3669 y Fq(sets)36 b(or)f(the)h(sets)g -(themselv)m(es)g(explicitly)-8 b(.)54 b(If)35 b Ff(sets)43 -b Fq(=)36 b(0,)h(the)f(output)f(includes)e(the)j(set)463 -3782 y(cardinalities)42 b(only;)50 b(if)43 b Ff(sets)51 -b Fq(=)44 b(1,)k(explicit)42 b(sets)i(are)h(written)e(out.)81 -b(In)43 b(either)h(case,)k(the)463 3895 y(sim)m(ulator)31 -b(outputs)g(t)m(w)m(o)i(\014les;)f Ff(gr)-5 b(aph)p Fq(.Sta)34 -b(and)d Ff(gr)-5 b(aph)p Fq(.Cts.)47 b(With)31 b Ff(sets)40 -b Fq(=)31 b(0,)i(these)f(\014les)f(are)463 4007 y(binary)36 -b(\014les)h(starting)g(with)f(the)i(in)m(teger)g Fn(N)10 -b Fq(,)39 b(the)f(n)m(um)m(b)s(er)e(of)i(no)s(des)e(in)h(the)g(input)f -(graph,)463 4120 y(follo)m(w)m(ed)i(b)m(y)f(an)h Fn(N)c -Fl(\002)25 b Fn(N)48 b Fq(matrix,)39 b(where)e(the)g(\()p -Fn(i;)15 b(j)5 b Fq(\)th)40 b(en)m(try)e(of)f(the)h(matrix)f(is)f -Fl(j)p Fn(S)3486 4134 y Fm(a;t)3573 4120 y Fl(j)p Fn(;)15 -b(t)38 b Fq(=)463 4233 y Fn(i;)15 b(a)27 b Fq(=)d Fn(j)5 -b Fq(,)31 b(in)c Ff(gr)-5 b(aph)p Fq(.Sta,)33 b(and)28 -b Fl(j)p Fn(C)1598 4247 y Fm(s;t)1680 4233 y Fl(j)p Fn(;)15 -b(t)26 b Fq(=)f Fn(i;)15 b(s)25 b Fq(=)g Fn(j)5 b Fq(,)31 -b(in)c Ff(gr)-5 b(aph)p Fq(.Cts.)43 b(With)28 b Ff(sets)37 -b Fq(=)29 b(1,)h(these)g(\014les)463 4346 y(are)h(ASCI)s(I)e(\014les)g -(listing)g(the)h Fn(S)1566 4360 y Fm(a;t)1683 4346 y -Fq(and)g Fn(C)1925 4360 y Fm(s;t)2037 4346 y Fq(sets,)h(resp)s(ectiv)m -(ely)-8 b(,)30 b(one)h(set)g(p)s(er)e(line.)463 4496 -y(P)m(erformance)37 b(analysis)e(of)h(the)g(DPF)g(proto)s(col)g(t)m -(ypically)f(deals)g(with)g(the)h(size)g(of)g(the)g Fn(S)3693 -4510 y Fm(a;t)463 4609 y Fq(and)i Fn(C)713 4623 y Fm(s;t)833 -4609 y Fq(sets;)43 b(hence)38 b(outputting)g(the)g(cardinalit)m(y)f(of) -h(these)h(sets)g(usually)d(su\016ces.)64 b(The)463 4722 -y(analysis)36 b(to)s(ols)g(pro)m(vided)f(with)h(this)f(pac)m(k)-5 -b(age,)41 b(describ)s(ed)34 b(in)h(Section)i(5.4,)i(w)m(ork)e(with)e -(the)463 4835 y(set)c(cardinalities)d(as)j(w)m(ell)e(and)h(require)f -(that)i(the)g(dpf)e(to)s(ol)h(b)s(e)g(run)f(with)g Ff(sets)38 -b Fq(=)30 b(0.)1985 5281 y(8)p eop -%%Page: 9 9 -9 8 bop 236 399 a Fw(5.4)113 b(Analysis)36 b(of)i(the)f(Output)236 -617 y Fq(There)24 b(are)g(n)m(umerous)f(w)m(a)m(ys)i(to)f(measure)g -(the)g(e\013ectiv)m(eness)h(of)f(the)h(\014ltering)d(proto)s(col.)38 -b(W)-8 b(e)25 b(pro)m(vide)236 730 y(the)k(to)s(ols)f(for)h -(calculating)f(four)f(of)i(the)g(measures)f(discussed)f(in)g([4)q(,)i -(3]:)40 b(\010)2861 744 y Fp(1)2900 730 y Fq(,)29 b(\010)3020 -744 y Fp(2)3059 730 y Fq(,)h(\010)3180 744 y Fp(3)3219 -730 y Fq(,)f(and)f(\011)3519 744 y Fp(1)3558 730 y Fq(.)40 -b(The)236 843 y(call)30 b(structure)g(for)g(these)h(functions)e(is)236 -1051 y Fo(\045)95 b(measure/)p Ff(function)36 b Fn(x)30 -b Ff(gr)-5 b(aph)236 1258 y Fq(where)35 b Ff(function)42 -b Fq(is)34 b(one)h(of)g Fo(phi1,)46 b(phi2,)h(phi3,)f(psi1)p -Fq(,)35 b Fn(x)g Fq(is)f(the)h(v)-5 b(alue)35 b(of)g(the)g(function)e -(to)j(b)s(e)236 1371 y(computed,)24 b(and)d Ff(gr)-5 -b(aph)31 b Fq(is)21 b(the)i(name)f(of)g(the)g(graph)g(\014le)f(whose)h -(output)f(is)g(to)i(b)s(e)f(used.)37 b(F)-8 b(or)23 b(example,)236 -1484 y(to)31 b(compute)g(\010)782 1498 y Fp(2)821 1484 -y Fq(\(1\))h(on)e(the)g(sim)m(ulation)f(output)h(of)g -Ff(gr)-5 b(aph)p Fq(,)33 b(the)d(command)h(is)236 1719 -y Fo(\045)95 b(measure/phi2)45 b(1)i(graph)236 1954 y -Fq(and)30 b(the)h(command)f(for)g(computing)f(\011)1643 -1968 y Fp(1)1682 1954 y Fq(\(5\))j(is)236 2188 y Fo(\045)95 -b(measure/psi1)45 b(5)i(graph)377 2423 y Fq(All)26 b(of)i(the)f -(analysis)f(to)s(ols)h(discussed)f(here)h(w)m(ork)h(on)f(the)g(binary)f -(cardinalit)m(y)g(\014les)g(and)h(require)236 2536 y(that)38 -b(the)e(dpf)g(to)s(ol)h(b)s(e)f(run)f(with)h Ff(sets)44 -b Fq(=)36 b(0.)61 b(The)36 b Fo(phi1)f Fq(program)i(w)m(orks)g(on)f -(the)h Ff(gr)-5 b(aph)p Fq(.Sta)39 b(\014le)236 2649 -y(and)28 b(the)g Fo(psi1)f Fq(program)h(w)m(orks)h(on)f(the)g -Ff(gr)-5 b(aph)p Fq(.Cts)31 b(\014le.)39 b(The)27 b Fo(phi2)h -Fq(and)f Fo(phi3)g Fq(programs)h(w)m(ork)h(on)236 2762 -y Ff(gr)-5 b(aph)p Fq(.Sat)29 b(whic)m(h)c(con)m(tains)h(the)g(transp)s -(ose)g(of)g(the)g(cardinalit)m(y)f(matrix)g(in)g(the)h -Ff(gr)-5 b(aph)p Fq(.Sta)29 b(\014le.)38 b(The)236 2875 -y Ff(gr)-5 b(aph)p Fq(.Sat)33 b(\014le)c(can)i(b)s(e)f(obtained)g(b)m -(y)g(the)g Fo(transpose)e Fq(program)i(in)f(the)i Fo(measure)d -Fq(directory)-8 b(,)31 b(as)236 3110 y Fo(\045)95 b(measure/transpose) -43 b(graph.Sta)j(graph.Sat)236 3345 y Fq(The)31 b Fo(transpose)e -Fq(program)i(transp)s(oses)g(the)h(cardinalit)m(y)d(matrix)i(in)f(the)i -(\014rst)e(\014le)h(and)g(writes)f(the)236 3458 y(output)g(to)h(the)g -(second)f(\014le.)236 3791 y Fs(6)135 b(Algorithms)46 -b(of)f(the)g(Sim)l(ulator)236 4041 y Fq(In)33 b(this)g(section,)i(w)m -(e)f(giv)m(e)h(a)f(high)f(lev)m(el)g(pseudo-co)s(de)h(of)g(the)g(ma)5 -b(jor)34 b(functions)e(in)h(the)h(sim)m(ulator)236 4154 -y(program)24 b(and)g(an)h(asymptotic)f(analysis)f(of)i(its)f(run)f -(time.)38 b Fn(V)45 b Fq(denotes)25 b(the)g(set)g(of)f(no)s(des,)h -Fn(E)30 b Fq(denotes)236 4267 y(the)h(set)g(of)f(edges,)h(and)f -Fn(F)44 b Fq(denotes)30 b(the)h(set)g(of)f(\014lter)g(no)s(des.)236 -4558 y Fw(The)38 b(Main)f(F)-9 b(unction)236 4777 y Fq(The)29 -b(sim)m(ulator)e(program)i(consists)f(of)h(the)g(\014v)m(e)g(stages)h -(discussed)d(in)h(Section)g(2.)41 b(The)28 b(structure)g(of)236 -4890 y(the)j(main)e(function)g(is)h(as)g(follo)m(ws:)1985 -5281 y(9)p eop -%%Page: 10 10 -10 9 bop 236 399 a Fr(main\(\))p 236 435 307 4 v 236 -564 a Fq(/*)31 b Ff(Initialization)k(Stage)c Fq(*/)236 -677 y(GetInputGraph\(\))236 790 y(Op)s(enOutputFiles\(\))236 -950 y(/*)g Ff(R)-5 b(oute)34 b(Computation)h(Stage)c -Fq(*/)236 1063 y Fr(if)g Fq(\()p Ff(r)-5 b(oute)38 b -Fq(=)30 b(1\))h Fr(or)g Fq(\()p Ff(r)-5 b(oute)38 b Fq(=)30 -b(2\))402 1176 y(UploadRoutes\(\))236 1289 y Fr(if)h -Fq(\()p Ff(r)-5 b(oute)38 b Fq(=)30 b(0\))h Fr(or)g Fq(\()p -Ff(r)-5 b(oute)38 b Fq(=)30 b(1\))402 1402 y Fr(for)g -Fq(all)f Fn(d)d Fl(2)f Fn(V)567 1515 y Fq(Dijkstra\()p -Fn(d)p Fq(\))236 1675 y(/*)31 b Ff(Filter)j(Computation)h(Stage)30 -b Fq(*/)236 1788 y Fr(for)h Fq(all)e Fn(s;)15 b(d)26 -b Fl(2)f Fn(V)402 1901 y Fq(T)-8 b(ra)m(v)m(erseRoute)p -978 1901 28 4 v 34 w(SetFilters\()p Fn(s;)15 b(d)p Fq(\))236 -2061 y(/*)31 b Ff(Set)i(Computation)i(&)d(Output)h(Stages)e -Fq(*/)236 2174 y Fr(for)g Fq(all)e Fn(t)c Fl(2)g Fn(V)402 -2287 y Fq(ComputeSets\()p Fn(t)p Fq(\))402 2399 y(Sa)m(v)m(eStats\()p -Fn(t)p Fq(\))236 2560 y Fr(return)236 2850 y Fw(Initialization)34 -b(Stage)236 3069 y Fq(The)44 b(input)f(graph)g(is)h(read)g(and)g(the)h -(no)s(des,)i(edges,)i(routing)43 b(tables)h(and)g(\014lters)f(are)i -(created.)236 3182 y(The)39 b(no)s(de)g(creation)h(tak)m(es)g -Fn(O)s Fq(\()p Fl(j)p Fn(V)21 b Fl(j)p Fq(\))40 b(time.)67 -b(Creation)39 b(of)h(edges)g(and)f(\014lters)f(tak)m(es)j -Fn(O)s Fq(\()p Fl(j)p Fn(E)5 b Fl(j)p Fq(\))41 b(time.)236 -3295 y(Creation)30 b(and)g(initialization)d(of)j(the)h(route)f(tables)g -(tak)m(es)i Fn(O)s Fq(\()p Fl(j)p Fn(V)20 b Fl(j)2540 -3262 y Fp(2)2580 3295 y Fq(\))31 b(time.)40 b(The)30 -b(o)m(v)m(erall)g(run)m(time)f(of)236 3408 y(the)i(initialization)c -(stage)32 b(is)d(therefore)i Fn(O)s Fq(\()p Fl(j)p Fn(V)21 -b Fl(j)1860 3375 y Fp(2)1900 3408 y Fq(\).)236 3699 y -Fw(Route)37 b(Computation)g(Stage)236 3917 y Fq(P)m(airwise)29 -b(shortest)h(path)g(routes)g(are)g(computed)g(b)m(y)g(Dijkstra's)g -(algorithm,)f(where)g(the)h(algorithm)236 4030 y(is)g(run)f(starting)h -(at)h(the)f(destination)g(no)s(des,)f(as)i(discussed)d(in)i(Section)g -(2.)377 4191 y(Our)e(Dijkstra)h(implemen)m(tation)f(ac)m(hiev)m(es)i(a) -g(v)m(ery)f(e\016cien)m(t)h(realization)e(of)i(the)f(priorit)m(y)f -(queue)236 4303 y(structure)37 b(b)m(y)f(assuming)g(a)h(constan)m(t)i -(limit)34 b(on)j(the)g(maxim)m(um)f(length)g(of)h(the)h(paths)e(in)g -(the)h(AS)236 4416 y(graph,)f(denoted)f(b)m(y)g(MAXHOP)-8 -b(.)1441 4383 y Fp(8)1516 4416 y Fq(The)35 b(priorit)m(y)e(queue)i(is)f -(implemen)m(ted)f(as)j(an)f(arra)m(y)g(of)g(link)m(ed)236 -4529 y(lists,)d(indexed)f(b)m(y)i(the)g(distance,)g(with)f(range)h -([0...MAXHOP+1].)50 b(The)32 b(list)f(at)j(the)f Fn(i)p -Fq(th)f(en)m(try)h(of)236 4642 y(the)g(arra)m(y)g(includes)d(the)j(no)s -(des)f(with)f(distance)i Fn(i)f Fq(to)i(the)f(destination.)46 -b(Initially)-8 b(,)31 b(the)i(destination)236 4755 y(no)s(de)27 -b Fn(d)h Fq(is)e(lo)s(cated)i(in)e(list)h(0)h(and)e(all)h(other)h(no)s -(des)e(are)i(in)f(list)f(MAXHOP+1)i(\(practically)f Fl(1)p -Fq(\).)39 b(As)p 236 4817 1418 4 v 340 4870 a Fj(8)374 -4902 y Ft(Curren)n(tly)-6 b(,)24 b(MAXHOP)f(is)i(set)f(to)g(250)h(whic) -n(h)f(is)h(actually)f(man)n(y)f(times)g(larger)i(than)f(the)f(maxim)n -(um)e(distance)k(in)236 4993 y(the)h(curren)n(t)f(AS)f(net)n(w)n(ork,)i -(whic)n(h)g(is)g(12)g(hops)g([2)q(].)1962 5281 y Fq(10)p -eop -%%Page: 11 11 -11 10 bop 236 399 a Fq(the)27 b(edges)h(are)f(\\relaxed")g(b)m(y)g -(Dijkstra's)g(algorithm,)f(the)h(no)s(des)f(are)i(mo)m(v)m(ed)g(in)m -(to)e(the)h(appropriate)236 511 y(lists.)377 672 y(The)g(DECREASE)p -1073 672 28 4 v 32 w(KEY)f(priorit)m(y)g(queue)g(routine)g(in)f -(Dijkstra's)i(algorithm)f([1)q(])h(is)f(realized)g(b)m(y)236 -784 y(cutting)i(the)g(no)s(de)f(whose)h(k)m(ey)h(is)e(to)h(b)s(e)g -(decreased)g(from)g(its)f(curren)m(t)h(list)e(and)h(app)s(ending)f(it)h -(to)i(its)236 897 y(new)h(list)f(according)i(to)g(the)f(decreased)h(k)m -(ey)h(v)-5 b(alue.)40 b(This)29 b(op)s(eration)h(tak)m(es)h -Fn(O)s Fq(\(1\))h(time.)41 b(Similarly)-8 b(,)236 1010 -y(the)37 b(EXTRA)m(CT)p 864 1010 V 32 w(MIN)g(routine)e(is)h(also)g -(realized)g(in)f Fn(O)s Fq(\(1\))j(time)e(p)s(er)f(no)s(de.)59 -b(F)-8 b(or)37 b(extracting)g(the)236 1123 y(minim)m(um-distance)g -(un\014nished)f(no)s(de,)41 b(the)e(program)g(b)s(egins)f(at)i(list)e -(0)i(and)e(pro)s(ceeds)h(through)236 1236 y(the)c(lists)d(b)m(y)j(pic)m -(king)e(up)g(one)h(no)s(de)g(at)h(a)f(time)g(till)f(it)g(reac)m(hes)j -(the)e(end)g(of)g(list)f(MAXHOP)-8 b(.)35 b(This)236 -1349 y(op)s(eration)30 b(is)f(completed)i(in)e Fn(O)s -Fq(\()p Fl(j)p Fn(V)21 b Fl(j)p Fq(\))30 b(time)h(in)e(total,)i(and)f -(in)f Fn(O)s Fq(\(1\))i(time)f(on)h(a)m(v)m(erage)i(p)s(er)c(no)s(de.) -377 1509 y(In)40 b(this)g(implemen)m(tation)f(of)h(Dijkstra's)h -(algorithm,)h(initialization)37 b(tak)m(es)42 b Fn(O)s -Fq(\()p Fl(j)p Fn(V)21 b Fl(j)p Fq(\))41 b(time,)i(re-)236 -1622 y(laxation)33 b(of)g(edges)h(tak)m(es)h Fn(O)s Fq(\()p -Fl(j)p Fn(E)5 b Fl(j)p Fq(\))34 b(time,)g(and)e(pro)s(cessing)g(of)i -(the)f(no)s(des,)g(not)h(including)29 b(the)34 b(edge)236 -1735 y(relaxations,)c(tak)m(es)i Fn(O)s Fq(\()p Fl(j)p -Fn(V)21 b Fl(j)p Fq(\))31 b(time;)f(giving)g(a)h(total)g(run)m(time)e -(of)i Fn(O)s Fq(\()p Fl(j)p Fn(V)20 b Fl(j)h Fq(+)f Fl(j)p -Fn(E)5 b Fl(j)p Fq(\).)42 b(Running)28 b(the)j(algo-)236 -1848 y(rithm)e(for)h(all)f(source-destination)h(pairs)f(tak)m(es)j -Fn(O)s Fq(\()p Fl(j)p Fn(V)21 b Fl(j)2190 1815 y Fp(2)2250 -1848 y Fq(+)e Fl(j)p Fn(V)i Fl(jj)p Fn(E)5 b Fl(j)p Fq(\))32 -b(in)d(total.)377 2008 y(The)e(In)m(ternet)h(AS)f(graphs)f(are)i(t)m -(ypically)e(sparse)h(and)f(the)i(a)m(v)m(erage)i(degree)e(of)f(the)g -(no)s(des)g(tends)236 2121 y(to)35 b(remain)d(constan)m(t)j(around)e -(4.3)h([2)q(].)51 b(Hence)34 b Fl(j)p Fn(E)5 b Fl(j)32 -b(\031)e Fn(O)s Fq(\()p Fl(j)p Fn(V)21 b Fl(j)p Fq(\))34 -b(and)f(the)h(route)g(computation)g(time)236 2234 y(for)c(the)h(AS)f -(graphs)g(is)f Fn(O)s Fq(\()p Fl(j)p Fn(V)21 b Fl(j)1297 -2201 y Fp(2)1336 2234 y Fq(\))31 b(time.)236 2525 y Fw(Filter)36 -b(Computation)g(Stage)236 2743 y Fq(The)h(\014lters)f(are)i(computed)f -(b)m(y)g(calling)f(the)h(T)-8 b(ra)m(v)m(erseRoute)p -2442 2743 V 35 w(SetFilters)37 b(function,)h(giv)m(en)f(b)s(elo)m(w,) -236 2856 y(for)h(all)e(source-destination)h(pairs.)61 -b(The)37 b(run)m(time)f(of)i(this)e(stage)j(is)e Fn(O)s -Fq(\()p Fn(c)26 b Fl(\001)f(j)p Fn(V)20 b Fl(j)3073 2823 -y Fp(2)3113 2856 y Fq(\),)40 b(for)d Fn(c)h Fq(denoting)236 -2969 y(the)k(a)m(v)m(erage)i(AS)d(path)g(length.)74 b(The)41 -b(a)m(v)m(erage)j(path)e(length)e(in)h(the)g(AS)h(graphs)e(o)m(v)m(er)j -(y)m(ears)f(is)236 3082 y(observ)m(ed)28 b(to)f(b)s(e)g(relativ)m(ely)f -(stable)h(around)g(3.7)h([2],)h(whic)m(h)d(ma)m(y)h(b)s(e)g(tak)m(en)h -(as)g(a)f(constan)m(t)i(factor)f(in)236 3195 y(the)h(asymptotic)f -(notation.)41 b(Hence,)30 b(the)e(run)m(time)f(of)i(the)g(\014lter)e -(computation)h(stage)i(is)e(practically)236 3308 y Fn(O)s -Fq(\()p Fl(j)p Fn(V)21 b Fl(j)467 3275 y Fp(2)507 3308 -y Fq(\).)236 3568 y Fr(T)-9 b(ra)m(v)m(erseRoute)p 906 -3568 32 4 v 39 w(SetFilters\()p Fn(s;)15 b(d)p Fr(\))p -236 3604 1358 4 v 236 3733 a(for)31 b Fq(ev)m(ery)g(hop)f -Fn(x)g Fq(on)g(the)h(path)f(from)g Fn(s)g Fq(to)h Fn(d)402 -3846 y Fr(if)f Fn(x)25 b Fl(2)g Fn(F)567 3959 y Fq(Up)s(date)30 -b(\014lter)g(on)g Fn(x)g Fq(to)h(allo)m(w)f(source)h(address)e -Fn(s)236 4072 y Fr(return)377 4332 y Fq(T)-8 b(o)36 b(set)f(the)g -(\014lter)g(on)f Fn(x)p Fq('s)h(link)e(where)i(it)f(receiv)m(ed)i(a)f -(pac)m(k)m(et)i(from)d Fn(s)p Fq(,)i(the)f(bit)f(corresp)s(onding)236 -4445 y(to)g Fn(s)e Fq(in)g(the)h(bit)f(arra)m(y)i(represen)m(tation)f -(of)g(that)h(\014lter)e(is)g(set)h(to)h(1.)49 b(Moreo)m(v)m(er,)36 -b Fn(s)c Fq(is)g(added)h(to)g(the)236 4558 y(dynamic)c(table)i -(represen)m(tation)f(of)h(the)f(\014lter)g(if)f(it)h(is)f(not)i -(already)f(there.)1962 5281 y(11)p eop -%%Page: 12 12 -12 11 bop 236 399 a Fw(Set)38 b(Computation)e(Stage)236 -617 y Fq(The)h(computation)g(of)g(the)g Fn(S)1296 631 -y Fm(a;t)1420 617 y Fq(sets)g(for)g(a)h(giv)m(en)f(target)h -Fn(t)f Fq(is)f(ac)m(hiev)m(ed)i(b)m(y)f(a)h(call)e(to)i(the)f(Com-)236 -730 y(puteSets)26 b(function,)g(in)f(whic)m(h)g(the)i(ComputeSta)f -(function)f(is)h(called)f(for)h(ev)m(ery)h(attac)m(k)m(er)i -Fn(a)e Fq(exactly)236 843 y(once.)42 b(The)30 b(pseudo-co)s(des)g(for)g -(these)g(t)m(w)m(o)i(functions)d(are)i(as)f(follo)m(ws:)236 -1103 y Fr(ComputeSets\()p Fn(t)p Fr(\))p 236 1139 722 -4 v 236 1269 a(for)h Fq(all)e Fn(a)c Fl(2)g Fn(V)41 b -Fl(\000)20 b(f)p Fn(t)p Fl(g)402 1381 y Fn(S)5 b Fq([)p -Fn(a;)15 b(t)p Fq(])26 b Fl( )f(;)402 1494 y Fn(D)s(one)p -Fq([)p Fn(a)p Fq(])g Fl( )g Fq(0)236 1607 y Fn(S)5 b -Fq([)p Fn(t;)15 b(t)p Fq(])26 b Fl( )f Fn(V)236 1720 -y(D)s(one)p Fq([)p Fn(t)p Fq(])h Fl( )f Fq(1)236 1880 -y(/*)31 b Ff(The)i(main)h(set)e(c)-5 b(omputation)35 -b(p)-5 b(art)33 b Fq(*/)236 1993 y Fr(for)e Fq(all)e -Fn(a)c Fl(2)g Fn(V)402 2106 y Fr(if)30 b Fn(D)s(one)p -Fq([)p Fn(a)p Fq(])25 b(=)g(0)567 2219 y(ComputeSta\()p -Fn(t;)15 b(a)p Fq(\))236 2379 y Fr(if)31 b Fq(egress)f(\014ltering)f -(is)g(on)402 2492 y Fr(for)h Fq(all)f Fn(a)d Fl(2)f Fn(F)567 -2605 y(S)5 b Fq([)p Fn(a;)15 b(t)p Fq(])26 b Fl( )f(f)p -Fn(a)p Fl(g)236 2718 y Fn(S)5 b Fq([)p Fn(t;)15 b(t)p -Fq(])26 b Fl( )f(;)236 2831 y Fr(return)236 3204 y(ComputeSta\()p -Fn(t;)15 b(a)p Fr(\))p 236 3240 772 4 v 236 3369 a Fn(D)s(one)p -Fq([)p Fn(a)p Fq(])26 b Fl( )f Fq(1)236 3482 y Fr(if)31 -b Fn(a)25 b Fq(=)g Fn(t)30 b Fr(or)h Fq(there)f(is)g(no)g(path)g(from)g -Fn(a)g Fq(to)h Fn(t)402 3595 y Fr(return)236 3708 y Fn(b)25 -b Fl( )31 b Fq(next)f(hop)g(from)g Fn(a)g Fq(to)h Fn(t)236 -3821 y Fr(if)g Fn(D)s(one)p Fq([)p Fn(b)p Fq(])25 b(=)g(0)402 -3934 y(ComputeSta\()p Fn(t;)15 b(b)p Fq(\))236 4094 y(/*)31 -b Ff(The)i(S[a,t])g(c)-5 b(omputation)33 b Fq(*/)236 -4207 y Fr(if)e Fn(b)25 b Fl(2)g Fn(F)402 4320 y(S)5 b -Fq([)p Fn(a;)15 b(t)p Fq(])26 b Fl( )f Fn(S)5 b Fq([)p -Fn(b;)15 b(t)p Fq(])21 b Fl(\\)f Fn(F)13 b(il)r(ter)s -Fq([)p Fn(b;)i(a)p Fq(])236 4433 y Fr(else)402 4546 y -Fn(S)5 b Fq([)p Fn(a;)15 b(t)p Fq(])26 b Fl( )f Fn(S)5 -b Fq([)p Fn(b;)15 b(t)p Fq(])236 4706 y Fr(return)236 -4965 y Fq(Regarding)30 b(the)h(run)m(time)e(of)h(these)h(algorithms,)f -(the)g(follo)m(wing)f(can)i(b)s(e)e(said:)1962 5281 y(12)p -eop -%%Page: 13 13 -13 12 bop 373 399 a Fl(\017)45 b Fq(One)39 b(run)f(of)i(the)f -(ComputeSets)g(function,)h(not)g(including)c(the)j(time)g(sp)s(en)m(t)g -(in)f(the)h(Com-)463 511 y(puteSta)31 b(calls,)f(tak)m(es)h -Fn(O)s Fq(\()p Fl(j)p Fn(V)21 b Fl(j)p Fq(\))31 b(time.)373 -699 y Fl(\017)45 b Fq(During)37 b(a)h(call)f(to)i(ComputeSets,)h(the)e -(ComputeSta)f(function)g(is)g(called)g(exactly)h Fl(j)p -Fn(V)21 b Fl(j)k(\000)g Fq(1)463 812 y(times.)373 1000 -y Fl(\017)45 b Fq(Not)c(coun)m(ting)e(the)g(time)g(sp)s(en)m(t)g(in)f -(the)h(recursiv)m(e)g(call)f(to)i(ComputeSta,)i(the)d(run)m(time)f(of) -463 1112 y(one)29 b(call)e(of)h(ComputeSta)g(is)f(dominated)g(b)m(y)h -(the)g(time)f(sp)s(en)m(t)h(in)f(the)h(set)g(cop)m(ying)g(op)s(eration) -463 1225 y Fn(S)5 b Fq([)p Fn(a;)15 b(t)p Fq(])27 b Fl( )e -Fn(S)5 b Fq([)p Fn(b;)15 b(t)p Fq(])31 b(or)f(the)h(set)g(in)m -(tersection)f(op)s(eration)g Fn(S)5 b Fq([)p Fn(a;)15 -b(t)p Fq(])26 b Fl( )f Fn(S)5 b Fq([)p Fn(b;)15 b(t)p -Fq(])21 b Fl(\\)e Fn(F)13 b(il)r(ter)s Fq([)p Fn(b;)i(a)p -Fq(].)373 1413 y Fl(\017)45 b Fq(The)28 b(set)g(cop)m(ying)g(op)s -(eration)g(tak)m(es)h(time)f(prop)s(ortional)d(to)k(the)f(size)g(of)g -(the)g(set)h(copied.)39 b(The)463 1526 y(in)m(tersection)30 -b(op)s(eration)f(tak)m(es)j(time)d(prop)s(ortional)f(to)j(the)f -(\014lter)f(densit)m(y)g(\(i.e.,)i(the)f(n)m(um)m(b)s(er)463 -1639 y(of)h(allo)m(w)m(ed)f(addresses)g(in)f(the)i(\014lter\).)373 -1826 y Fl(\017)45 b Fq(In)33 b(general)h(b)s(oth)f(the)h(set)g(size)g -(and)f(the)h(\014lter)e(densit)m(y)h(are)h Fn(O)s Fq(\()p -Fl(j)p Fn(V)21 b Fl(j)p Fq(\).)51 b(Nev)m(ertheless,)36 -b(on)d(the)463 1939 y(In)m(ternet)h(AS)f(graph)f(with)g(v)m(ertex)i(co) -m(v)m(er)h(\014lter)d(placemen)m(t,)i(b)s(oth)f(tend)g(to)g(gro)m(w)h -(m)m(uc)m(h)f(less)463 2052 y(than)e(linear)d(in)h Fl(j)p -Fn(V)21 b Fl(j)p Fq(.)377 2312 y(Therefore,)27 b(the)f(o)m(v)m(erall)g -(set)h(computation)e(run)m(time)g(is)g Fn(O)s Fq(\()p -Fl(j)p Fn(V)c Fl(j)2567 2279 y Fp(3)2606 2312 y Fq(\))26 -b(and)g(\012\()p Fl(j)p Fn(V)20 b Fl(j)3064 2279 y Fp(2)3104 -2312 y Fq(\).)39 b(F)-8 b(or)27 b(the)f(sp)s(ecial)236 -2425 y(case)32 b(of)f(the)h(In)m(ternet)f(AS)g(graph)f(with)g(v)m -(ertex)i(co)m(v)m(er)h(\014lter)d(placemen)m(t,)h(the)h(run)m(time)d -(empirically)236 2538 y(tends)h(to)h(b)s(e)f(m)m(uc)m(h)g(less)g(than)g -(\002\()p Fl(j)p Fn(V)21 b Fl(j)1566 2505 y Fp(3)1605 -2538 y Fq(\))31 b(and)f(actually)g(closer)g(to)h(\002\()p -Fl(j)p Fn(V)21 b Fl(j)2788 2505 y Fp(2)2827 2538 y Fq(\).)236 -2829 y Fw(Output)38 b(Stage)236 3047 y Fq(The)27 b(Sa)m(v)m(eStats)h -(function)e(computes)g(and)h(sa)m(v)m(es)h(the)f(cardinalities)d(of)j -(the)g Fn(S)2951 3061 y Fm(a;t)3064 3047 y Fq(and)f Fn(C)3302 -3061 y Fm(s;t)3411 3047 y Fq(sets.)40 b(The)236 3160 -y(general)31 b(structure)f(of)g(this)f(function)g(is)h(as)g(follo)m -(ws:)236 3420 y Fr(Sa)m(v)m(eStats\()p Fn(t)p Fr(\))p -236 3456 552 4 v 236 3586 a(for)h Fq(all)e Fn(x)c Fl(2)g -Fn(V)402 3699 y(n)p 462 3699 28 4 v 32 w(S)5 b(t)p Fq([)p -Fn(x)p Fq(])25 b Fl( )h Fq(0)402 3812 y Fn(n)p 462 3812 -V 32 w(C)7 b(t)p Fq([)p Fn(x)p Fq(])25 b Fl( )g Fq(0)236 -3972 y Fr(for)31 b Fq(all)e Fn(a)c Fl(2)g Fn(V)402 4085 -y Fr(for)30 b Fq(all)f Fn(s)c Fl(2)g Fn(S)5 b Fq([)p -Fn(a;)15 b(t)p Fq(])567 4198 y Fn(n)p 627 4198 V 32 w(S)5 -b(t)p Fq([)p Fn(a)p Fq(])g(+)g(+)567 4310 y Fn(n)p 627 -4310 V 32 w(C)i(t)p Fq([)p Fn(s)p Fq(])e(+)g(+)236 4471 -y Fr(write)30 b Fn(n)p 563 4471 V 32 w(S)5 b(t)p Fq(,)30 -b Fn(n)p 799 4471 V 33 w(C)7 b(t)29 b Fq(arra)m(ys)236 -4584 y Fr(return)377 4843 y Fq(The)k(run)m(time)f(of)h(this)g(function) -f(for)h(one)g(target)i Fn(t)e Fq(is)f Fn(O)s Fq(\()p -Fn(c)23 b Fl(\001)f(j)p Fn(V)f Fl(j)p Fq(\),)34 b(for)f -Fn(c)h Fq(denoting)e(the)i(a)m(v)m(erage)236 4956 y(size)28 -b(of)g(the)h Fn(S)718 4970 y Fm(a;t)832 4956 y Fq(sets,)g(and)f -Fn(O)s Fq(\()p Fn(c)16 b Fl(\001)g(j)p Fn(V)k Fl(j)1534 -4923 y Fp(2)1574 4956 y Fq(\))28 b(o)m(v)m(er)h(all)e(targets.)42 -b(In)27 b(general,)i Fn(c)f Fq(is)f Fn(O)s Fq(\()p Fl(j)p -Fn(V)21 b Fl(j)p Fq(\))28 b(and)g(the)g(o)m(v)m(erall)1962 -5281 y(13)p eop -%%Page: 14 14 -14 13 bop 236 399 a Fq(run)m(time)31 b(of)h(this)f(stage)j(is)d -Fn(O)s Fq(\()p Fl(j)p Fn(V)21 b Fl(j)1422 366 y Fp(3)1461 -399 y Fq(\).)47 b(Nev)m(ertheless,)33 b(for)f(the)g(In)m(ternet)h(AS)e -(graphs)h(b)s(et)m(w)m(een)g(1997-)236 511 y(2002)37 -b(with)c(v)m(ertex)j(co)m(v)m(er)g(\014lter)e(placemen)m(t,)i -Fn(c)f Fq(remains)f(quite)g(stable)g(in)g(the)g(in)m(terv)-5 -b(al)34 b(\(4.5,)k(4.8\),)236 624 y(giving)29 b(a)i(run)m(time)e(of)i -Fn(O)s Fq(\()p Fl(j)p Fn(V)21 b Fl(j)1258 591 y Fp(2)1297 -624 y Fq(\))31 b(for)f(the)h(output)f(stage.)236 913 -y Fw(T)-9 b(otal)36 b(Run)m(time)236 1131 y Fq(In)g(general,)i(the)e(o) -m(v)m(erall)h(run)m(time)e(of)i(the)f(sim)m(ulator)f(is)h -Fn(O)s Fq(\()p Fl(j)p Fn(V)20 b Fl(j)2516 1098 y Fp(3)2556 -1131 y Fq(\).)59 b(F)-8 b(or)37 b(the)g(In)m(ternet)f(AS)g(graphs)236 -1244 y(with)c(v)m(ertex)j(co)m(v)m(er)g(\014lter)d(placemen)m(t,)j(the) -f(run)m(time)e(tends)h(to)h(b)s(e)f(closer)g(to)h(\002\()p -Fn(V)3184 1211 y Fp(2)3224 1244 y Fq(\).)50 b(W)-8 b(e)34 -b(presen)m(t)236 1357 y(the)d(exp)s(erimen)m(tal)e(timing)g(results)g -(in)g(Section)h(7.)236 1646 y Fw(6.1)113 b(Maximal)36 -b(Filtering)236 1864 y Fq(The)31 b(default)g(\014ltering)f(p)s -(erformed)g(b)m(y)h(the)h(sim)m(ulator)e(is)h(semi-maximal)f(and)h(the) -h(co)s(de)f(discussed)236 1977 y(so)g(far)f(is)g(for)g(this)f(t)m(yp)s -(e)i(of)f(\014ltering.)39 b(If)30 b(maximal)g(\014ltering)e(is)i(in)f -(e\013ect,)j(the)f(\014lters)e(allo)m(w)h(or)g(drop)236 -2090 y(pac)m(k)m(ets)37 b(with)c(resp)s(ect)i(to)g(their)f(destination) -f(addresses)h(as)h(w)m(ell)e(as)i(their)f(source)h(address.)52 -b(This)236 2203 y(e\013ect)37 b(is)c(ac)m(hiev)m(ed)j(in)d(the)i(sim)m -(ulator)f(b)m(y)h(making)f(the)h(\014lter)f(computation)g -(destination-sp)s(eci\014c,)236 2316 y(as)i(sho)m(wn)f(in)g(the)g(co)s -(de)h(b)s(elo)m(w.)56 b(The)35 b(only)g(c)m(hange)i(is)e(in)f(the)i -(main)f(function;)i(the)f(rest)g(remains)236 2429 y(the)31 -b(same.)236 2673 y Fr(main\(\))p 236 2709 307 4 v 236 -2839 a Fq(GetInputGraph\(\))236 2952 y(Op)s(enOutputFiles\(\))236 -3112 y Fr(for)g Fq(all)e Fn(d)d Fl(2)e Fn(V)402 3225 -y Fq(Dijkstra\()p Fn(d)p Fq(\))236 3385 y Fr(for)31 b -Fq(all)e Fn(t)c Fl(2)g Fn(V)402 3498 y Fq(UnsetAllFilters\(\))402 -3611 y Fr(for)30 b Fq(all)f Fn(s)c Fl(2)g Fn(V)567 3724 -y Fq(T)-8 b(ra)m(v)m(erseRoute)p 1143 3724 28 4 v 35 -w(SetFilters\()p Fn(s;)15 b(t)p Fq(\))402 3837 y(ComputeSets\()p -Fn(t)p Fq(\))402 3950 y(Sa)m(v)m(eStats\()p Fn(t)p Fq(\))236 -4110 y Fr(return)377 4354 y Fq(The)40 b(only)f(o)m(v)m(erhead)i(in)e -(maximal)f(\014ltering)h(is)g(in)m(v)m(oking)g(the)h(UnsetAllFilters)e -(function)h(for)236 4467 y(eac)m(h)44 b(no)s(de)e(once.)78 -b(The)42 b(n)m(um)m(b)s(er)f(of)i(\014lters)e(in)g(the)i(net)m(w)m(ork) -g(is)f Fn(O)s Fq(\()p Fl(j)p Fn(E)5 b Fl(j)p Fq(\).)79 -b(Reseting)42 b(a)h(\014lter)f(in)236 4580 y(general)28 -b(tak)m(es)i Fn(O)s Fq(\()p Fl(j)p Fn(V)20 b Fl(j)p Fq(\))29 -b(time,)g(giving)d(a)j(run)m(time)e(of)h Fn(O)s Fq(\()p -Fl(j)p Fn(V)21 b Fl(jj)p Fn(E)5 b Fl(j)p Fq(\))29 b(for)f(one)g -Fn(t)g Fq(and)f Fn(O)s Fq(\()p Fl(j)p Fn(V)21 b Fl(j)3268 -4547 y Fp(2)3308 4580 y Fl(j)p Fn(E)5 b Fl(j)p Fq(\))29 -b(o)m(v)m(erall.)236 4693 y(In)37 b(In)m(ternet)h(AS)g(graphs,)h -Fl(j)p Fn(E)5 b Fl(j)38 b Fq(=)f Fn(O)s Fq(\()p Fl(j)p -Fn(V)21 b Fl(j)p Fq(\),)41 b(hence)c(the)h(run)m(time)f(b)s(ecomes)h -Fn(O)s Fq(\()p Fl(j)p Fn(V)21 b Fl(j)3170 4660 y Fp(3)3209 -4693 y Fq(\).)63 b(In)37 b(the)h(case)236 4806 y(of)i(a)f(v)m(ertex)i -(co)m(v)m(er)g(\014lter)d(placemen)m(t,)43 b(the)c(a)m(v)m(erage)j -(\014lter)d(densit)m(y)f(tends)h(to)h(b)s(e)f(appro)m(ximately)236 -4919 y(constan)m(t,)c(as)d(discussed)e(in)h(the)i(set)g(computation)f -(stage)i(ab)s(o)m(v)m(e.)47 b(In)32 b(that)h(case,)h(the)e(o)m(v)m -(erall)h(time)236 5032 y(sp)s(en)m(t)d(in)f(UnsetAllFilters)g(is)g -(appro)m(ximately)h Fn(O)s Fq(\()p Fl(j)p Fn(V)20 b Fl(j)2142 -4999 y Fp(2)2182 5032 y Fq(\).)1962 5281 y(14)p eop -%%Page: 15 15 -15 14 bop 236 399 a Fs(7)135 b(System)45 b(Requiremen)l(ts)236 -652 y Fw(7.1)113 b(Space)38 b(Complexit)m(y)236 871 y -Fq(T)-8 b(able)32 b(1)h(sho)m(ws)f(the)g(memory)g(usage)h(of)f(the)h -(sim)m(ulator)e(for)h(the)g(In)m(ternet)h(AS)f(graphs)f(of)i(Jan)m -(uary)236 984 y(1998{2002.)52 b(The)32 b(results)g(suggest)i(an)e -Fn(O)s Fq(\()p Fl(j)p Fn(V)21 b Fl(j)1880 951 y Fp(2)1920 -984 y Fq(\))33 b(increase)f(in)g(memory)g(usage,)j(dominated)d(b)m(y)g -(the)236 1097 y(routing)e(tables.)p 907 1217 2202 4 v -905 1330 4 113 v 1408 1296 a(Y)-8 b(ear)p 1638 1330 V -1655 1330 V 117 w(1998)p 1936 1330 V 101 w(1999)p 2217 -1330 V 102 w(2000)p 2499 1330 V 101 w(2001)p 2780 1330 -V 125 w(2002)p 3107 1330 V 907 1334 2202 4 v 905 1446 -4 113 v 1466 1413 a Fl(j)p Fn(V)21 b Fl(j)p 1638 1446 -V 1655 1446 V 116 w Fq(3213)p 1936 1446 V 101 w(4501)p -2217 1446 V 102 w(6582)p 2499 1446 V 101 w(8063)p 2780 -1446 V 102 w(12517)p 3107 1446 V 907 1450 2202 4 v 905 -1563 4 113 v 957 1529 a(Mem.)31 b(\(MBytes\))p 1638 1563 -V 1655 1563 V 163 w(46)p 1936 1563 V 192 w(88)p 2217 -1563 V 169 w(186)p 2499 1563 V 146 w(279)p 2780 1563 -V 169 w(669)p 3107 1563 V 907 1566 2202 4 v 323 1715 -a Fv(T)-8 b(able)32 b(1:)k Fz(The)28 b(memory)f(usage)f(of)i(the)g -(static)f(DPF)h(sim)n(ulator)e(for)h(Jan)n(uary)f(1998{2002)d(AS)28 -b(graphs.)236 2057 y Fw(7.2)113 b(Time)35 b(Complexit)m(y)236 -2275 y Fq(T)-8 b(able)22 b(2)h(sho)m(ws)f(the)h(running)d(time)i(of)h -(the)f(sim)m(ulator)g(on)g(Jan)m(uary)g(1998{2002)27 -b(In)m(ternet)c(AS)f(graphs.)236 2388 y(The)i(timings)f(are)j(tak)m(en) -f(on)g(a)g(200)h(MHz)g(Ultra-2)f(Sparc)f(Station)g(with)g(512)i(megab)m -(ytes)g(of)f(ph)m(ysical)236 2501 y(and)h(512)h(megab)m(ytes)h(of)e -(virtual)f(memory)-8 b(.)39 b(The)26 b(results)f(suggest)i(a)g(running) -c(time)j(pattern)g(sligh)m(tly)236 2614 y(larger)k(than)g -Fn(O)s Fq(\()p Fn(V)887 2581 y Fp(2)926 2614 y Fq(\).)p -840 2740 2336 4 v 838 2853 4 113 v 1474 2819 a(Y)-8 b(ear)p -1704 2853 V 1721 2853 V 118 w(1998)p 2003 2853 V 101 -w(1999)p 2284 2853 V 101 w(2000)p 2565 2853 V 102 w(2001)p -2847 2853 V 147 w(2002)p 3174 2853 V 840 2856 2336 4 -v 838 2969 4 113 v 1533 2935 a Fl(j)p Fn(V)20 b Fl(j)p -1704 2969 V 1721 2969 V 117 w Fq(3213)p 2003 2969 V 101 -w(4501)p 2284 2969 V 101 w(6582)p 2565 2969 V 102 w(8063)p -2847 2969 V 101 w(12517)p 3174 2969 V 840 2972 2336 4 -v 838 3085 4 113 v 980 3051 a(CPU)30 b(Time)g(\(sec.\))p -1704 3085 V 1721 3085 V 208 w(97)p 2003 3085 V 146 w(201)p -2284 3085 V 147 w(449)p 2565 3085 V 146 w(720)p 2847 -3085 V 147 w(1904)p 3174 3085 V 840 3088 2336 4 v 838 -3201 4 113 v 890 3168 a(System)g(Time)g(\(sec.\))p 1704 -3201 V 1721 3201 V 254 w(1)p 2003 3201 V 236 w(3)p 2284 -3201 V 237 w(6)p 2565 3201 V 191 w(12)p 2847 3201 V 237 -w(59)p 3174 3201 V 840 3205 2336 4 v 838 3318 4 113 v -994 3284 a(W)-8 b(all)30 b(Time)g(\(sec.\))p 1704 3318 -V 1721 3318 V 163 w(100)p 2003 3318 V 146 w(207)p 2284 -3318 V 147 w(464)p 2565 3318 V 146 w(753)p 2847 3318 -V 147 w(3623)p 3174 3318 V 840 3321 2336 4 v 236 3470 -a Fv(T)-8 b(able)37 b(2:)45 b Fz(The)32 b(running)f(time)i(of)e(the)i -(static)e(DPF)h(sim)n(ulator)f(for)g(Jan)n(uary)f(1998{2002)e(AS)k -(graphs.)48 b(All)236 3570 y(timing)28 b(data)f(are)g(in)h(seconds.)377 -3775 y Fq(In)41 b(the)h(sim)m(ulation)d(exp)s(erimen)m(ts)h(summarized) -g(in)g(T)-8 b(able)41 b(2,)k(ab)s(out)c(2\045)g(of)h(the)f(sim)m -(ulation)236 3888 y(time)33 b(is)e(sp)s(en)m(t)i(in)e(the)i -(initialization)c(stage,)35 b(14\045)f(in)d(the)i(route)g(computation)g -(stage,)i(25\045)e(in)e(the)236 4001 y(\014lter)h(construction)h -(stage,)j(53\045)d(in)f(the)i(set)f(computation)g(stage,)j(and)d(6\045) -g(in)f(the)h(output)g(stage.)236 4114 y(The)d(large)f(di\013erence)h -(in)e(the)i(CPU)g(time)f(and)g(the)h(elapsed)g(time)f(in)g(the)h(2002)h -(data)g(is)e(due)g(to)h(the)236 4227 y(program)g(space's)h(not)g -(\014tting)f(in)m(to)g(the)h(ph)m(ysical)e(memory)h(for)g(the)h(2002)h -(AS)e(graph.)236 4561 y Fs(References)236 4801 y Fq([1])47 -b(Thomas)c(H.)h(Cormen,)j(Charles)42 b(E.)i(Leiserson,)j(and)c(Ronald)g -(L.)h(Riv)m(est.)80 b Ff(Intr)-5 b(o)g(duction)48 b(to)378 -4914 y(A)n(lgorithms)p Fq(.)41 b(MIT)30 b(Press,)h(McGra)m(w-Hill,)f -(1990.)1962 5281 y(15)p eop -%%Page: 16 16 -16 15 bop 236 399 a Fq([2])47 b(Z.)33 b(Ge,)i(D.)f(R.)g(Figueiredo,)g -(S.)f(Jaiw)m(al,)h(and)f(L.)h(Gao.)51 b(On)33 b(the)g(hierarc)m(hical)f -(structure)i(of)f(the)378 511 y(logical)c(In)m(ternet)i(graph.)40 -b(In)30 b Ff(Pr)-5 b(o)g(c.)33 b(ITCOM'2001)p Fq(,)f(2001.)236 -699 y([3])47 b(Kihong)19 b(P)m(ark)j(and)e(Heejo)i(Lee.)k(A)21 -b(proactiv)m(e)h(approac)m(h)f(to)h(distributed)c(DoS)j(attac)m(k)j -(prev)m(en)m(tion)378 812 y(using)31 b(route-based)j(pac)m(k)m(et)h -(\014ltering.)47 b(T)-8 b(ec)m(hnical)33 b(Rep)s(ort)g(CSD-TR)f -(00-017,)37 b(Departmen)m(t)d(of)378 925 y(Computer)29 -b(Science,)i(Purdue)d(Univ)m(ersit)m(y)-8 b(,)31 b(Decem)m(b)s(er)g -(2000.)236 1112 y([4])47 b(Kihong)35 b(P)m(ark)h(and)g(Heejo)i(Lee.)59 -b(On)35 b(the)i(e\013ectiv)m(eness)h(of)e(route-based)h(pac)m(k)m(et)h -(\014ltering)d(for)378 1225 y(distributed)j(DoS)j(attac)m(k)i(prev)m -(en)m(tion)e(in)e(p)s(o)m(w)m(er-la)m(w)i(in)m(ternets.)72 -b(In)40 b Ff(Pr)-5 b(o)g(c.)43 b(SIGCOMM'01)p Fq(,)378 -1338 y(August)30 b(2001.)236 1672 y Fs(A)134 b(Multi-P)l(ath)46 -b(Routing)236 1922 y Fq(The)36 b(routing)f(sc)m(heme)i(used)e(b)m(y)h -(the)h(dpf)e(sim)m(ulator)g(is)g(single-path|that)h(is,)h(at)f(eac)m(h) -i(no)s(de)d(the)236 2035 y(next)k(hop)f(to)h(forw)m(ard)f(a)h(pac)m(k)m -(et)h(for)e(a)h(giv)m(en)g(destination)e(is)g(unique|whic)m(h)f(is)h -(also)i(the)f(t)m(yp)s(e)236 2148 y(of)k(routing)f(BGP)i(p)s(erforms.) -74 b(Nev)m(ertheless,)45 b(w)m(e)e(pro)m(vide)e(an)h(additional)d(to)s -(ol)3147 2115 y Fp(9)3229 2148 y Fq(that)j(supp)s(orts)236 -2261 y(m)m(ulti-path)36 b(routing)g(for)g(those)i(who)e(are)i(in)m -(terested)f(in)e(exp)s(erimen)m(ting)h(with)f(DPF)j(in)d(a)j(m)m(ulti-) -236 2374 y(path)28 b(routing)g(en)m(vironmen)m(t)g(where)g(a)h(no)s(de) -f(ma)m(y)h(ha)m(v)m(e)h(more)e(than)g(one)h(alternativ)m(e)g(next)g -(hop)f(for)236 2487 y(sending)h(a)i(pac)m(k)m(et)h(to)f(a)g -(destination.)377 2647 y(In)k(the)g(rest)g(of)g(this)f(section,)i(w)m -(e)g(discuss)d(the)i(di\013erences)f(of)h(the)g(m)m(ulti-path)f(to)s -(ol)h(from)f(the)236 2760 y(original)29 b(single-path)g(to)s(ol.)236 -3050 y Fw(A.1)112 b(Data)38 b(Structures)236 3269 y Fq(The)25 -b(only)g(c)m(hange)h(in)e(the)i(data)g(structures)e(is)h(in)f -Fo(RTABLE)p 2265 3269 29 4 v 33 w(ENTRY)p Fq(,)g(whic)m(h)g(is)g(no)m -(w)i(a)f(list)f(of)i Fo(EDGE)p 3621 3269 V 33 w(ID)p -Fq(s)236 3382 y(instead)k(of)g(a)h(single)e Fo(EDGE)p -1180 3382 V 33 w(ID)p Fq(.)236 3673 y Fw(A.2)112 b(The)38 -b(Program)e(Structure)236 3892 y Fq(The)21 b(outline)g(of)h(the)g(m)m -(ulti-path)e(program)i(is)f(the)g(same)i(as)f(its)f(single-path)f(coun) -m(terpart,)25 b(consisting)236 4005 y(of)38 b(the)f(\014v)m(e)g(stages) -i(discussed)c(in)h(Section)h(2.)62 b(The)36 b(con)m(ten)m(ts)j(of)f -(these)f(stages)i(are)e(quite)g(similar)236 4118 y(to)s(o.)77 -b(In)42 b(particular,)i(the)e(input)e(and)i(output)g(stages)h(are)g -(just)e(the)i(same;)49 b(whereas)42 b(the)g(route)236 -4231 y(computation,)31 b(\014lter)e(computation,)i(and)f(set)g -(computation)h(stages)g(are)g(sligh)m(tly)e(di\013eren)m(t.)377 -4391 y(The)38 b(route)g(computation)g(stage)i(in)c(m)m(ulti-path)h(dpf) -g(is)g(di\013eren)m(t)h(in)e(that)j(the)f(only)f(routing)236 -4504 y(option)f(allo)m(w)m(ed)g(is)f(to)i(upload)e(and)g(use)h -(pre-computed)g(routes.)58 b(This)34 b(stage)k(of)e(the)h(program)e(is) -236 4616 y(v)m(ery)i(similar)c(to)k(the)g(single-path)e(dpf)f(run)h -(with)g(the)h Ff(r)-5 b(oute)44 b Fq(=)36 b(2)h(option.)57 -b(The)36 b(main)f(di\013erence)p 236 4678 1418 4 v 340 -4732 a Fj(9)374 4763 y Ft(Actually)-6 b(,)27 b(single-path)h(routing)f -(is)h(just)f(a)g(sp)r(ecial)i(case)f(of)f(m)n(ulti-path)f(routing)h -(and)g(it)g(is)g(p)r(ossible)h(to)g(p)r(erform)236 4855 -y(single)d(path)e(routing)h(with)g(the)f(m)n(ulti-path)f(to)r(ol.)35 -b(Ho)n(w)n(ev)n(er,)24 b(this)g(w)n(ould)g(result)g(in)f(an)h(increase) -h(in)e(the)h(run)n(time)e(and)236 4946 y(memory)i(usage)i(of)h(the)e -(single-path)h(sim)n(ulations,)h(whic)n(h)e(w)n(e)h(c)n(hose)g(to)g(a)n -(v)n(oid)g(b)n(y)f(separating)h(the)g(t)n(w)n(o)g(to)r(ols.)1962 -5281 y Fq(16)p eop -%%Page: 17 17 -17 16 bop 236 399 a Fq(b)s(et)m(w)m(een)27 b(the)g(t)m(w)m(o)h(is)e -(that)h(the)g(m)m(ulti-path)e(v)m(ersion)h(allo)m(ws)g(the)h(uploaded)e -(routes)i(to)g(include)d(more)236 511 y(than)30 b(one)h(en)m(try)g(p)s -(er)e(source-destination)h(pair.)377 672 y(The)g(\014lter)e -(computation)i(stage)h(w)m(orks)f(v)m(ery)g(similarly)c(to)31 -b(the)e(single-path)g(case)i(as)f(w)m(ell:)39 b(The)236 -784 y(path)26 b(b)s(et)m(w)m(een)g(ev)m(ery)h(source-destination)e -(pair)f(is)h(tra)m(v)m(ersed)i(and)e(the)h(\014lters)e(on)i(that)g -(path)g(are)g(set)236 897 y(to)35 b(allo)m(w)e(the)h(giv)m(en)g(source) -g(address.)51 b(The)33 b(main)g(di\013erence)h(from)f(the)h -(single-path)f(case)i(is)e(that)236 1010 y(the)e(path)f(tra)m(v)m -(ersal)h(is)f(done)g(on)g(m)m(ultiple)e(paths)i(for)g(eac)m(h)i -(source-destination)d(pair.)377 1170 y(The)44 b(set)g(computation)f -(phase)h(is)f(a)h(generalization)f(of)h(the)g(single-path)e(case:)69 -b(The)43 b(set)h(of)236 1283 y(sp)s(o)s(ofable)34 b(addresses)h(is)f -(computed)i(for)f(eac)m(h)h(next)g(hop)f(and)f(then)h(their)g(union)e -(is)i(tak)m(en.)57 b(That)236 1396 y(is,)29 b(if)g Fn(H)511 -1410 y Fm(x;y)640 1396 y Fq(denotes)h(the)g(set)g(of)f(next)h(hops)f -(from)g Fn(x)g Fq(for)g(reac)m(hing)h(the)g(destination)e -Fn(y)s Fq(,)i(the)f Fn(S)3516 1410 y Fm(a;t)3632 1396 -y Fq(sets)236 1509 y(are)i(computed)f(recursiv)m(ely)f(as)1686 -1633 y Fn(S)1742 1647 y Fm(a;t)1853 1633 y Fq(=)2011 -1552 y Fk([)1949 1737 y Fm(b)p Fb(2)p Fm(H)2084 1745 -y Fh(a;t)2180 1633 y Fn(S)2241 1585 y Fp(\()p Fm(b)p -Fp(\))2236 1656 y Fm(a;t)236 1888 y Fq(where)1023 2056 -y Fn(S)1084 2008 y Fp(\()p Fm(b)p Fp(\))1079 2079 y Fm(a;t)1223 -2056 y Fq(=)1345 1912 y Fk(\()1734 1976 y Fn(S)1790 1991 -y Fm(b;t)1869 1976 y Fn(;)159 b Fq(if)30 b Fn(b)g Fq(is)f(not)i(a)g -(\014lter)e(no)s(de)1453 2136 y Fn(F)1511 2151 y Fm(a;b)1638 -2136 y Fl(\\)35 b Fn(S)1790 2151 y Fm(b;t)1869 2136 y -Fn(;)159 b Fq(if)30 b Fn(b)g Fq(is)f(a)i(\014lter)f(no)s(de)236 -2295 y(for)g(eac)m(h)i Fn(b)25 b Fl(2)g Fn(H)806 2309 -y Fm(a;t)892 2295 y Fq(.)236 2586 y Fw(A.3)112 b(Running)37 -b(the)h(Sim)m(ulator)236 2805 y Fq(The)32 b(argumen)m(ts)g(of)g(the)g -(dpf)p 1267 2805 28 4 v 32 w(mp)f(program)h(are)g(iden)m(tical)f(to)i -(those)f(of)h(the)f(original)e(dpf)h(program)236 2917 -y(except)h(for)f(the)g Ff(r)-5 b(oute)39 b Fq(argumen)m(t)31 -b(v)-5 b(ariable.)42 b(This)29 b(argumen)m(t)j(v)-5 b(ariable)29 -b(do)s(es)i(not)g(exist)g(in)f(dpf)p 3627 2917 V 31 w(mp)236 -3030 y(since)g(the)h(only)e(routing)g(sc)m(heme)j(supp)s(orted)c(is)h -(the)i(uploading)d(of)j(pre-computed)f(routes.)377 3191 -y(The)g(command)g(to)h(run)e(the)i(to)s(ol)f(from)g(the)h(home)f -(directory)g(of)h(the)f(sim)m(ulator)f(is)236 3398 y -Fo(\045)95 b(dpf/MP/dpf)p 865 3398 29 4 v 32 w(mp)30 -b Ff(gr)-5 b(aph)39 b(c)-5 b(over)41 b(tr)-5 b(ans)39 -b(max)j(e)-5 b(gr)g(ess)39 b(sets)236 3605 y Fq(where)g(the)g(argumen)m -(t)g(v)-5 b(ariables)38 b Ff(gr)-5 b(aph)p Fq(,)43 b -Ff(c)-5 b(over)p Fq(,)42 b Ff(tr)-5 b(ans)p Fq(,)42 b -Ff(max)p Fq(,)h Ff(e)-5 b(gr)g(ess)p Fq(,)42 b Ff(sets)k -Fq(are)40 b(as)f(explained)e(in)236 3718 y(Section)30 -b(5.3.)236 4052 y Fs(B)134 b(Example)46 b(Gn)l(uplot)f(T)-11 -b(emplates)236 4302 y Fq(In)30 b(this)f(section,)h(w)m(e)h(giv)m(e)f(t) -m(w)m(o)i(example)d(gn)m(uplot)h(templates)g(that)h(can)f(b)s(e)g(used) -f(in)g(analyzing)g(the)236 4415 y(output)h(of)h(the)f(DPF)h(sim)m -(ulator.)236 4706 y Fw(B.1)112 b(T)-9 b(emplate)36 b(for)i -FA(\010)1252 4721 y Fp(2)1292 4706 y FA(\(1\))236 4925 -y Fq(The)30 b(follo)m(wing)f(gn)m(uplot)h(template)h(creates)g(Figure)f -(1)h(in)e(\014le)g(phi2.1.eps)h(in)f(EPS)h(format.)1962 -5281 y(17)p eop -%%Page: 18 18 -18 17 bop 236 399 a Fo(set)47 b(terminal)f(postscript)f(eps)i(enhanced) -e("Times-Roman")f(20)236 511 y(set)j(output)f('phi2.1.eps')236 -624 y(set)h(data)g(style)f(boxes)236 737 y(set)h(nokey)236 -850 y(set)g(yrange)f([0:1])236 963 y(set)h(ytics)f(0,.1,1)236 -1076 y(set)h(xtics)f(1997,)h(1,)g(2002)236 1189 y(set)g(xrange)f -([1996:2003])236 1302 y(set)h(ylabel)f('{/Symbol)f(F}_2\(1\)')236 -1415 y(set)i(xlabel)f('Year')236 1528 y(set)h(boxwidth)f(.4)236 -1641 y(plot)h('phi2.1.dat')377 1884 y Fq(The)30 b(con)m(ten)m(ts)i(of)f -(an)f(example)g(phi2.1.dat)g(\014le)g(is)f(as)i(follo)m(ws:)236 -2105 y Fo(1997)47 b(0.969154)236 2218 y(1998)g(0.969499)236 -2331 y(1999)g(0.967785)236 2444 y(2000)g(0.974172)236 -2557 y(2001)g(0.972839)236 2669 y(2002)g(0.979068)377 -2891 y Fq(The)30 b(output)g(is)g(sho)m(wn)f(in)g(Figure)h(1.)768 -4739 y @beginspecial 50 @llx 50 @lly 410 @urx 302 @ury -2976 @rwi @setspecial -%%BeginDocument: phi2.1.eps -%!PS-Adobe-2.0 EPSF-2.0 -%%Title: phi2.1.as97-02.eps -%%Creator: gnuplot 3.7 patchlevel 1 -%%CreationDate: Thu Feb 21 15:34:10 2002 -%%DocumentFonts: (atend) -%%BoundingBox: 50 50 410 302 -%%Orientation: Portrait -%%EndComments -/gnudict 256 dict def -gnudict begin -/Color false def -/Solid false def -/gnulinewidth 5.000 def -/userlinewidth gnulinewidth def -/vshift -66 def -/dl {10 mul} def -/hpt_ 31.5 def -/vpt_ 31.5 def -/hpt hpt_ def -/vpt vpt_ def -/M {moveto} bind def -/L {lineto} bind def -/R {rmoveto} bind def -/V {rlineto} bind def -/vpt2 vpt 2 mul def -/hpt2 hpt 2 mul def -/Lshow { currentpoint stroke M - 0 vshift R show } def -/Rshow { currentpoint stroke M - dup stringwidth pop neg vshift R show } def -/Cshow { currentpoint stroke M - dup stringwidth pop -2 div vshift R show } def -/UP { dup vpt_ mul /vpt exch def hpt_ mul /hpt exch def - /hpt2 hpt 2 mul def /vpt2 vpt 2 mul def } def -/DL { Color {setrgbcolor Solid {pop []} if 0 setdash } - {pop pop pop Solid {pop []} if 0 setdash} ifelse } def -/BL { stroke userlinewidth 2 mul setlinewidth } def -/AL { stroke userlinewidth 2 div setlinewidth } def -/UL { dup gnulinewidth mul /userlinewidth exch def - 10 mul /udl exch def } def -/PL { stroke userlinewidth setlinewidth } def -/LTb { BL [] 0 0 0 DL } def -/LTa { AL [1 udl mul 2 udl mul] 0 setdash 0 0 0 setrgbcolor } def -/LT0 { PL [] 1 0 0 DL } def -/LT1 { PL [4 dl 2 dl] 0 1 0 DL } def -/LT2 { PL [2 dl 3 dl] 0 0 1 DL } def -/LT3 { PL [1 dl 1.5 dl] 1 0 1 DL } def -/LT4 { PL [5 dl 2 dl 1 dl 2 dl] 0 1 1 DL } def -/LT5 { PL [4 dl 3 dl 1 dl 3 dl] 1 1 0 DL } def -/LT6 { PL [2 dl 2 dl 2 dl 4 dl] 0 0 0 DL } def -/LT7 { PL [2 dl 2 dl 2 dl 2 dl 2 dl 4 dl] 1 0.3 0 DL } def -/LT8 { PL [2 dl 2 dl 2 dl 2 dl 2 dl 2 dl 2 dl 4 dl] 0.5 0.5 0.5 DL } def -/Pnt { stroke [] 0 setdash - gsave 1 setlinecap M 0 0 V stroke grestore } def -/Dia { stroke [] 0 setdash 2 copy vpt add M - hpt neg vpt neg V hpt vpt neg V - hpt vpt V hpt neg vpt V closepath stroke - Pnt } def -/Pls { stroke [] 0 setdash vpt sub M 0 vpt2 V - currentpoint stroke M - hpt neg vpt neg R hpt2 0 V stroke - } def -/Box { stroke [] 0 setdash 2 copy exch hpt sub exch vpt add M - 0 vpt2 neg V hpt2 0 V 0 vpt2 V - hpt2 neg 0 V closepath stroke - Pnt } def -/Crs { stroke [] 0 setdash exch hpt sub exch vpt add M - hpt2 vpt2 neg V currentpoint stroke M - hpt2 neg 0 R hpt2 vpt2 V stroke } def -/TriU { stroke [] 0 setdash 2 copy vpt 1.12 mul add M - hpt neg vpt -1.62 mul V - hpt 2 mul 0 V - hpt neg vpt 1.62 mul V closepath stroke - Pnt } def -/Star { 2 copy Pls Crs } def -/BoxF { stroke [] 0 setdash exch hpt sub exch vpt add M - 0 vpt2 neg V hpt2 0 V 0 vpt2 V - hpt2 neg 0 V closepath fill } def -/TriUF { stroke [] 0 setdash vpt 1.12 mul add M - hpt neg vpt -1.62 mul V - hpt 2 mul 0 V - hpt neg vpt 1.62 mul V closepath fill } def -/TriD { stroke [] 0 setdash 2 copy vpt 1.12 mul sub M - hpt neg vpt 1.62 mul V - hpt 2 mul 0 V - hpt neg vpt -1.62 mul V closepath stroke - Pnt } def -/TriDF { stroke [] 0 setdash vpt 1.12 mul sub M - hpt neg vpt 1.62 mul V - hpt 2 mul 0 V - hpt neg vpt -1.62 mul V closepath fill} def -/DiaF { stroke [] 0 setdash vpt add M - hpt neg vpt neg V hpt vpt neg V - hpt vpt V hpt neg vpt V closepath fill } def -/Pent { stroke [] 0 setdash 2 copy gsave - translate 0 hpt M 4 {72 rotate 0 hpt L} repeat - closepath stroke grestore Pnt } def -/PentF { stroke [] 0 setdash gsave - translate 0 hpt M 4 {72 rotate 0 hpt L} repeat - closepath fill grestore } def -/Circle { stroke [] 0 setdash 2 copy - hpt 0 360 arc stroke Pnt } def -/CircleF { stroke [] 0 setdash hpt 0 360 arc fill } def -/C0 { BL [] 0 setdash 2 copy moveto vpt 90 450 arc } bind def -/C1 { BL [] 0 setdash 2 copy moveto - 2 copy vpt 0 90 arc closepath fill - vpt 0 360 arc closepath } bind def -/C2 { BL [] 0 setdash 2 copy moveto - 2 copy vpt 90 180 arc closepath fill - vpt 0 360 arc closepath } bind def -/C3 { BL [] 0 setdash 2 copy moveto - 2 copy vpt 0 180 arc closepath fill - vpt 0 360 arc closepath } bind def -/C4 { BL [] 0 setdash 2 copy moveto - 2 copy vpt 180 270 arc closepath fill - vpt 0 360 arc closepath } bind def -/C5 { BL [] 0 setdash 2 copy moveto - 2 copy vpt 0 90 arc - 2 copy moveto - 2 copy vpt 180 270 arc closepath fill - vpt 0 360 arc } bind def -/C6 { BL [] 0 setdash 2 copy moveto - 2 copy vpt 90 270 arc closepath fill - vpt 0 360 arc closepath } bind def -/C7 { BL [] 0 setdash 2 copy moveto - 2 copy vpt 0 270 arc closepath fill - vpt 0 360 arc closepath } bind def -/C8 { BL [] 0 setdash 2 copy moveto - 2 copy vpt 270 360 arc closepath fill - vpt 0 360 arc closepath } bind def -/C9 { BL [] 0 setdash 2 copy moveto - 2 copy vpt 270 450 arc closepath fill - vpt 0 360 arc closepath } bind def -/C10 { BL [] 0 setdash 2 copy 2 copy moveto vpt 270 360 arc closepath fill - 2 copy moveto - 2 copy vpt 90 180 arc closepath fill - vpt 0 360 arc closepath } bind def -/C11 { BL [] 0 setdash 2 copy moveto - 2 copy vpt 0 180 arc closepath fill - 2 copy moveto - 2 copy vpt 270 360 arc closepath fill - vpt 0 360 arc closepath } bind def -/C12 { BL [] 0 setdash 2 copy moveto - 2 copy vpt 180 360 arc closepath fill - vpt 0 360 arc closepath } bind def -/C13 { BL [] 0 setdash 2 copy moveto - 2 copy vpt 0 90 arc closepath fill - 2 copy moveto - 2 copy vpt 180 360 arc closepath fill - vpt 0 360 arc closepath } bind def -/C14 { BL [] 0 setdash 2 copy moveto - 2 copy vpt 90 360 arc closepath fill - vpt 0 360 arc } bind def -/C15 { BL [] 0 setdash 2 copy vpt 0 360 arc closepath fill - vpt 0 360 arc closepath } bind def -/Rec { newpath 4 2 roll moveto 1 index 0 rlineto 0 exch rlineto - neg 0 rlineto closepath } bind def -/Square { dup Rec } bind def -/Bsquare { vpt sub exch vpt sub exch vpt2 Square } bind def -/S0 { BL [] 0 setdash 2 copy moveto 0 vpt rlineto BL Bsquare } bind def -/S1 { BL [] 0 setdash 2 copy vpt Square fill Bsquare } bind def -/S2 { BL [] 0 setdash 2 copy exch vpt sub exch vpt Square fill Bsquare } bind def -/S3 { BL [] 0 setdash 2 copy exch vpt sub exch vpt2 vpt Rec fill Bsquare } bind def -/S4 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt Square fill Bsquare } bind def -/S5 { BL [] 0 setdash 2 copy 2 copy vpt Square fill - exch vpt sub exch vpt sub vpt Square fill Bsquare } bind def -/S6 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill Bsquare } bind def -/S7 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill - 2 copy vpt Square fill - Bsquare } bind def -/S8 { BL [] 0 setdash 2 copy vpt sub vpt Square fill Bsquare } bind def -/S9 { BL [] 0 setdash 2 copy vpt sub vpt vpt2 Rec fill Bsquare } bind def -/S10 { BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt Square fill - Bsquare } bind def -/S11 { BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt2 vpt Rec fill - Bsquare } bind def -/S12 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill Bsquare } bind def -/S13 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill - 2 copy vpt Square fill Bsquare } bind def -/S14 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill - 2 copy exch vpt sub exch vpt Square fill Bsquare } bind def -/S15 { BL [] 0 setdash 2 copy Bsquare fill Bsquare } bind def -/D0 { gsave translate 45 rotate 0 0 S0 stroke grestore } bind def -/D1 { gsave translate 45 rotate 0 0 S1 stroke grestore } bind def -/D2 { gsave translate 45 rotate 0 0 S2 stroke grestore } bind def -/D3 { gsave translate 45 rotate 0 0 S3 stroke grestore } bind def -/D4 { gsave translate 45 rotate 0 0 S4 stroke grestore } bind def -/D5 { gsave translate 45 rotate 0 0 S5 stroke grestore } bind def -/D6 { gsave translate 45 rotate 0 0 S6 stroke grestore } bind def -/D7 { gsave translate 45 rotate 0 0 S7 stroke grestore } bind def -/D8 { gsave translate 45 rotate 0 0 S8 stroke grestore } bind def -/D9 { gsave translate 45 rotate 0 0 S9 stroke grestore } bind def -/D10 { gsave translate 45 rotate 0 0 S10 stroke grestore } bind def -/D11 { gsave translate 45 rotate 0 0 S11 stroke grestore } bind def -/D12 { gsave translate 45 rotate 0 0 S12 stroke grestore } bind def -/D13 { gsave translate 45 rotate 0 0 S13 stroke grestore } bind def -/D14 { gsave translate 45 rotate 0 0 S14 stroke grestore } bind def -/D15 { gsave translate 45 rotate 0 0 S15 stroke grestore } bind def -/DiaE { stroke [] 0 setdash vpt add M - hpt neg vpt neg V hpt vpt neg V - hpt vpt V hpt neg vpt V closepath stroke } def -/BoxE { stroke [] 0 setdash exch hpt sub exch vpt add M - 0 vpt2 neg V hpt2 0 V 0 vpt2 V - hpt2 neg 0 V closepath stroke } def -/TriUE { stroke [] 0 setdash vpt 1.12 mul add M - hpt neg vpt -1.62 mul V - hpt 2 mul 0 V - hpt neg vpt 1.62 mul V closepath stroke } def -/TriDE { stroke [] 0 setdash vpt 1.12 mul sub M - hpt neg vpt 1.62 mul V - hpt 2 mul 0 V - hpt neg vpt -1.62 mul V closepath stroke } def -/PentE { stroke [] 0 setdash gsave - translate 0 hpt M 4 {72 rotate 0 hpt L} repeat - closepath stroke grestore } def -/CircE { stroke [] 0 setdash - hpt 0 360 arc stroke } def -/Opaque { gsave closepath 1 setgray fill grestore 0 setgray closepath } def -/DiaW { stroke [] 0 setdash vpt add M - hpt neg vpt neg V hpt vpt neg V - hpt vpt V hpt neg vpt V Opaque stroke } def -/BoxW { stroke [] 0 setdash exch hpt sub exch vpt add M - 0 vpt2 neg V hpt2 0 V 0 vpt2 V - hpt2 neg 0 V Opaque stroke } def -/TriUW { stroke [] 0 setdash vpt 1.12 mul add M - hpt neg vpt -1.62 mul V - hpt 2 mul 0 V - hpt neg vpt 1.62 mul V Opaque stroke } def -/TriDW { stroke [] 0 setdash vpt 1.12 mul sub M - hpt neg vpt 1.62 mul V - hpt 2 mul 0 V - hpt neg vpt -1.62 mul V Opaque stroke } def -/PentW { stroke [] 0 setdash gsave - translate 0 hpt M 4 {72 rotate 0 hpt L} repeat - Opaque stroke grestore } def -/CircW { stroke [] 0 setdash - hpt 0 360 arc Opaque stroke } def -/BoxFill { gsave Rec 1 setgray fill grestore } def -/MFshow {{dup dup 0 get findfont exch 1 get scalefont setfont - [ currentpoint ] exch dup 2 get 0 exch rmoveto dup dup 5 get exch 4 get - {show} {stringwidth pop 0 rmoveto}ifelse dup 3 get - {2 get neg 0 exch rmoveto pop} {pop aload pop moveto}ifelse} forall} bind def -/MFwidth {0 exch {dup 3 get{dup dup 0 get findfont exch 1 get scalefont setfont - 5 get stringwidth pop add} - {pop} ifelse} forall} bind def -/MLshow { currentpoint stroke M - 0 exch R MFshow } bind def -/MRshow { currentpoint stroke M - exch dup MFwidth neg 3 -1 roll R MFshow } def -/MCshow { currentpoint stroke M - exch dup MFwidth -2 div 3 -1 roll R MFshow } def -end -%%EndProlog -gnudict begin -gsave -50 50 translate -0.050 0.050 scale -0 setgray -newpath -(Times-Roman) findfont 200 scalefont setfont -1.000 UL -LTb -900 600 M -63 0 V -5897 0 R --63 0 V - stroke -780 600 M -[ [(Times-Roman) 200.0 0.0 true true (0)] -] -66.7 MRshow -900 1020 M -63 0 V -5897 0 R --63 0 V - stroke -780 1020 M -[ [(Times-Roman) 200.0 0.0 true true (0.1)] -] -66.7 MRshow -900 1440 M -63 0 V -5897 0 R --63 0 V - stroke -780 1440 M -[ [(Times-Roman) 200.0 0.0 true true (0.2)] -] -66.7 MRshow -900 1860 M -63 0 V -5897 0 R --63 0 V - stroke -780 1860 M -[ [(Times-Roman) 200.0 0.0 true true (0.3)] -] -66.7 MRshow -900 2280 M -63 0 V -5897 0 R --63 0 V - stroke -780 2280 M -[ [(Times-Roman) 200.0 0.0 true true (0.4)] -] -66.7 MRshow -900 2700 M -63 0 V -5897 0 R --63 0 V - stroke -780 2700 M -[ [(Times-Roman) 200.0 0.0 true true (0.5)] -] -66.7 MRshow -900 3120 M -63 0 V -5897 0 R --63 0 V - stroke -780 3120 M -[ [(Times-Roman) 200.0 0.0 true true (0.6)] -] -66.7 MRshow -900 3540 M -63 0 V -5897 0 R --63 0 V - stroke -780 3540 M -[ [(Times-Roman) 200.0 0.0 true true (0.7)] -] -66.7 MRshow -900 3960 M -63 0 V -5897 0 R --63 0 V - stroke -780 3960 M -[ [(Times-Roman) 200.0 0.0 true true (0.8)] -] -66.7 MRshow -900 4380 M -63 0 V -5897 0 R --63 0 V - stroke -780 4380 M -[ [(Times-Roman) 200.0 0.0 true true (0.9)] -] -66.7 MRshow -900 4800 M -63 0 V -5897 0 R --63 0 V - stroke -780 4800 M -[ [(Times-Roman) 200.0 0.0 true true (1)] -] -66.7 MRshow -1751 600 M -0 63 V -0 4137 R -0 -63 V - stroke -1751 400 M -[ [(Times-Roman) 200.0 0.0 true true (1997)] -] -66.7 MCshow -2603 600 M -0 63 V -0 4137 R -0 -63 V - stroke -2603 400 M -[ [(Times-Roman) 200.0 0.0 true true (1998)] -] -66.7 MCshow -3454 600 M -0 63 V -0 4137 R -0 -63 V - stroke -3454 400 M -[ [(Times-Roman) 200.0 0.0 true true (1999)] -] -66.7 MCshow -4306 600 M -0 63 V -0 4137 R -0 -63 V - stroke -4306 400 M -[ [(Times-Roman) 200.0 0.0 true true (2000)] -] -66.7 MCshow -5157 600 M -0 63 V -0 4137 R -0 -63 V - stroke -5157 400 M -[ [(Times-Roman) 200.0 0.0 true true (2001)] -] -66.7 MCshow -6009 600 M -0 63 V -0 4137 R -0 -63 V - stroke -6009 400 M -[ [(Times-Roman) 200.0 0.0 true true (2002)] -] -66.7 MCshow -1.000 UL -LTb -900 600 M -5960 0 V -0 4200 V --5960 0 V -900 600 L - stroke -200 2700 M -currentpoint gsave translate 90 rotate 0 0 moveto -[ [(Symbol) 200.0 0.0 true true (F)] -[(Times-Roman) 160.0 -60.0 true true (2)] -[(Times-Roman) 200.0 0.0 true true (\(1\))] -] -46.7 MCshow -grestore -3880 100 M -[ [(Times-Roman) 200.0 0.0 true true (Year)] -] -66.7 MCshow -1.000 UL -LT0 -1581 600 M -0 4070 V -341 0 V -0 -4070 V --341 0 V -852 0 R -0 4072 V -340 0 V -0 -4072 V --340 0 V -851 0 R -0 4065 V -341 0 V -0 -4065 V --341 0 V -851 0 R -0 4092 V -341 0 V -0 -4092 V --341 0 V -852 0 R -0 4086 V -340 0 V -0 -4086 V --340 0 V -851 0 R -0 4112 V -341 0 V -0 -4112 V --341 0 V -stroke -grestore -end -showpage -%%Trailer -%%DocumentFonts: Symbol Times-Roman - -%%EndDocument - @endspecial 830 4921 a Fv(Figure)h(1:)36 b Fz(The)28 -b(graphics)e(created)h(b)n(y)g(the)h(gn)n(uplot)f(template)h(for)f -(\010)3126 4933 y Fa(2)3163 4921 y Fz(.)1962 5281 y Fq(18)p -eop -%%Page: 19 19 -19 18 bop 236 399 a Fw(B.2)112 b(T)-9 b(emplate)36 b(for)i -FA(\011)1258 414 y Fp(1)236 617 y Fq(The)30 b(follo)m(wing)f(gn)m -(uplot)h(template)h(creates)g(Figure)f(2)h(in)e(\014le)g(psi1.eps)h(in) -f(EPS)g(format.)236 877 y Fo(set)47 b(terminal)f(postscript)f(eps)i -(enhanced)e("Times-Roman")f(20)236 990 y(set)j(output)f('psi1.eps')236 -1103 y(set)h(data)g(style)f(linespoint)236 1216 y(set)h(yrange)f([0:1]) -236 1329 y(set)h(xrange)f([0:8])236 1442 y(set)h(ytics)f(0,.2,1)236 -1555 y(set)h(xlabel)f('{/Symbol)f(t}')236 1668 y(set)i(ylabel)f -('{/Symbol)f(Y}_1\({/Symbol)g(t}\)')236 1780 y(set)i(key)g(right)f -(bottom)g(box)236 1893 y(plot)h('psi1.1997.dat')c(title)k('1997')f(\\) -236 2006 y(,)i('psi1.1998.dat')43 b(title)k('1998')f(\\)236 -2119 y(,)i('psi1.1999.dat')43 b(title)k('1999')f(\\)236 -2232 y(,)i('psi1.2000.dat')43 b(title)k('2000')f(\\)236 -2345 y(,)i('psi1.2001.dat')43 b(title)k('2001')f(\\)236 -2458 y(,)i('psi1.2002.dat')43 b(title)k('2002')f(\\)377 -2718 y Fq(The)31 b(con)m(ten)m(ts)h(of)f(a)g(sample)f(data\014le,)h -(psi1.1998.dat,)h(is)e(sho)m(wn)g(b)s(elo)m(w.)41 b(The)30 -b(other)h(data)h(\014les)236 2831 y(m)m(ust)e(b)s(e)g(in)f(a)i(similar) -d(format.)427 3065 y Fo(1)95 b(0.000000)427 3178 y(2)g(0.791783)427 -3291 y(3)g(0.987862)427 3404 y(4)g(0.999689)427 3517 -y(5)g(1.000000)427 3630 y(6)g(1.000000)427 3743 y(7)g(1.000000)427 -3856 y(8)g(1.000000)427 3969 y(9)g(1.000000)379 4082 -y(10)g(1.000000)377 4317 y Fq(The)30 b(output)g(is)g(sho)m(wn)f(in)g -(Figure)h(2.)1962 5281 y(19)p eop -%%Page: 20 20 -20 19 bop 768 3438 a @beginspecial 50 @llx 50 @lly 410 -@urx 302 @ury 2976 @rwi @setspecial -%%BeginDocument: psi1.eps -%!PS-Adobe-2.0 EPSF-2.0 -%%Title: psi1.as97-02.eps -%%Creator: gnuplot 3.7 patchlevel 1 -%%CreationDate: Mon Jan 14 03:07:55 2002 -%%DocumentFonts: (atend) -%%BoundingBox: 50 50 410 302 -%%Orientation: Portrait -%%EndComments -/gnudict 256 dict def -gnudict begin -/Color false def -/Solid false def -/gnulinewidth 5.000 def -/userlinewidth gnulinewidth def -/vshift -66 def -/dl {10 mul} def -/hpt_ 31.5 def -/vpt_ 31.5 def -/hpt hpt_ def -/vpt vpt_ def -/M {moveto} bind def -/L {lineto} bind def -/R {rmoveto} bind def -/V {rlineto} bind def -/vpt2 vpt 2 mul def -/hpt2 hpt 2 mul def -/Lshow { currentpoint stroke M - 0 vshift R show } def -/Rshow { currentpoint stroke M - dup stringwidth pop neg vshift R show } def -/Cshow { currentpoint stroke M - dup stringwidth pop -2 div vshift R show } def -/UP { dup vpt_ mul /vpt exch def hpt_ mul /hpt exch def - /hpt2 hpt 2 mul def /vpt2 vpt 2 mul def } def -/DL { Color {setrgbcolor Solid {pop []} if 0 setdash } - {pop pop pop Solid {pop []} if 0 setdash} ifelse } def -/BL { stroke userlinewidth 2 mul setlinewidth } def -/AL { stroke userlinewidth 2 div setlinewidth } def -/UL { dup gnulinewidth mul /userlinewidth exch def - 10 mul /udl exch def } def -/PL { stroke userlinewidth setlinewidth } def -/LTb { BL [] 0 0 0 DL } def -/LTa { AL [1 udl mul 2 udl mul] 0 setdash 0 0 0 setrgbcolor } def -/LT0 { PL [] 1 0 0 DL } def -/LT1 { PL [4 dl 2 dl] 0 1 0 DL } def -/LT2 { PL [2 dl 3 dl] 0 0 1 DL } def -/LT3 { PL [1 dl 1.5 dl] 1 0 1 DL } def -/LT4 { PL [5 dl 2 dl 1 dl 2 dl] 0 1 1 DL } def -/LT5 { PL [4 dl 3 dl 1 dl 3 dl] 1 1 0 DL } def -/LT6 { PL [2 dl 2 dl 2 dl 4 dl] 0 0 0 DL } def -/LT7 { PL [2 dl 2 dl 2 dl 2 dl 2 dl 4 dl] 1 0.3 0 DL } def -/LT8 { PL [2 dl 2 dl 2 dl 2 dl 2 dl 2 dl 2 dl 4 dl] 0.5 0.5 0.5 DL } def -/Pnt { stroke [] 0 setdash - gsave 1 setlinecap M 0 0 V stroke grestore } def -/Dia { stroke [] 0 setdash 2 copy vpt add M - hpt neg vpt neg V hpt vpt neg V - hpt vpt V hpt neg vpt V closepath stroke - Pnt } def -/Pls { stroke [] 0 setdash vpt sub M 0 vpt2 V - currentpoint stroke M - hpt neg vpt neg R hpt2 0 V stroke - } def -/Box { stroke [] 0 setdash 2 copy exch hpt sub exch vpt add M - 0 vpt2 neg V hpt2 0 V 0 vpt2 V - hpt2 neg 0 V closepath stroke - Pnt } def -/Crs { stroke [] 0 setdash exch hpt sub exch vpt add M - hpt2 vpt2 neg V currentpoint stroke M - hpt2 neg 0 R hpt2 vpt2 V stroke } def -/TriU { stroke [] 0 setdash 2 copy vpt 1.12 mul add M - hpt neg vpt -1.62 mul V - hpt 2 mul 0 V - hpt neg vpt 1.62 mul V closepath stroke - Pnt } def -/Star { 2 copy Pls Crs } def -/BoxF { stroke [] 0 setdash exch hpt sub exch vpt add M - 0 vpt2 neg V hpt2 0 V 0 vpt2 V - hpt2 neg 0 V closepath fill } def -/TriUF { stroke [] 0 setdash vpt 1.12 mul add M - hpt neg vpt -1.62 mul V - hpt 2 mul 0 V - hpt neg vpt 1.62 mul V closepath fill } def -/TriD { stroke [] 0 setdash 2 copy vpt 1.12 mul sub M - hpt neg vpt 1.62 mul V - hpt 2 mul 0 V - hpt neg vpt -1.62 mul V closepath stroke - Pnt } def -/TriDF { stroke [] 0 setdash vpt 1.12 mul sub M - hpt neg vpt 1.62 mul V - hpt 2 mul 0 V - hpt neg vpt -1.62 mul V closepath fill} def -/DiaF { stroke [] 0 setdash vpt add M - hpt neg vpt neg V hpt vpt neg V - hpt vpt V hpt neg vpt V closepath fill } def -/Pent { stroke [] 0 setdash 2 copy gsave - translate 0 hpt M 4 {72 rotate 0 hpt L} repeat - closepath stroke grestore Pnt } def -/PentF { stroke [] 0 setdash gsave - translate 0 hpt M 4 {72 rotate 0 hpt L} repeat - closepath fill grestore } def -/Circle { stroke [] 0 setdash 2 copy - hpt 0 360 arc stroke Pnt } def -/CircleF { stroke [] 0 setdash hpt 0 360 arc fill } def -/C0 { BL [] 0 setdash 2 copy moveto vpt 90 450 arc } bind def -/C1 { BL [] 0 setdash 2 copy moveto - 2 copy vpt 0 90 arc closepath fill - vpt 0 360 arc closepath } bind def -/C2 { BL [] 0 setdash 2 copy moveto - 2 copy vpt 90 180 arc closepath fill - vpt 0 360 arc closepath } bind def -/C3 { BL [] 0 setdash 2 copy moveto - 2 copy vpt 0 180 arc closepath fill - vpt 0 360 arc closepath } bind def -/C4 { BL [] 0 setdash 2 copy moveto - 2 copy vpt 180 270 arc closepath fill - vpt 0 360 arc closepath } bind def -/C5 { BL [] 0 setdash 2 copy moveto - 2 copy vpt 0 90 arc - 2 copy moveto - 2 copy vpt 180 270 arc closepath fill - vpt 0 360 arc } bind def -/C6 { BL [] 0 setdash 2 copy moveto - 2 copy vpt 90 270 arc closepath fill - vpt 0 360 arc closepath } bind def -/C7 { BL [] 0 setdash 2 copy moveto - 2 copy vpt 0 270 arc closepath fill - vpt 0 360 arc closepath } bind def -/C8 { BL [] 0 setdash 2 copy moveto - 2 copy vpt 270 360 arc closepath fill - vpt 0 360 arc closepath } bind def -/C9 { BL [] 0 setdash 2 copy moveto - 2 copy vpt 270 450 arc closepath fill - vpt 0 360 arc closepath } bind def -/C10 { BL [] 0 setdash 2 copy 2 copy moveto vpt 270 360 arc closepath fill - 2 copy moveto - 2 copy vpt 90 180 arc closepath fill - vpt 0 360 arc closepath } bind def -/C11 { BL [] 0 setdash 2 copy moveto - 2 copy vpt 0 180 arc closepath fill - 2 copy moveto - 2 copy vpt 270 360 arc closepath fill - vpt 0 360 arc closepath } bind def -/C12 { BL [] 0 setdash 2 copy moveto - 2 copy vpt 180 360 arc closepath fill - vpt 0 360 arc closepath } bind def -/C13 { BL [] 0 setdash 2 copy moveto - 2 copy vpt 0 90 arc closepath fill - 2 copy moveto - 2 copy vpt 180 360 arc closepath fill - vpt 0 360 arc closepath } bind def -/C14 { BL [] 0 setdash 2 copy moveto - 2 copy vpt 90 360 arc closepath fill - vpt 0 360 arc } bind def -/C15 { BL [] 0 setdash 2 copy vpt 0 360 arc closepath fill - vpt 0 360 arc closepath } bind def -/Rec { newpath 4 2 roll moveto 1 index 0 rlineto 0 exch rlineto - neg 0 rlineto closepath } bind def -/Square { dup Rec } bind def -/Bsquare { vpt sub exch vpt sub exch vpt2 Square } bind def -/S0 { BL [] 0 setdash 2 copy moveto 0 vpt rlineto BL Bsquare } bind def -/S1 { BL [] 0 setdash 2 copy vpt Square fill Bsquare } bind def -/S2 { BL [] 0 setdash 2 copy exch vpt sub exch vpt Square fill Bsquare } bind def -/S3 { BL [] 0 setdash 2 copy exch vpt sub exch vpt2 vpt Rec fill Bsquare } bind def -/S4 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt Square fill Bsquare } bind def -/S5 { BL [] 0 setdash 2 copy 2 copy vpt Square fill - exch vpt sub exch vpt sub vpt Square fill Bsquare } bind def -/S6 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill Bsquare } bind def -/S7 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill - 2 copy vpt Square fill - Bsquare } bind def -/S8 { BL [] 0 setdash 2 copy vpt sub vpt Square fill Bsquare } bind def -/S9 { BL [] 0 setdash 2 copy vpt sub vpt vpt2 Rec fill Bsquare } bind def -/S10 { BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt Square fill - Bsquare } bind def -/S11 { BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt2 vpt Rec fill - Bsquare } bind def -/S12 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill Bsquare } bind def -/S13 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill - 2 copy vpt Square fill Bsquare } bind def -/S14 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill - 2 copy exch vpt sub exch vpt Square fill Bsquare } bind def -/S15 { BL [] 0 setdash 2 copy Bsquare fill Bsquare } bind def -/D0 { gsave translate 45 rotate 0 0 S0 stroke grestore } bind def -/D1 { gsave translate 45 rotate 0 0 S1 stroke grestore } bind def -/D2 { gsave translate 45 rotate 0 0 S2 stroke grestore } bind def -/D3 { gsave translate 45 rotate 0 0 S3 stroke grestore } bind def -/D4 { gsave translate 45 rotate 0 0 S4 stroke grestore } bind def -/D5 { gsave translate 45 rotate 0 0 S5 stroke grestore } bind def -/D6 { gsave translate 45 rotate 0 0 S6 stroke grestore } bind def -/D7 { gsave translate 45 rotate 0 0 S7 stroke grestore } bind def -/D8 { gsave translate 45 rotate 0 0 S8 stroke grestore } bind def -/D9 { gsave translate 45 rotate 0 0 S9 stroke grestore } bind def -/D10 { gsave translate 45 rotate 0 0 S10 stroke grestore } bind def -/D11 { gsave translate 45 rotate 0 0 S11 stroke grestore } bind def -/D12 { gsave translate 45 rotate 0 0 S12 stroke grestore } bind def -/D13 { gsave translate 45 rotate 0 0 S13 stroke grestore } bind def -/D14 { gsave translate 45 rotate 0 0 S14 stroke grestore } bind def -/D15 { gsave translate 45 rotate 0 0 S15 stroke grestore } bind def -/DiaE { stroke [] 0 setdash vpt add M - hpt neg vpt neg V hpt vpt neg V - hpt vpt V hpt neg vpt V closepath stroke } def -/BoxE { stroke [] 0 setdash exch hpt sub exch vpt add M - 0 vpt2 neg V hpt2 0 V 0 vpt2 V - hpt2 neg 0 V closepath stroke } def -/TriUE { stroke [] 0 setdash vpt 1.12 mul add M - hpt neg vpt -1.62 mul V - hpt 2 mul 0 V - hpt neg vpt 1.62 mul V closepath stroke } def -/TriDE { stroke [] 0 setdash vpt 1.12 mul sub M - hpt neg vpt 1.62 mul V - hpt 2 mul 0 V - hpt neg vpt -1.62 mul V closepath stroke } def -/PentE { stroke [] 0 setdash gsave - translate 0 hpt M 4 {72 rotate 0 hpt L} repeat - closepath stroke grestore } def -/CircE { stroke [] 0 setdash - hpt 0 360 arc stroke } def -/Opaque { gsave closepath 1 setgray fill grestore 0 setgray closepath } def -/DiaW { stroke [] 0 setdash vpt add M - hpt neg vpt neg V hpt vpt neg V - hpt vpt V hpt neg vpt V Opaque stroke } def -/BoxW { stroke [] 0 setdash exch hpt sub exch vpt add M - 0 vpt2 neg V hpt2 0 V 0 vpt2 V - hpt2 neg 0 V Opaque stroke } def -/TriUW { stroke [] 0 setdash vpt 1.12 mul add M - hpt neg vpt -1.62 mul V - hpt 2 mul 0 V - hpt neg vpt 1.62 mul V Opaque stroke } def -/TriDW { stroke [] 0 setdash vpt 1.12 mul sub M - hpt neg vpt 1.62 mul V - hpt 2 mul 0 V - hpt neg vpt -1.62 mul V Opaque stroke } def -/PentW { stroke [] 0 setdash gsave - translate 0 hpt M 4 {72 rotate 0 hpt L} repeat - Opaque stroke grestore } def -/CircW { stroke [] 0 setdash - hpt 0 360 arc Opaque stroke } def -/BoxFill { gsave Rec 1 setgray fill grestore } def -/MFshow {{dup dup 0 get findfont exch 1 get scalefont setfont - [ currentpoint ] exch dup 2 get 0 exch rmoveto dup dup 5 get exch 4 get - {show} {stringwidth pop 0 rmoveto}ifelse dup 3 get - {2 get neg 0 exch rmoveto pop} {pop aload pop moveto}ifelse} forall} bind def -/MFwidth {0 exch {dup 3 get{dup dup 0 get findfont exch 1 get scalefont setfont - 5 get stringwidth pop add} - {pop} ifelse} forall} bind def -/MLshow { currentpoint stroke M - 0 exch R MFshow } bind def -/MRshow { currentpoint stroke M - exch dup MFwidth neg 3 -1 roll R MFshow } def -/MCshow { currentpoint stroke M - exch dup MFwidth -2 div 3 -1 roll R MFshow } def -end -%%EndProlog -gnudict begin -gsave -50 50 translate -0.050 0.050 scale -0 setgray -newpath -(Times-Roman) findfont 200 scalefont setfont -1.000 UL -LTb -900 600 M -63 0 V -5897 0 R --63 0 V - stroke -780 600 M -[ [(Times-Roman) 200.0 0.0 true true (0)] -] -66.7 MRshow -900 1440 M -63 0 V -5897 0 R --63 0 V - stroke -780 1440 M -[ [(Times-Roman) 200.0 0.0 true true (0.2)] -] -66.7 MRshow -900 2280 M -63 0 V -5897 0 R --63 0 V - stroke -780 2280 M -[ [(Times-Roman) 200.0 0.0 true true (0.4)] -] -66.7 MRshow -900 3120 M -63 0 V -5897 0 R --63 0 V - stroke -780 3120 M -[ [(Times-Roman) 200.0 0.0 true true (0.6)] -] -66.7 MRshow -900 3960 M -63 0 V -5897 0 R --63 0 V - stroke -780 3960 M -[ [(Times-Roman) 200.0 0.0 true true (0.8)] -] -66.7 MRshow -900 4800 M -63 0 V -5897 0 R --63 0 V - stroke -780 4800 M -[ [(Times-Roman) 200.0 0.0 true true (1)] -] -66.7 MRshow -900 600 M -0 63 V -0 4137 R -0 -63 V - stroke -900 400 M -[ [(Times-Roman) 200.0 0.0 true true (0)] -] -66.7 MCshow -1645 600 M -0 63 V -0 4137 R -0 -63 V - stroke -1645 400 M -[ [(Times-Roman) 200.0 0.0 true true (1)] -] -66.7 MCshow -2390 600 M -0 63 V -0 4137 R -0 -63 V - stroke -2390 400 M -[ [(Times-Roman) 200.0 0.0 true true (2)] -] -66.7 MCshow -3135 600 M -0 63 V -0 4137 R -0 -63 V - stroke -3135 400 M -[ [(Times-Roman) 200.0 0.0 true true (3)] -] -66.7 MCshow -3880 600 M -0 63 V -0 4137 R -0 -63 V - stroke -3880 400 M -[ [(Times-Roman) 200.0 0.0 true true (4)] -] -66.7 MCshow -4625 600 M -0 63 V -0 4137 R -0 -63 V - stroke -4625 400 M -[ [(Times-Roman) 200.0 0.0 true true (5)] -] -66.7 MCshow -5370 600 M -0 63 V -0 4137 R -0 -63 V - stroke -5370 400 M -[ [(Times-Roman) 200.0 0.0 true true (6)] -] -66.7 MCshow -6115 600 M -0 63 V -0 4137 R -0 -63 V - stroke -6115 400 M -[ [(Times-Roman) 200.0 0.0 true true (7)] -] -66.7 MCshow -6860 600 M -0 63 V -0 4137 R -0 -63 V - stroke -6860 400 M -[ [(Times-Roman) 200.0 0.0 true true (8)] -] -66.7 MCshow -1.000 UL -LTb -900 600 M -5960 0 V -0 4200 V --5960 0 V -900 600 L - stroke -200 2700 M -currentpoint gsave translate 90 rotate 0 0 moveto -[ [(Symbol) 200.0 0.0 true true (Y)] -[(Times-Roman) 160.0 -60.0 true true (1)] -[(Times-Roman) 200.0 0.0 true true (\()] -[(Symbol) 200.0 0.0 true true (t)] -[(Times-Roman) 200.0 0.0 true true (\))] -] -46.7 MCshow -grestore -3880 100 M -[ [(Symbol) 200.0 0.0 true true (t)] -] -66.7 MCshow -1.000 UL -LTb -5477 663 M -0 1200 V -1263 0 V -0 -1200 V --1263 0 V -0 1200 R -1263 0 V -1.000 UP -1.000 UL -LT0 -5957 1763 M -[ [(Times-Roman) 200.0 0.0 true true (1997)] -] -66.7 MRshow -6077 1763 M -543 0 V -1645 600 M -745 3502 V -745 651 V -745 47 V -745 0 V -745 0 V -745 0 V -745 0 V -1645 600 Pls -2390 4102 Pls -3135 4753 Pls -3880 4800 Pls -4625 4800 Pls -5370 4800 Pls -6115 4800 Pls -6860 4800 Pls -6348 1763 Pls -1.000 UP -1.000 UL -LT1 -5957 1563 M -[ [(Times-Roman) 200.0 0.0 true true (1998)] -] -66.7 MRshow -6077 1563 M -543 0 V -1645 600 M -745 3325 V -745 824 V -745 50 V -745 1 V -745 0 V -745 0 V -745 0 V -1645 600 Crs -2390 3925 Crs -3135 4749 Crs -3880 4799 Crs -4625 4800 Crs -5370 4800 Crs -6115 4800 Crs -6860 4800 Crs -6348 1563 Crs -1.000 UP -1.000 UL -LT2 -5957 1363 M -[ [(Times-Roman) 200.0 0.0 true true (1999)] -] -66.7 MRshow -6077 1363 M -543 0 V -1645 600 M -745 3096 V -745 1054 V -745 50 V -745 0 V -745 0 V -745 0 V -745 0 V -1645 600 Star -2390 3696 Star -3135 4750 Star -3880 4800 Star -4625 4800 Star -5370 4800 Star -6115 4800 Star -6860 4800 Star -6348 1363 Star -1.000 UP -1.000 UL -LT3 -5957 1163 M -[ [(Times-Roman) 200.0 0.0 true true (2000)] -] -66.7 MRshow -6077 1163 M -543 0 V -1645 600 M -745 3034 V -745 1147 V -745 18 V -745 1 V -745 0 V -745 0 V -745 0 V -1645 600 Box -2390 3634 Box -3135 4781 Box -3880 4799 Box -4625 4800 Box -5370 4800 Box -6115 4800 Box -6860 4800 Box -6348 1163 Box -1.000 UP -1.000 UL -LT4 -5957 963 M -[ [(Times-Roman) 200.0 0.0 true true (2001)] -] -66.7 MRshow -6077 963 M -543 0 V -1645 600 M -745 3212 V -745 964 V -745 24 V -745 0 V -745 0 V -745 0 V -745 0 V -1645 600 BoxF -2390 3812 BoxF -3135 4776 BoxF -3880 4800 BoxF -4625 4800 BoxF -5370 4800 BoxF -6115 4800 BoxF -6860 4800 BoxF -6348 963 BoxF -1.000 UP -1.000 UL -LT5 -5957 763 M -[ [(Times-Roman) 200.0 0.0 true true (2002)] -] -66.7 MRshow -6077 763 M -543 0 V -6348 763 Circle -stroke -grestore -end -showpage -%%Trailer -%%DocumentFonts: Symbol Times-Roman - -%%EndDocument - @endspecial 827 3621 a Fv(Figure)31 b(2:)37 b Fz(The)27 -b(graphics)f(created)h(b)n(y)h(the)g(gn)n(uplot)f(template)h(for)f -(\011)3129 3633 y Fa(1)3165 3621 y Fz(.)1962 5281 y Fq(20)p -eop -%%Trailer -end -userdict /end-hook known{end-hook}if -%%EOF Binary files DPF/dpf/dpf-v2.pdf and DPF2/dpf/dpf-v2.pdf differ diff -rupN DPF/dpf/extern.h DPF2/dpf/extern.h --- DPF/dpf/extern.h 2002-05-24 03:50:03.000000000 -0400 +++ DPF2/dpf/extern.h 2007-01-16 14:35:32.000000000 -0500 @@ -42,11 +42,17 @@ extern NODE_ID as2id[65536], id2as[655 extern EDGE_ID Degree[65536]; /* Table of node degrees */ extern char Transit[65536]; /* Transit[x] is 1 if x is a transit node */ extern char Filter[65536]; /* Filter[x] is 1 if x is a filter node */ -extern int MAX, EGRESS, SETS, ROUTE; -/* Specify options, such as maximal or egress filtering is in effect */ +extern char Egress[65536]; /* Egress[x] is 1 if x is an egress node */ +extern int MAX, SETS, ROUTE, TRACE; /* options such as maximal filtering */ extern NODE_ID **InitialRouteTable; /* Temporary route table, used during routing */ -extern char *graphfilename, *coverfilename, *transfilename; +extern char *graphfilename, *coverfilename, *transfilename, *egressfilename; +/* BGP */ +extern char *aspathfilename, *subnetsfilename; +extern int BGP; +extern NODELIST *Subnets; +extern int PREFIX; +/* BGP */ #endif diff -rupN DPF/dpf/filter.c DPF2/dpf/filter.c --- DPF/dpf/filter.c 2002-05-24 03:50:01.000000000 -0400 +++ DPF2/dpf/filter.c 2007-01-16 14:35:32.000000000 -0500 @@ -25,6 +25,153 @@ http://www.cs.purdue.edu/nsl #include "filter.h" +/* BGP begins*/ + +void print_ASsubnets() +{ + int i, j; + int asnum1, asnum2; + + for (i = 0; i < N; i++) { + asnum1 = id2as[i]; + asnum2 = id2as[Subnets[i].list[0]]; + fprintf(stdout, "%d\t->\t%d", asnum1, asnum2); + for (j = 1; j < Subnets[i].n; j++) { + asnum2 = id2as[Subnets[i].list[j]]; + fprintf(stdout, ":%d", asnum2); + } + fprintf(stdout, "\n"); + } +} + +void LoadSubnetsFile(char *subnetsfilename) +{ + FILE *subnetsfile; + int i, asnum1, asnum2; + NODE_ID id1, id2; + static NODE_ID buffer[MAXN]; + + // allocating memory for subnets + assert((Subnets = calloc(N, sizeof(NODELIST))) != NULL); + + // load the file + assert((subnetsfile = fopen(subnetsfilename, "r")) != NULL); + while (fscanf(subnetsfile, "%d\t->\t%d", &asnum1, &asnum2) == 2) { + id1 = as2id[asnum1]; + id2 = as2id[asnum2]; + buffer[Subnets[id1].n++] = id2; + while (fscanf(subnetsfile, ":%d", &asnum2) == 1) { + id2 = as2id[asnum2]; + buffer[Subnets[id1].n++] = id2; + } + assert((Subnets[id1].list = realloc(Subnets[id1].list, + Subnets[id1].n*sizeof(NODE_ID))) != NULL); + memcpy(Subnets[id1].list, buffer, Subnets[id1].n*sizeof(NODE_ID)); + } + + // set the entries that do not have a subnet to itself + // id --> as ---> id + for (i = 0; i < N; i++) { + if (Subnets[i].n == 0) { + Subnets[i].n++; + assert((Subnets[i].list = realloc(Subnets[i].list, + Subnets[i].n*sizeof(NODE_ID))) != NULL); + Subnets[i].list[0] = i; + } + } + + // print_ASsubnets(); +} + +void TraverseASPath_SetFilters(char *aspathfilename) +{ + FILE *pathfile; + int i, j, k, asnum; + char *ptr; + int aspath[MAXHOP]; + char line[MAXLINE]; + int sourceNode, n1, n2, s; + FTR_ID f; + + assert((pathfile = fopen(aspathfilename, "r")) != NULL); + while (getline(line, MAXLINE, pathfile)) { + i = 0; + if ((ptr=strtok(line, WHITE)) ==NULL) { + fprintf(stderr, "Something wrong with this line\n"); + exit(-1); + } + asnum = atoi(ptr); + aspath[i] = asnum; + + while ((ptr = strtok(NULL, WHITE)) != NULL) { + asnum = atoi (ptr); + + if (aspath[i] != asnum) { + /* we need to skip duplicated as num */ + // fprintf(stderr, "%d ", asnum); + i++; + aspath[i] = asnum; + if (i >= MAXHOP) { + fprintf(stderr, "Too many hops\n"); + exit(-1); + } + } + } + // OK, we get one AS path now. + sourceNode = as2id[aspath[i]]; + for (j = i; j > 0; j--) { + n1 = as2id[aspath[j]]; + n2 = as2id[aspath[j-1]]; + for (k = 0; k < Degree[n1]; k++) { + if (node[n1].edge[k].to == n2) { + break; + } + } + if (k == Degree[n1]) { + fprintf(stderr, "TraverseASPath_SetFilters wrong\n"); + fprintf(stderr, "%d\n", i); + fprintf(stderr, "Line: %s", line); + fprintf(stderr, "%d %d\n", aspath[j], aspath[j-1]); + exit(-1); + } + f = node[n1].edge[k].ftr; + if (f != fNIL) { + if (PREFIX) { + for (k = 0; k < Subnets[sourceNode].n; k++) { + s = Subnets[sourceNode].list[k]; + if (!GetBit(Filter1[f], s)) { + SetBit( Filter1[f], s); + AppendFilter2( Filter2[f], s); + } + } + } else { + if (!GetBit(Filter1[f], sourceNode)) { + SetBit( Filter1[f], sourceNode); + AppendFilter2( Filter2[f], sourceNode); + } + } + } + } + } + fclose(pathfile); +} + +int getline(char *line, int max, FILE *fp) { + if (fgets(line, max, fp) == NULL) { + return 0; + } else { + size_t len = strlen(line); + + if (len == (max - 1)) { + fprintf(stderr, "buffer is possibly small\n"); + fprintf(stderr, "%s", line); + exit(-1); + } + return len; + } +} +/* BGP ends */ + void TraverseRoute_SetFilters(NODE_ID s /* source node */, NODE_ID d /* destination */, NODE_ID x /* current node */, @@ -32,12 +179,24 @@ void TraverseRoute_SetFilters(NODE_ID s /* Traversing the route from s to d; updating the filter at x */ { EDGE_ID e; - + /* Update the filter on x, if x is a filter node */ if ( f != fNIL ) { - if ( ! GetBit( Filter1[f], s)) { - SetBit( Filter1[f], s); - AppendFilter2( Filter2[f], s); + if (PREFIX) { + NODE_ID source; + int k; + for (k = 0; k < Subnets[s].n; k++) { + source = Subnets[s].list[k]; + if (!GetBit(Filter1[f], source)) { + SetBit( Filter1[f], source); + AppendFilter2( Filter2[f], source); + } + } + } else { + if ( ! GetBit( Filter1[f], s)) { + SetBit( Filter1[f], s); + AppendFilter2( Filter2[f], s); + } } } @@ -70,6 +229,8 @@ void ComputeSets(NODE_ID t /* target des This setting is unset at the end of this function. */ SetBitArray( Sta1[t] ); Sta2[t].n = N; + Sta2[t].which = 0; + // fprintf(stderr, "N = %d\n", N); assert((Sta2[t].list = realloc(Sta2[t].list, N * sizeof(NODE_ID))) != 0); for (i=0; i TreshUnset ) { \ UnsetBitArray( Sta1[i] ); \ } \ else { \ + if (Sta2[i].which == 0) { \ + j = i; \ + } else { \ + j = Sta2[i].which;\ + } \ for (k_macro=0; k_macro < Sta2[i].n; k_macro++) \ - UnsetBit(Sta1[i], Sta2[i].list[k_macro]); \ + UnsetBit(Sta1[i], Sta2[j].list[k_macro]); \ } \ Sta2[i].n = 0; \ } diff -rupN DPF/dpf/functions.h DPF2/dpf/functions.h --- DPF/dpf/functions.h 2002-05-24 03:50:03.000000000 -0400 +++ DPF2/dpf/functions.h 2007-01-16 14:35:32.000000000 -0500 @@ -55,6 +55,12 @@ void ComputeSets(NODE_ID); void SaveResults(NODE_ID); void SaveStats(NODE_ID); void SaveSets(NODE_ID); +void TraceCts(NODE_ID); +int TraverseRoute_CheckNode(NODE_ID, NODE_ID, NODE_ID); +void OutputTrace(); - +/* BGP */ +void TraverseASPath_SetFilters(char *); +int getline(char*, int, FILE*); +void LoadSubnetsFile(char *); #endif diff -rupN DPF/dpf/init.c DPF2/dpf/init.c --- DPF/dpf/init.c 2002-05-29 01:53:24.000000000 -0400 +++ DPF2/dpf/init.c 2007-01-16 14:35:32.000000000 -0500 @@ -31,7 +31,7 @@ http://www.cs.purdue.edu/nsl void GetInputGraph() /* Read the input graph; create the nodes and the edges */ { - FILE *graphfile, *coverfile, *transfile; + FILE *graphfile, *coverfile, *transfile, *egressfile; int i, j, as, id, neighbor, degree, deg, c; char checked[65536]; @@ -54,7 +54,7 @@ void GetInputGraph() } - /* Set filter nodes */ + /* Get the list of filter nodes */ assert((coverfile = fopen(coverfilename, "r")) != NULL); while (fscanf(coverfile, " %d \n", &as) == 1) Filter[as2id[as]] = 1; @@ -88,11 +88,17 @@ void GetInputGraph() } fclose(graphfile); - /* Get the transitness information */ + /* Get the list of transit nodes */ assert((transfile = fopen(transfilename, "r")) != NULL); while (fscanf(transfile, " %d \n", &as) == 1) Transit[ as2id[as] ] = 1; fclose(transfile); + /* Get the list of egress nodes */ + assert((egressfile = fopen(egressfilename, "r")) != NULL); + while (fscanf(egressfile, " %d \n", &as) == 1) + Egress[ as2id[as] ] = 1; + fclose(egressfile); + } diff -rupN DPF/dpf/main.c DPF2/dpf/main.c --- DPF/dpf/main.c 2002-05-24 03:50:02.000000000 -0400 +++ DPF2/dpf/main.c 2007-01-16 14:35:32.000000000 -0500 @@ -28,33 +28,62 @@ int N; FTR_ID N_ftr=0; BITARRAY *Filter1, *Sta1; NODELIST *Filter2, *Sta2, *Cts2; -int MAX, EGRESS, SETS, ROUTE; +int MAX, SETS, ROUTE, TRACE; NODE_ID **InitialRouteTable; NODE_ID as2id[65536], id2as[65536]; EDGE_ID Degree[65536]={0}; -char Transit[65536]={0}, Filter[65536]={0}; -char *graphfilename, *coverfilename, *transfilename; +char Transit[65536]={0}, Filter[65536]={0}, Egress[65536]={0}; +char *graphfilename, *coverfilename, *transfilename, *egressfilename; + +/* added for BGP */ +char *aspathfilename, *subnetsfilename; +int BGP = 0; +NODELIST *Subnets; +int PREFIX = 0; +/* BGP */ main(int argc, char **argv) { NODE_ID s, d; time_t time0, time1, time2, time3, time4; + FTR_ID ftr_tmp; time(&time0); - if (argc != 8) { - fprintf(stderr, "Usage: %s \n", argv[0]); + /* BGP */ + fprintf(stdout, "argc = %d\n", argc); + + if ((argc != 9) && (argc != 10) && (argc != 11)) { + fprintf(stderr, "Usage: %s \ + \ + [pathfile] [subnetsfile]\n", argv[0]); exit(-1); } graphfilename = argv[1]; - coverfilename = argv[2]; - transfilename = argv[3]; - assert(sscanf(argv[4], "%d", &MAX) == 1); - assert(sscanf(argv[5], "%d", &EGRESS) == 1); + transfilename = argv[2]; + coverfilename = argv[3]; + egressfilename = argv[4]; + assert(sscanf(argv[5], "%d", &MAX) == 1); assert(sscanf(argv[6], "%d", &ROUTE) == 1); assert(sscanf(argv[7], "%d", &SETS) == 1); + assert(sscanf(argv[8], "%d", &TRACE) == 1); + + if (argc == 10) { + BGP = 1; + aspathfilename = argv[9]; + } else if (argc == 11) { + aspathfilename = argv[9]; + if (!(strcmp(aspathfilename, "0") == 0)) { + BGP = 1; + } + PREFIX = 1; + subnetsfilename = argv[10]; + } + + fprintf(stdout, "BGP = %d, PREFIX = %d\n", BGP, PREFIX); fprintf(stdout, "Reading the input graph...\n"); GetInputGraph(); + //fprintf(stderr, "N = %d\n", N); OpenOutputFiles(); time(&time1); fprintf(stdout, "Initialization: %d sec.\n", time1-time0); @@ -74,33 +103,79 @@ main(int argc, char **argv) TraverseRoute_SetFilters(s, d, s, fNIL); ComputeSets(d); SaveResults(d); + if (TRACE) + TraceCts(d); } time(&time4); fprintf(stdout, "Filter & set computation: %d sec.\n", time4-time2); } else { + + if (PREFIX) { + fprintf(stdout, "Loading subnets information ...\n"); + LoadSubnetsFile(subnetsfilename); + } + fprintf(stdout, "Computing the filter tables...\n"); AllocFilters(); UnsetFilters(); +/* if (BGP) { */ +/* /\* BGP *\/ */ +/* fprintf(stderr, "BGP\n"); */ +/* TraverseASPath_SetFilters(aspathfilename); */ +/* for (ftr_tmp = 0; ftr_tmp < N_ftr; ftr_tmp++) { */ +/* fprintf(stdout, "%d: %d\n", ftr_tmp, Filter2[ftr_tmp].n); */ +/* } */ +/* } else { */ +/* fprintf(stderr, "non BGP\n"); */ +/* for (s=0; s \n", argv[0]); + fprintf(stderr, "Usage: %s \n", argv[0]); exit(-1); } graphfilename = argv[1]; - coverfilename = argv[2]; - transfilename = argv[3]; + transfilename = argv[2]; + coverfilename = argv[3]; assert(sscanf(argv[4], "%d", &MAX) == 1); assert(sscanf(argv[5], "%d", &EGRESS) == 1); assert(sscanf(argv[6], "%d", &SETS) == 1); Binary files DPF/dpf/MP/main.o and DPF2/dpf/MP/main.o differ Binary files DPF/dpf/MP/output.o and DPF2/dpf/MP/output.o differ Binary files DPF/dpf/MP/preroute.o and DPF2/dpf/MP/preroute.o differ diff -rupN DPF/dpf/output.c DPF2/dpf/output.c --- DPF/dpf/output.c 2002-05-29 02:07:32.000000000 -0400 +++ DPF2/dpf/output.c 2007-01-17 11:50:16.000000000 -0500 @@ -32,12 +32,26 @@ void OpenOutputFiles() char *stafilename, *ctsfilename; int n = N; - assert(( stafilename = malloc(strlen(graphfilename)+10)) != NULL); - assert(( ctsfilename = malloc(strlen(graphfilename)+10)) != NULL); + assert(( stafilename = malloc(strlen(graphfilename)+40)) != NULL); + assert(( ctsfilename = malloc(strlen(graphfilename)+40)) != NULL); strcpy(stafilename, graphfilename); strcpy(ctsfilename, graphfilename); + strcat(stafilename, "."); + strcat(ctsfilename, "."); + strcat(stafilename, coverfilename); + strcat(ctsfilename, coverfilename); + + if (BGP) { + strcat(stafilename, ".BGP"); + strcat(ctsfilename, ".BGP"); + } + if (PREFIX) { + strcat(stafilename, ".PREF"); + strcat(ctsfilename, ".PREF"); + } strcat(stafilename, ".Sta"); strcat(ctsfilename, ".Cts"); + assert ((stafile = fopen(stafilename, "w")) != NULL); assert ((ctsfile = fopen(ctsfilename, "w")) != NULL); @@ -61,7 +75,7 @@ void SaveResults(NODE_ID t /* target des void SaveStats(NODE_ID t /* target destination */) /* Save the cardinalities of the S_at and C_st sets */ { - NODE_ID a; + NODE_ID a, j; COUNTER *S, *C; int i; @@ -72,9 +86,22 @@ void SaveStats(NODE_ID t /* target desti /* Calculate the cardinalities of the S_ta and C_ts sets for current t */ for(a=0; a ASfilter.$ID - - -# 2. RUNNING THE SIMULATOR: - -../dpf/dpf ASgraph.$ID ASfilter.$ID AStrans.$ID 0 1 0 0 - - -# 3. OUTPUT ANALYSIS: - -../measure/psi1 3 ASgraph.$ID > psi1.out -../measure/transpose ASgraph.$ID.Sta ASgraph.$ID.Sat -../measure/phi2 1 ASgraph.$ID > phi2.out -gzip -f ASgraph.$ID.{Cts,Sta,Sat} - -unset echo \ No newline at end of file diff -rupN DPF/get_ASgraph.pl DPF2/get_ASgraph.pl --- DPF/get_ASgraph.pl 2002-05-29 02:58:24.000000000 -0400 +++ DPF2/get_ASgraph.pl 1969-12-31 19:00:00.000000000 -0500 @@ -1,87 +0,0 @@ -#!/usr/bin/perl -# -# -# Copyright (C) Purdue University 2002 -# -# This program, which is part of the DPF software tool kit for -# static distributed denial-of-service (DDoS) performance evaluation -# developed at the Network Systems Lab, Purdue University, may be -# redistributed and/or modified under the terms of the GNU General -# Public License published by the Free Software Foundation. -# -# -# Technical Contact at Purdue University: -# -# Ali Selcuk (selcuk@cs.purdue.edu) or Kihong Park (park@cs.purdue.edu) -# -# For future version updates and related information, check the website -# http://www.cs.purdue.edu/nsl -# - - -$ID = $ARGV[0]; -$infilename = "ASpaths.$ID"; -$outfilename = "ASgraph.$ID"; -open(infile,"$infilename") || die("Cannot open input file $infilename"); -open(outfile,">$outfilename") || die("Cannot open output file $outfilename"); - - -while($line = ) { - - if ($line =~ "{") { - $line =~ /(.*)\{(.*)\}/; - $AS_SEQ = $1; - $AS_SET = $2; - } - else { - $AS_SEQ = $line; - $AS_SET = 0; - } - - # Process the AS_SEQ: - $lastas = 0; - @r = reverse(split(' ', $AS_SEQ)); - while($x = pop(@r)) { - # while !($x > 0) - if (!($x > 0)) { - next; - } - if (($lastas == 0) || ($lastas == $x) || $AdjMatrix{$lastas, $x}) { - $lastas = $x; - next; - } - $AdjMatrix{$lastas, $x}++; - $AdjMatrix{$x, $lastas}++; - $AdjList{$lastas} = join(':', $AdjList{$lastas}, $x); - $AdjList{$x} = join(':', $AdjList{$x}, $lastas); - $Degree{$lastas}++; - $Degree{$x}++; - $lastas = $x; - } - - if (!($AS_SET)) { - next; - } - # Process the AS_SET: - @r = split(',', $AS_SET); # 'reverse' not needed in AS_SET - while($x = pop(@r)) { - if (($lastas == 0) || ($lastas == $x) || $AdjMatrix{$lastas, $x}) { - next; - } - $AdjMatrix{$lastas, $x}++; - $AdjMatrix{$x, $lastas}++; - $AdjList{$lastas} = join(':', $AdjList{$lastas}, $x); - $AdjList{$x} = join(':', $AdjList{$x}, $lastas); - $Degree{$lastas}++; - $Degree{$x}++; - } -} - - -foreach $key ( sort numerically ( keys %AdjList)) { - printf outfile "%d\t->\t%d\t%s\n", $key, $Degree{$key}, $AdjList{$key}; -} - - -sub numerically { $a <=> $b ;} - diff -rupN DPF/get_ASpaths.pl DPF2/get_ASpaths.pl --- DPF/get_ASpaths.pl 2002-05-29 02:58:24.000000000 -0400 +++ DPF2/get_ASpaths.pl 1969-12-31 19:00:00.000000000 -0500 @@ -1,41 +0,0 @@ -#!/usr/bin/perl -# -# -# Copyright (C) Purdue University 2002 -# -# This program, which is part of the DPF software tool kit for -# static distributed denial-of-service (DDoS) performance evaluation -# developed at the Network Systems Lab, Purdue University, may be -# redistributed and/or modified under the terms of the GNU General -# Public License published by the Free Software Foundation. -# -# -# Technical Contact at Purdue University: -# -# Ali Selcuk (selcuk@cs.purdue.edu) or Kihong Park (park@cs.purdue.edu) -# -# For future version updates and related information, check the website -# http://www.cs.purdue.edu/nsl -# - - -$ID = $ARGV[0]; -$infilename = "ASmap.$ID"; -$outfilename = "ASpaths.$ID"; -open(infile, "$infilename") || die("Cannot open input file $infilename"); -open(outfile, ">$outfilename") || die("Cannot open output file $outfilename"); - -while($line = ) { - if ($line =~ "LocPrf") { - last; # break - } -} - -while($line = ) { - if ($line =~ s/(^.* 0 )//) { - print outfile $line; - } -} - -close(infile); -close(outfile); diff -rupN DPF/get_AStrans.pl DPF2/get_AStrans.pl --- DPF/get_AStrans.pl 2002-05-29 02:58:25.000000000 -0400 +++ DPF2/get_AStrans.pl 1969-12-31 19:00:00.000000000 -0500 @@ -1,60 +0,0 @@ -#!/usr/bin/perl -# -# -# Copyright (C) Purdue University 2002 -# -# This program, which is part of the DPF software tool kit for -# static distributed denial-of-service (DDoS) performance evaluation -# developed at the Network Systems Lab, Purdue University, may be -# redistributed and/or modified under the terms of the GNU General -# Public License published by the Free Software Foundation. -# -# -# Technical Contact at Purdue University: -# -# Ali Selcuk (selcuk@cs.purdue.edu) or Kihong Park (park@cs.purdue.edu) -# -# For future version updates and related information, check the website -# http://www.cs.purdue.edu/nsl -# - - -$ID=$ARGV[0]; -$infilename="ASpaths.$ID"; -$outfilename="AStrans.$ID"; -open(infile,"$infilename") || die("Cannot open input file $infilename"); -open(outfile,">$outfilename") || die("Cannot open output file $outfilename"); - -while($line=) -{ - # Process the AS path: - @r = reverse(split(' ', $line)); - $last_as = -1; - $n_list = 0; - while ($as = pop(@r)) { - if ($as =~ /\D/) { last;} - # Check for duplicate entries: - if ($last_as != $as) { - $as_list[ $n_list++ ] = $last_as = $as; - } - } - - # Now process the duplicate-free AS path: - for ($i = 1; $i < ($n_list - 1); $i++) { - $Transit{$as_list[$i]} = 1; - } - - # If the AS path includes an AS_SET, - # take the last entry of AS_SEQ as well: - if ($line =~ "{") { - $Transit{$as_list[$n_list - 1]} = 1; - } - -} - -foreach $key (keys %Transit) { - printf outfile "%5d\n", $key; -} - -close(infile); -close(outfile); diff -rupN DPF/Makefile DPF2/Makefile --- DPF/Makefile 2002-05-01 01:11:21.000000000 -0400 +++ DPF2/Makefile 1969-12-31 19:00:00.000000000 -0500 @@ -1,11 +0,0 @@ -all: - cd dpf; make - cd dpf/MP; make - cd vc; make - cd measure; make - -clean: - cd dpf; make clean - cd dpf/MP; make clean - cd vc; make clean - cd measure; make clean diff -rupN DPF/measure/Makefile DPF2/measure/Makefile --- DPF/measure/Makefile 2002-04-29 19:40:36.000000000 -0400 +++ DPF2/measure/Makefile 2007-01-16 14:35:42.000000000 -0500 @@ -1,8 +1,10 @@ CC = cc CFLAGS = -O -PROGS = phi1 phi2 phi3 psi1 transpose +PROGS = phi1 phi2 phi3 psi1 transpose phi1_percent phi2_percent psi1_percent +PROGS2 = phi1_percent_range phi2_percent_range psi1_percent_range +PROGS3 = phi1_range phi2_range psi1_range -all: $(PROGS) +all: $(PROGS) $(PROGS2) $(PROGS3) phi1: phi1.c types.h $(CC) $(CFLAGS) -o $@ $@.c @@ -12,7 +14,25 @@ phi3: phi3.c types.h $(CC) $(CFLAGS) -o $@ $@.c psi1: psi1.c types.h $(CC) $(CFLAGS) -o $@ $@.c +phi1_percent: phi1_percent.c types.h + $(CC) $(CFLAGS) -o $@ $@.c +phi2_percent: phi1_percent.c types.h + $(CC) $(CFLAGS) -o $@ $@.c +psi1_percent: psi1_percent.c types.h + $(CC) $(CFLAGS) -o $@ $@.c +phi1_percent_range: phi1_percent_range.c types.h + $(CC) $(CFLAGS) -o $@ $@.c +phi2_percent_range: phi2_percent_range.c types.h + $(CC) $(CFLAGS) -o $@ $@.c +psi1_percent_range: psi1_percent_range.c types.h + $(CC) $(CFLAGS) -o $@ $@.c +phi1_range: phi1_range.c types.h + $(CC) $(CFLAGS) -o $@ $@.c +phi2_range: phi2_range.c types.h + $(CC) $(CFLAGS) -o $@ $@.c +psi1_range: psi1_range.c types.h + $(CC) $(CFLAGS) -o $@ $@.c transpose: transpose.c $(CC) $(CFLAGS) -o $@ $@.c clean: - $(RM) $(PROGS) core + $(RM) $(PROGS) $(PROGS2) $(PROGS3) core diff -rupN DPF/measure/phi1_percent.c DPF2/measure/phi1_percent.c --- DPF/measure/phi1_percent.c 1969-12-31 19:00:00.000000000 -0500 +++ DPF2/measure/phi1_percent.c 2007-01-16 14:35:43.000000000 -0500 @@ -0,0 +1,93 @@ +/* + +Copyright (C) Purdue University 2002 + +This program, which is part of the DPF software tool kit for +static distributed denial-of-service (DDoS) performance evaluation +developed at the Network Systems Lab, Purdue University, may be +redistributed and/or modified under the terms of the GNU General +Public License published by the Free Software Foundation. + + +Technical Contact at Purdue University: + +Ali Selcuk (selcuk@cs.purdue.edu) or Kihong Park (park@cs.purdue.edu) + +For future version updates and related information, check the website +http://www.cs.purdue.edu/nsl + +*/ + + +#include "types.h" + +float Phi1(int); +FILE *stafile; +int N; +COUNTER *S_t; +NODE_ID indexcnt; +int percentile(COUNTER *); + +main(int argc, char **argv) +{ + char *stafilename; + int x; + float y; + + assert(sscanf(argv[1], "%d", &x) == 1); + assert((stafilename = (char*)malloc(strlen(argv[2])+10)) != NULL); + strcpy(stafilename, argv[2]); + strcat(stafilename, ".Sta"); + assert((stafile = fopen(stafilename, "r")) != NULL); + + fread(&N, sizeof(int), 1, stafile); + assert((S_t = (COUNTER*)calloc(N, sizeof(COUNTER))) != NULL); + + assert(sscanf(argv[3], "%f", &y) == 1); + + if (y < 1) { + indexcnt = N * y; + } else { + indexcnt = N - 1 - y; + } + + printf("Phi1(%d) = %f\n", x, Phi1(x)); +} + + +float Phi1(int x) +{ + NODE_ID t; + int count=0; + int value; + + fseek(stafile, (long)4, SEEK_SET); + for (t=0; t 0 ) { + int c; + id2as[id = nodeid++] = as; + as2id[as] = id; + /* Skip the rest of the line */ + while( ((c = getc(graphfile)) != '\n') && (c != EOF)) ; + } + fclose(graphfile); + + if ((filterfile = fopen(asfilters, "r")) == NULL) { + fprintf(stderr, "filterfile %s is not found\n",asfilters); + exit(1); + } + N_filter = 0; + while (fscanf(filterfile, "%d\n", &as) > 0 ) { + N_filter++; + //fprintf(stderr, "as = %d\n", as); + idpf[as2id[as]] = 1; + } + fclose(filterfile); +} +void Phi1() +{ + NODE_ID s, t; + int value, i; + + fseek(stafile, (long)4, SEEK_SET); + for (t=0; t 0 ) { + int c; + id2as[id = nodeid++] = as; + as2id[as] = id; + /* Skip the rest of the line */ + while( ((c = getc(graphfile)) != '\n') && (c != EOF)) ; + } + fclose(graphfile); + + if ((filterfile = fopen(asfilters, "r")) == NULL) { + fprintf(stderr, "filterfile %s is not found\n",asfilters); + exit(1); + } + N_filter = 0; + while (fscanf(filterfile, "%d\n", &as) > 0 ) { + N_filter++; + //fprintf(stderr, "as = %d\n", as); + idpf[as2id[as]] = 1; + } + fclose(filterfile); +} + +void Phi2() +{ + NODE_ID a, t; + int value, i; + + fseek(satfile, (long)4, SEEK_SET); + for (a=0; a 0 ) { + int c; + id2as[id = nodeid++] = as; + as2id[as] = id; + /* Skip the rest of the line */ + while( ((c = getc(graphfile)) != '\n') && (c != EOF)) ; + } + fclose(graphfile); + + if ((filterfile = fopen(asfilters, "r")) == NULL) { + fprintf(stderr, "filterfile %s is not found\n",asfilters); + exit(1); + } + N_filter = 0; + while (fscanf(filterfile, "%d\n", &as) > 0 ) { + N_filter++; + //fprintf(stderr, "as = %d\n", as); + idpf[as2id[as]] = 1; + } + fclose(filterfile); +} + +void Psi1() +{ + NODE_ID s, t; + int value, i; + + fseek(ctsfile, (long)4, SEEK_SET); + for (t=0; t = 19971108. -The data are based on the Route Views Project's BGP dump file for -November 8, 1997, ASmap.19971108.879009857.gz at -http://moat.nlanr.net/Routing/rawdata/ . - -- get_ASgraph.pl, get_ASpaths.pl, get_AStrans.pl -These are the perl script files for creating the simulator input -from a raw BGP dump file. Their usage is discussed in Section 4.1. - -- doc/ This directory includes a detailed documentation of the -simulator package. - - -3. INSTALLATION - -Running "make" at the simulator's home directory will generate all the -executables for the simulator as well as for the auxiliary tools. - -One point that needs extra care is the path information on the first line -of the perl script files. The paths for perl (or csh) may differ from system -to system, and it is the user's responsibility to make sure that the path -information at the beginning of the script files is updated according to -the host system. -(Alternatively, the scripts can be run without modifying the files by -preceeding the call to these commands with "perl".) - -To date, the package have been installed and tested on Intel x86 -machines running Linux 2.4 and Sun Ultra-2 machines running Solaris 2.6. - - -4. USING THE SIMULATOR - -4.1. PREPARING THE INPUT - -The DPF simulator takes three files as input: One file specifying the AS -graph topology in an adjacency list representation, one file listing the -filter nodes, and a third file listing the transit nodes in the network. -The following four-step procedure describes a basic way of preparing these -input files. These steps are not an integral part of the DPF tool and can -be skipped if the input files are obtained by other means. - -Before executing the following procedure, a BGP dump table in the format -of the Oregon Route Views Project's dump tables must be present in the -simulator's home directory. The name of this file must be in the form of -"ASmap.", where is the identifier of the data, usually the date -of the dump, such as 19990101. - - -Step 1: Extracting the AS paths from the BGP dump file - Command: get_ASpaths.pl - Product: ASpaths. - -Step 2: Deducing the graph topology from the AS paths - Command: get_ASgraph.pl - Product: ASgraph. - -Step 3: Identifying the transit nodes - Command: get_AStrans.pl - Product: AStrans. - -Step 4: Computing a vertex cover for the filter placement - Command: vc/vc.trans ASgraph. AStrans. > ASfilter. - Product: ASfilter. - - -4.2. RUNNING THE SIMULATOR - -The basic command to run the simulator with the input files , -, and , which are respectively the files that include -the graph topology, the list of filter nodes, and the list of transit -nodes, is - -% dpf/dpf 0 1 0 0 - -Each of the numeric arguments 0, 1, 0, 0 is the typical value of a -command-line option, which are explained in detail in the dpf_doc.ps -document in this directory. - -The output of this simulation run would be two files, .Sta and -.Cts. These files list the cardinality of the S_at and C_st sets -which are discussed in the dpf_doc.ps document and further in [1, 2]. -Another useful file .Sat can be derived as, - -% measure/transpose .Sta .Sat - - -4.3. EVALUATING THE OUTPUT - -There are numerous ways to measure the effectiveness of the filtering -protocol. We provide the tools for calculating four of the important -measures discussed by Park and Lee [1, 2]: Phi1, Phi2, Phi3, and Psi1. -The call structure for these functions is - -% measure/ - -where is one of phi1, phi2, phi3, psi1, is the value of the -function to be computed, and is the name of the graph file whose -output is to be used. For example, to compute Phi2(1) on the simulation -output of , the command is - -% measure/phi2 1 - -and the command for computing $\Psi_1(5)$ is - -% measure/psi1 5 - - -REFERENCES - -1. Kihong Park and Heejo Lee. A proactive approach to distributed DoS -attack prevention using route-based packet filtering. Technical Report -CSD-TR 00-017, Department of Computer Science, Purdue University, December -2000. - -2. Kihong Park and Heejo Lee. On the effectiveness of route-based packet -filtering for distributed DoS attack prevention in power-law internets. -In SIGCOMM'01. August 2001. - - diff -rupN DPF/vc/Makefile DPF2/vc/Makefile --- DPF/vc/Makefile 2002-05-01 00:25:38.000000000 -0400 +++ DPF2/vc/Makefile 1969-12-31 19:00:00.000000000 -0500 @@ -1,13 +0,0 @@ -CC = cc -CFLAGS = -O -PROGS = vc.ntrans vc.trans - -all: $(PROGS) - -vc.ntrans: vc.ntrans.c - $(CC) $(CFLAGS) -o $@ $@.c -vc.trans: vc.trans.c - $(CC) $(CFLAGS) -o $@ $@.c - -clean: - $(RM) $(PROGS) core diff -rupN DPF/vc/vc.ntrans.c DPF2/vc/vc.ntrans.c --- DPF/vc/vc.ntrans.c 2002-05-24 03:50:03.000000000 -0400 +++ DPF2/vc/vc.ntrans.c 1969-12-31 19:00:00.000000000 -0500 @@ -1,148 +0,0 @@ -/* - -Copyright (C) Purdue University 2002 - -This program, which is part of the DPF software tool kit for -static distributed denial-of-service (DDoS) performance evaluation -developed at the Network Systems Lab, Purdue University, may be -redistributed and/or modified under the terms of the GNU General -Public License published by the Free Software Foundation. - - -Technical Contact at Purdue University: - -Ali Selcuk (selcuk@cs.purdue.edu) or Kihong Park (park@cs.purdue.edu) - -For future version updates and related information, check the website -http://www.cs.purdue.edu/nsl - -*/ - - -/* - Tie-breaking according to original degrees. -*/ - -#include -#include -#include - -#define MAXASN 65536 -#define MAXEDGE 1000000 - - -typedef struct { - int x; - int y; - int checked; -} EDGE; - -char taken[MAXASN]={0}; -int degree[MAXASN], orgdegree[MAXASN]; -int as2id[MAXASN], id2as[MAXASN]; -EDGE edge[MAXEDGE]; -int N, N_edge, N_checked; - -void read_graph(); -int find_maxdegree(); -int find_vc2(); - - -main(int argc, char **argv) -{ - int as, id, i; - - if (argc != 2) { - fprintf(stderr, "Usage: %s \n", argv[0]); - exit(-1); - } - N = N_edge = N_checked = 0; - for (i=0; i maxdegree) || - (degree[i]==maxdegree && maxdegree>0 && orgdegree[i]>maxorg)) { - max_i = i; - maxdegree = degree[i]; - maxorg = orgdegree[i]; - } - } - return max_i; -} - - - - -void read_graph(char *graphname) -{ - FILE *graphfile; - int i, j, k, as, id, neighbor, deg; - char checked[MAXASN]; - - if ((graphfile = fopen(graphname, "r")) == NULL) { - fprintf(stderr, "graphfile %s is not found\n",graphname); - exit(1); - }; - - N = 0; - while (fscanf(graphfile, "%d", &as) > 0 ) { - int c; - id2as[id = N++] = as; - as2id[as] = id; - /* Skip the rest of the line */ - while( ((c = getc(graphfile)) != '\n') && (c != EOF)) ; - } - - rewind(graphfile); - while (fscanf(graphfile, "%d -> %d\t", &as, °) == 2) { - for (j=0; j < 65536; j++) - checked[j] = 0; - checked[as] = 1; - - while (fscanf(graphfile, ":%d", &neighbor) == 1) { - if ( !checked[neighbor] ) { - checked[neighbor] = 1; - edge[N_edge].x = as2id[as]; - edge[N_edge].y = as2id[neighbor]; - edge[N_edge].checked = 0; - N_edge++; - degree[as2id[as]]++; - } - } - } - for (i=0; i -#include -#include - -#define MAXASN 65536 -#define MAXEDGE 1000000 - - -typedef struct { - int x; - int y; - int checked; -} EDGE; - -char taken[MAXASN]={0}, transitness[MAXASN]={0}; -int degree[MAXASN], orgdegree[MAXASN]; -int as2id[MAXASN], id2as[MAXASN]; -EDGE edge[MAXEDGE]; -int N, N_edge, N_checked; - -void read_graph(); -int find_maxdegree(); -int find_vc2(); - - -main(int argc, char **argv) -{ - FILE *transfile; - int as, id, i; - - if (argc != 3) { - fprintf(stderr, "Usage: %s \n", argv[0]); - exit(-1); - } - N = N_edge = N_checked = 0; - for (i=0; i maxdegree) || - (degree[i]==maxdegree && maxdegree>0 && orgdegree[i]>maxorg))) { - max_i = i; - maxdegree = degree[i]; - maxorg = orgdegree[i]; - } - } - return max_i; -} - - - - -void read_graph(char *graphname) -{ - FILE *graphfile; - int i, j, k, as, id, neighbor, deg; - char checked[MAXASN]; - - if ((graphfile = fopen(graphname, "r")) == NULL) { - fprintf(stderr, "graphfile %s is not found\n",graphname); - exit(1); - }; - - N = 0; - while (fscanf(graphfile, "%d", &as) > 0 ) { - int c; - id2as[id = N++] = as; - as2id[as] = id; - /* Skip the rest of the line */ - while( ((c = getc(graphfile)) != '\n') && (c != EOF)) ; - } - - rewind(graphfile); - while (fscanf(graphfile, "%d -> %d\t", &as, °) == 2) { - for (j=0; j < 65536; j++) - checked[j] = 0; - checked[as] = 1; - - while (fscanf(graphfile, ":%d", &neighbor) == 1) { - if ( !checked[neighbor] ) { - checked[neighbor] = 1; - edge[N_edge].x = as2id[as]; - edge[N_edge].y = as2id[neighbor]; - edge[N_edge].checked = 0; - N_edge++; - degree[as2id[as]]++; - } - } - } - for (i=0; i