19
1 Fast and Memory-Efficient Regular Expression Matching for Deep Packet Inspection Fang Yu Microsoft Research, Silicon Valley Work was done in UC Berkeley, jointly with Zhifeng Chen (Google Inc); Yanlei Diao (Umass, Amherst); T. V. Lakshman (Bell Labs); Randy H. Katz (UC

Fast and Memory-Efficient Regular Expression Matching for Deep Packet Inspection

  • Upload
    craig

  • View
    78

  • Download
    0

Embed Size (px)

DESCRIPTION

Fast and Memory-Efficient Regular Expression Matching for Deep Packet Inspection. Fang Yu Microsoft Research, Silicon Valley Work was done in UC Berkeley , jointly with Zhifeng Chen (Google Inc); Yanlei Diao (Umass, Amherst); T. V. Lakshman (Bell Labs); Randy H. Katz (UC Berkeley). - PowerPoint PPT Presentation

Citation preview

  • *Fast and Memory-Efficient Regular Expression Matching for Deep Packet InspectionFang YuMicrosoft Research, Silicon Valley

    Work was done in UC Berkeley, jointly with Zhifeng Chen (Google Inc); Yanlei Diao (Umass, Amherst);T. V. Lakshman (Bell Labs); Randy H. Katz (UC Berkeley)

    Ph.D. Qualifying Exam

  • Regular ExpressionsFlexible way to describe pattern Example: for detecting yahoo messenger traffic^(ymsg|ypns|yhoo).?.?.?.?.?.?.? [lwt].*\xc0\x80

    Used in many payload scanning applicationsL7-filter: protocol identifiersBro: intrusion patternsSNORT: No regular expression in April 20031131 out of 4867 intrusion rules contain regular expressions as of Jan 2006

    *

  • ChallengesFeatures specific to packet scanning applications

    Large set of patterns, order of 100s or 1000s

    *

    SnortL7-filterXML filtering# of regular expressions analyzed1555701,000-100,000% of patterns with wildcards ., +, ?, *74.9%75.7%50% -100%Average # of wildcards per pattern 4.77.01-2% of patterns with class [ ]31.6%52.8%0Average # of classes per pattern8.04.80% of patterns with length restrictions on classes or wildcards56.3%21.4%0

  • Design Space*Automata-based ApproachesDFA-based NFA-based Patterns (A|B)C and (A|D)EA group of states can be activated simultaneouslyOnly one state is activated High percentage of wildcardsNFA-based approaches can be slow, sometimes less than 1Mb/sRepeated ScanOne Pass Scan Start scanning from one position, if no match, start again at the next positionGood for parsersPackets may not contain any patternsNo guarantee of high speedScan the input only onceFast and deterministic throughputAdd .* before patternsSome patterns generate very large DFA

    m Individual DFA for m patterns One composite DFA for m patternsO(m) processing complexity for each input characterO(1) processing complexity for each input characterRewrite techniques to reduce memory usageMake DFA-based approach feasible

    ContributionsSelectively group patterns into k groups (e.g., k=3)Avoid exponential memory growthFurther speed up matching process

    (Space Problem)

    Start

    3

    A|D

    4

    2

    E

    C

    A|B

    1

    Start

    5

    D

    2

    E

    C

    B

    1

    3

    4

    A

    C

    E

  • DFA Sizes of Regular Expressions*Typical patterns in network payload scanning applications

    Rewrite Rule 2 Focus of this talkRewrite Rule 1

    Pattern featuresExample# of states% ofpatternsAverage #of states1) Explicit strings with k characters^ABCD.*ABCDk+125.1%23.632) Wildcards^AB.*CD.*AB.*CD k+118.82%27.203) Patterns with ^, a wildcard, and a length restriction j ^AB.{j+}CD^AB.{0, j}CD^AB.{j}CDO(k*j)44.7%180.314) Patterns with ^, a class of characters overlaps with the prefix, and a length restriction j ^A+[A-Z]{j}DO(k+j2)j~3705.11%1369035) Patterns with a length restriction j, where a wildcard or a class of characters overlaps with the prefix.*AB.{j}CD.*A[A-Z]{j+}DO(k+2j)j~3446.27%>2214

  • Design ConsiderationsCompleteness of matching results for one patternComplete matching Report all the possible substrings E.g., a pattern ab* and an input abbbFour possible matches, i.e., a, ab, abb, and abbb

    Non-overlapping matchingCommon practice: left-most longest match, shortest match results

    In most payload scanning applications, for one pattern, reporting non-overlapping matching result is sufficient *

  • Patterns with Exponential DFA SizesOften for detecting buffer overflow attempts, e.g., .*AUTH\s[^\n]{100} DFA needs to remember all the possible AUTH\s A second AUTH\s can either match [^\n]{100} or be counted as a new match of the start of the pattern AUTH\sGenerate a DFA of >100,000 statesCant be efficiently processed by an NFA-based approach either

    *NFA for .*AUTH\s[^\n]{100} Input AUTH\sAUTH\s AUTH\s\s AUTH\s\s\s

  • Rewriting IntuitionOnly the first AUTH\s mattersIf there is a \n within the next 100 bytesNone of the AUTH\s matches the patternOtherwise, the first AUTH\s and the following characters have already matched the patternRewrite the pattern to:([^A]|A[^U]|AU[^T]|AUT[^H]|AUTH[^\s]|AUTH\s[^\n]{0,99}\n)*AUTH\s[^\n]{100} generates a DFA of only 106 statesThis rewritten pattern Report different numbers of matches from the original pattern in identifying complete matchesEquivalent in identifying non-overlapping patterns

    *

  • Rewriting Effect on the SNORT Rule Set *v

    Pattern featuresExample# of states% ofpatternsAverage #of states1) Explicit strings with k characters^ABCD.*ABCDk+125.1%23.632) Wildcards^AB.*CD.*AB.*CD k+118.82%27.203) Patterns with ^, a wildcard, and a length restriction j ^AB.{j+}CD^AB.{0, j}CD^AB.{j}CDO(k*j)44.7%180.314) Patterns with ^, a class of characters overlaps with the prefix, and a length restriction j ^A+[A-Z]{j}DO(k+j2)

    O(k+j)5.11%1369035) Patterns with a length restriction j, where a wildcard or a class of characters overlaps with the prefix.*AB.{j}CD.*A[A-Z]{j+}DO(k+2j)

    O(k+j)6.27%>2214

  • Rewriting Effect on the SNORT Rule Set Created scripts to automatically rewrite patterns

    *After rewriting, patterns in SNORT and Bro can be compiled into DFAs

    Type of RewriteRule SetNumber of Patterns Average Length RestrictionDFA Reduction RateRewrite Rule for Quadratic caseSnort17370>98%Bro000Rewrite Rule for Exponential CaseSnort19344>99%Bro49214.4>99%

  • Design Choices*Automata-based ApproachesDFA-based NFA-based Repeated ScanOne Pass Scan m Individual DFA for m patterns One composite DFA for m patternsO(m) processing complexity for each input characterO(1) processing complexity for each input characterRewrite techniques to reduce memory usageMake DFA-based approach feasible

    ContributionsSelectively group patterns into k groups (e.g., k=3)Further speedup matching processAvoid exponential memory growth

  • State Explosion ProblemRandomly adding patterns from the L7-filters into one DFA

    *

    Chart1

    3536

    3531

    3553

    3543

    3757

    4098

    5748

    7038

    7550

    7684

    7664

    22833

    22972

    23124

    23084

    23114

    23099

    23101

    26937

    29793

    29792

    29785

    29777

    29958

    30298

    30291

    30637

    30629

    30583

    36458

    36466

    42477

    49641

    55684

    # of patterns compiles together

    Total Number of States

    Sheet1

    128282121

    243342927

    363464239

    480555248

    5216183181176

    6243202201195

    7272229223222

    8290240234233

    9320249257242

    10329252259245

    11360274283267

    12437343353336

    13489579398572

    14553749455742

    15623941518934

    1667125235592516

    1773582226168215

    188581269973212692

    199791871184618704

    2010215304788153040

    Sheet1

    Sheet2

    totalstates36

    totalstates28

    totalstates42

    totalstates16

    totalstates52

    totalstates14

    totalstates40

    totalstates50

    totalstates15

    totalstates28

    totalstates17

    totalstates55

    totalstates42

    totalstates24

    totalstates15

    totalstates39

    totalstates27

    totalstates15

    totalstates20

    totalstates17

    totalstates16

    totalstates26

    totalstates21

    totalstates79

    totalstates40

    totalstates23

    totalstates39

    totalstates15

    totalstates46

    totalstates47

    totalstates41

    totalstates136

    totalstates27

    totalstates64

    totalstates29

    totalstates12

    totalstates15

    totalstates27

    totalstates56

    totalstates71

    totalstates21

    totalstates18

    totalstates40

    totalstates34

    totalstates31

    totalstates29

    totalstates174

    totalstates13

    totalstates48

    totalstates30

    totalstates667

    totalstates72

    totalstates9

    totalstates70

    totalstates64

    totalstates17

    totalstates39

    totalstates123

    totalstates121

    totalstates15

    totalstates28

    totalstates13

    totalstates22

    totalstates31

    totalstates21

    totalstates77

    totalstates13

    totalstates275

    3537

    Sheet2

    Pattern ID

    # of states in DFA

    Sheet5

    Accumulated size of separate DFAsCompiled into one DFA

    2334151588502334

    233456504243492335

    233470574950482335

    233496776870472336

    2334110857578462337

    2334125948387452338

    2334150113101106442339

    2334172129116122432340

    2334202148139141422336

    2334215151145144412333

    2334230155153148402329

    2334243158159151392326

    2334264173173166382327

    2334299202201195372328

    2334315213210206362330

    2334353244241237352330

    2334373257254250342330

    2334387264261257332330

    2334399270266263322331

    2334413278273271312332

    2334446303299296302331

    2334473319319312292327

    2334497337336330282328

    2334511361343354272345

    2334538381363374262345

    2334561399379392252347

    2334600431411424242347

    2334646450450443232327

    2334685479482472222324

    2334701500491493212336

    2334722509505502202331

    2334735527511520192343

    2334755540524533182343

    2334793570555563172342

    2334838623593616162357

    2334916694664687152357

    2334942769683762142413

    2334997838731831132434

    23341025866752859122441

    2334109510898151082112601

    2334114411428571135102612

    233411851360891135392796

    233412241659923165283063

    2334139718221089181573060

    2334157966611264665467724

    2334161885841296857759615

    2334228411665195511658412037

    2334255811961222211954312066

    2334262913995228613988214036

    2334268430486233430479130479

    Sheet5

    00

    00

    00

    00

    00

    00

    00

    00

    00

    00

    00

    00

    00

    00

    00

    00

    00

    00

    00

    00

    00

    00

    00

    00

    00

    00

    00

    00

    00

    00

    00

    00

    00

    00

    00

    00

    00

    00

    00

    00

    00

    00

    00

    00

    00

    00

    00

    00

    00

    00

    Accumulated size of separate DFAs

    Compiled into one DFA

    # of patterns

    # of states in DFA

    Sheet4

    &A

    Page &P

    # of Patterns Compiled Together

    Processing Complexity Cost (Red Solid Line)

    Storage Cost (Blue Dotted Line)

    Sheet3

    Accumulated size of separate DFAsCompiled into one DFA

    12828212120625920

    24334292719711719

    36346423918708718

    48055524817704417

    521618318117616699116

    624320220119515680915

    727222922322214661314

    829024023423313639013

    932024925724212614212

    1032925225924511588611

    1136027428326710562510

    12437343353336953419

    13489579398572851798

    14553749455742748947

    15623941518934645686

    1667125235592516555915

    17735822261682154106744

    1885812699732126923144193

    1997918711846187042195852

    20102153047881530401530401

    Sheet3

    Accumulated size of separate DFAs

    Compiled into one DFA

    # of Patterns

    # of states in the DFA

    &A

    Page &P

    # of Patterns grouped together

    Processing Complexity Cost (Red Solid Line)

    Storage Cost (Blue Dotted Line)

    nowtesting1:00totalstates3570353536

    nowtesting2:00totalstates5869283531

    nowtesting3:00totalstates12268423553

    nowtesting4:00totalstates12867163543

    nowtesting5:00totalstates39466523757

    nowtesting6:00totalstates74965144098

    nowtesting7:00totalstates243964405748

    nowtesting8:00totalstates377963507038

    nowtesting9:00totalstates430662157550

    nowtesting10:00totalstates446861287684

    nowtesting11:00totalstates446560177664

    nowtesting12:00totalstates19689595522833

    nowtesting13:00totalstates19870584222972

    nowtesting14:00totalstates20046572423124

    nowtesting15:00totalstates20021561523084

    nowtesting16:00totalstates20090553923114

    nowtesting17:00totalstates20102542723099

    nowtesting18:00totalstates20119531523101

    nowtesting19:00totalstates23975522026937

    nowtesting20:00totalstates26848511729793

    nowtesting21:00totalstates26863501629792

    nowtesting22:00totalstates26882492629785

    nowtesting23:00totalstates26895482129777

    nowtesting24:00:00totalstates27155477929958

    27535464030298

    27551452330291

    27936443930637

    27943431530629

    27943424630583now testing 42: total states 144081

    30329414736458now testing 43: total states 145497

    30378404136466now testing 44: total states 145742

    365253913642477now testing 45: total states 149579

    43716382749641now testing 46: total states 150643

    49823376455684now testing 47: total states 151520

    36295832

    3512

    3415

    3327

    3256

    3171

    3021

    18

    40

    34

    31

    29

    174

    13

    48

    30

    667

    72

    9

    70

    64

    17

    39

    123

    121

    15

    28

    13

    22

    31

    21

    77

    13

    275

    3536

    # of Patterns

    # of states in DFA

    &A

    Page &P

    # of patterns compiles together

    Total Number of States

  • Interactions of Regular Expressions Some patterns generate DFA of exponential sizesE.g., A DFA for pattern .*AB.*CD and .*EF.*GH*

    Start

    1

    2

    3

    S1

    A

    B

    C

    D

    A

    Not C, D or E

    Not C or E

    Not A, B or E

    C

    4

    5

    6

    S2

    E

    F

    G

    H

    E

    Not A, E or F

    Not A, G or H

    Not G, or A

    G

    A

    E

    E

    7

    8

    F

    A

    9

    B

    10

    S1

    D

    C

    C

    11

    S2

    H

    Not C, G or H

    G

    Not C, D or G

    E

    C

    Not C or F

    G

    C

    G

    A

    G

    Not A, B or G

    E

    A

    Matching AB

    Matching EF

    Matching AB and EF

    Not A or E

  • Grouping AlgorithmsFixed local memory limitation (NPU or multi-core architectures)Compute pair-wise interactive results, form a graphKeep adding patterns until reaching limit Pick a pattern with the fewest interactions to the new group

    Fixed total memory limitation (General single-core CPU architecture)First compute the DFA of individual patterns and compute the leftover memory sizeDistribute the leftover memory evenly among ungrouped expressions

    *

  • Experimental SetupRegular expression pattern setsLinux application layer filer (L7-filter): 70 regular expressionsPattern sets from Bro intrusion detection systemsHTTP related patterns: 648 patternsPayload related patterns: 223 patterns

    Packet traces:MIT dump: with viruses and worms Berkeley dump: normal traffic

    Scanners:Generated one pass scanning DFA scannerA NFA-based scanner PcregrepA repeated scanning DFA parser generated by flex

    *

  • Grouping Results for Patterns in L7-filter (70 patterns)*Results of grouping algorithms for fixed total memory Sum of individual DFAsNo extra memory cost70/12=5.83 timesless processing per character6.83MB of memory70/3=23.3 timesless processing per character No grouping

    Total DFA state LimitGroupsCompilation Time (s)3533703533125.6024000107.3356000813.1898000637.09810000537.92816000441.87032000349.976

  • Throughput Analysis*For Linux L7-filter (70 patterns)Using PCs with 3Ghz single core CPU and 4GB memory

    Chart2

    6.76219.228462.862690.821

    6.93216.858481.024728.327

    Without Grouping (70 DFA)

    10 Groups

    5 Groups

    3 Groups

    Mbps

    protocol single

    033

    125

    234

    314

    446

    511

    622

    742

    813

    925

    1015

    1135

    1240

    1321

    14120.0755.080.640.64

    153616.6740.56133.36324.48

    162589.42144.9715.361159.2

    1713

    1818

    1917

    2014

    2124

    2218

    2375

    2437

    2521

    2631

    2712

    2839

    2926

    3037

    31134

    3225

    3362

    3426

    359

    3612

    3725

    3842

    3959

    4015

    4116

    4235

    4326

    4423

    4519

    46164

    479

    4844

    4928

    50617

    5162

    529

    5367

    5460

    5513

    5623

    57120

    58116

    5911

    6025

    619

    6220

    6329

    6413

    6575

    669

    67267

    68182

    6922

    snort single

    053

    146

    224

    373

    432

    532

    69

    79

    817

    925

    1026

    1111218

    1211218

    13271

    14110

    15219

    1667

    1719

    18226

    19538

    2034

    2145

    2241

    23112

    24140

    2542

    267

    270

    2874

    29109

    3038

    3141

    32109

    3323

    34325

    350

    3631

    3751

    38321

    3935

    4039

    4128

    4229

    4320

    44441

    4511726

    4611726

    4713

    4814

    4910

    5039

    51110

    5220

    53443

    54314

    5514

    560

    57510

    58265

    5916

    6014

    6112

    62168

    6320

    6426

    6511

    6622

    6731

    68522

    69510

    70510

    7113

    7232

    730

    74275

    75275

    7620

    7715

    78142

    7920

    80441

    818

    821020

    838

    84110

    85278

    8615

    87109

    8813

    89441

    9045766

    9145764

    9245767

    9345768

    9445770

    95110

    9624834

    9724834

    98110

    9959

    10060

    10114

    10211

    10313

    10421

    105441

    10610

    107131

    10896

    10922

    1108

    1118

    11215

    11316

    11479

    11515

    116110

    11714

    118111

    119109

    12011

    12134

    122110

    123110

    12420

    125203

    1268

    127272

    128109

    12978

    13033

    13134

    13237

    13328

    134116

    135115

    13614

    13719

    13820

    139110

    14015

    141116

    142117

    143113

    14415043

    145259

    146210

    14715

    14811

    149115

    15020

    15113

    15213

    15341013

    15441013

    155110

    156120

    15724

    15813972

    15913972

    16074

    161442

    16250

    163114

    16422

    165282

    166114

    167266

    168110

    169111

    17059

    17161

    17214

    17313

    17414

    17520

    1768009

    1778009

    178265

    17916

    18014

    181536

    18246

    18346

    18430

    18510512

    18626

    18732

    1886

    18917

    19060

    1916

    1926

    193110

    19415

    19512

    196110

    1971035

    19812

    protocol pair

    Note: the diagnal is the single rule dfa size

    1 DFA3325341446112242132515354021123625131817142418753721311239263713425622691225425915163526231916494428617629676013231201161125920291375926718222

    Rule #0123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869

    1 DFARule #2 DFA

    330335563431094051714254441796950416554425046435347104665060416855661665895603841547188445160555248193381236164691389615242521541624054384958421043829621151

    2515525893589498911032653626361533357463438363545391547042623389501571544583473139102211148363664514676190301044876924428871216154142138336530414836943342133344

    3426389344418685230189537345503706242665543686244544816178511354293663062088915495404717811926545587156531451963919698284151841169244909924630641733950100451234543298452

    143433544145621315223352545503122463523282624342885473141224936471443572361922355169252645363329174185438627721977702333130126213518303923851927719232

    4641098918656469718518762131574158274548067557263566660255126638654263712572018616391529021244424457661447669122317512029216744075417524710575284298601295162885712854598678112

    115404985219711705525322212247281943322035262131258244283819463310316349100521919324866222942333026171169355733177171101253259175203183216275120912027441746

    2265189230311857022607443335358393054433182673242369355394930574486198891269127304363773379534441371822612392635804913112481481851802943263893311392728549474

    4277111018952187556042736352185785950746351887352625611375596950776475228109176114475062809753787364615720247176118655100581892245110226932649634758104511434730548860

    13842325323622574731352241474941214534222524233227140573050217239139141326935192652781222423503532611761866357321641674793642127123205218293623822140725631

    2595465733513132436352253629561433357463460563545399658425233604758180681057030324663803664564744401853015471638834810618834441641723245304168341143028820643

    15104436452557223352243615160513223473624292825352986483242235037481453673372023365370262646373530175205539628732078712435131127223620314024862027820033

    351117926350345415122531851472951603589238448556462121034557491401465285433985912237626138027541130283522137461642498426951302404572675005140773344161495363536514129840552594425940868712347

    4012696170508247587849615189405748726149545350605411173576748756273170619862454861789551527162595520045806465398451039649591561524761455665491114530321858

    211350536231742839594143322385721295342304645314135925438482956435416253905426304259763244524340361812672566347937958830441481442843263757301033428421239

    1214413342225419305021332344482912443321262622322683452939204734451423370341720335067232443343127172175236625701775682131128124193317283721831727519130

    361565576646804354744557478572534436574550494656501076953634471586916657955841445774914749675855511964176606499441999245551521484357415261451074129921654

    2516544655356732436334463656614233572534393835453996584252336047581554683473033466380363756474440185306549638833088813444141137324630415034963028820343

    1317423443235520315122342446493021453413272623332784463040214835461433471351821345168242544353228173185337626711876692232129125203418293822841827619231

    1818503868287235828825602921254462650392718292838321516435552695431461463774392434721571332928614942691912378407472142182944647138134286023344129872641534440

    171946366226632667732456281035345264938262917273731144613456257642111145367338233043781082827543936531792161397921292078773948131127245621334028862541328635

    1420433544245621325223352545503122463523282714342885473141224936471443572361922355269242645363329174195438627721977702333130126213519303923851927719232

    2421534554346631426232453557604132564533383734243895574151325942571544582462932456279353655464339184296448637822987803343140136314529404932952928720242

    1822473948286025365627392949543526503927323128381889503545265340511473976392326395673293049403733178235742631762381742737134130253923344327892328119636

    7523104154161852558293113140968614011192831079684151144859589751089210283108971082711601971638083961131308616110697948923480301163688133136194345849425927783968091156842018033725393

    372466707847126445575575848146735445695846646147575010837546445725970182731097542455875924869685956521974214576650955311117546561691774458425373461194230021555

    2125504251316328395930423252573829534230353431413592542148295643541514279432629425976323352434036181266145634792683773040137133284226374630912628419939

    31266062135418638496950524285674839635240555641514510264483139665364171629963363952698642536253504619136816564489451049740501571533852364762401123629438949

    1227413342225419305021332343482920443321262522322683452939124734451413370341720335067232443343127172175236625701775682131128124193317283721831727519030

    39286889934926346577772605039875564771604895764959531087256664739617222396141110444760779450120706170531984432699652976812642248582042605860445588481334430121757

    26295550663671334464394737596243345847354342364240975943533461265915950875131344764813741574845411863169536398434928535451451413347314255341003128920444

    37306615730647257103867513958481227354456958461461114757511087054644572593727215420915942455875924813768595652197422371571175199932092351158825225344584253149462034230076155

    13431166154208144201163198228141180145376170162142166155143146145144154147271182151171141223159272134153196154140153224363269145144180168161185315139217156887351137201231174163260255147179139150157145203142535467158

    253258458935864989109326836261615333574634373635453916073426233965015415325854631429921414736356957507620130993576824228901156054147139366830414836943342035747

    623395831547216310012617669105733809890709583717473728276197109799970141872091968562886879187480198738110793861132376719788834329651272311119118919776105677885731317046036485

    263460479536915291114357037275625434584735393836463916375436334110511591544688263244110225142373773605978204311004977626230931246355151147397031425037963442535549

    93538314019521927471930204145261741301824231929238042263617443142140316832917304764202240312924169145034622671573661829126122173014253518811427219127

    1236413947229019305026322313048302044332134302232268345293920473445153427944171233506723384334312717217102456257022801342131138146192917284221881727519230

    253754102178352123243625246362836142335746347243354539965842523360475822499187110303325638036585647874018530196111638833620326034442963854946304198341263028856643

    423871211119514444863807863535227859507463511577852625611375596950776475363214480225475063429753140736461572024644223865410370455592529068296649634658104512054730532875

    5939881482656924466779712280701379576679180681331086979731309276866794819226914719814264678097597012990811847421964209153672117902042236878266310143806475149681916432241977

    1540443645255722335324362646513223473624292824352986483242235037481453673372023365370152746373430175205539628732078712434131127223620314024862027819333

    16415136582666297978236426164524424493725282726363016169335324120411371443581372238581401292716695043661992168387371781984844045148144296421323927852442233940

    354260647145144425373505646249715243675644615445554910668526243705768180691077340435673904669355754501934016772648934610421544541671874456405166441124029821353

    264355515636763344643547378462433458473549393646409759435334614859168579360313447648137505726454118631124606398431891543545154152334731425135973128920444

    23445246533369304161324435269594031554432423633433794564050317045561615086592931876118434435445233818328133536368128861653242149145284428394832942829120441

    19454876145291222637576140305155362751402869532939338952364627534152185761137824274057743066504138191782410879632773911811128531721672640243580281252428136837

    16446193190196174317171182202176185175302200181172196185173191179174184178234197181191172198186197315201237204169172185202219175199193186183178164169366204777222171231431173183300331171185169180191173235169422342182

    94738303918511626471830204045261741301823211929238042263617443142139306731141730466420214031282416994933622671472651828125121163013253418801427218727

    44481231041965420293123176661545545780725276655378615464573011456181523266923721799197100501021964422095568167124133108366494410824203975121427410673364386971544960995513352727464130

    28496148983892559211835713926764563660493740393848421637645653699531571563588493445111238153393872605379204331082877724531931246657150142397133445139973642335550

    617506467692841627167473363565573263862850056536346256496386267477926276376316886506346446256526391175887768834776622625638654672628737648639636632777622242077761767571184925596266369269876246386226337856268026228801373635

    6251912445187240717780100164837314098797094837121412972827613395798970978419935124232926267708310311773178938481772226739724567562106289341718236133369836778246712646732588380

    9523828411954174958164820774537174130182120192923136532645176834931372865301522367090201946312839171145131711106970672842123119164814253220781740323527

    67539687169771751101311897410678334103957599887682787787811941118310475126922092019012793738020345520478841048986118231722149384928970672461239618619474106728390781347546137185

    605415212124470247125124224791887141696886892816994777080743451757797684228523523111523112466134260592223718421515416511143165274124255934167246601408941443412918765761157114968763493159

    135542619023105328151363424149493021453422463923332784463040214835115174601116318213452682440443532281731810666626712812314013331862162034182963221031827638831

    235652549933755948102424435535944315544324748334337945640503158458816354915529314490783445544542531832873576368242968933231491453144283958331042928630145

    12057154142246130284175185269127164131635156148128152141129138131130140134259169137157128204145252260147189151126138296682266131148167154149172300125364150926361123186414186149120274133164125136143131189128520444143

    11658162138306126298203180326123172127365152144124148137125134127126136130277177133153124260141253255139197147122146385966310127144187152145167331121386142987333119194434216145274116132172121132139127185124525436151

    1159403341216018294920322214147281943322028242131258344283819583344147367639171949491432229443328261711697396246916741292031133132113216273620821627919529

    25605465733512932436352453629861433357463460563545399658425233604758179681057030294663803664564744401853015471638834810618734441641723225304168341143028820543

    96138303918511626471830204045261741301823211929238042263617443142139306731141730466420214031282416913493362267147265182812512116309253418801427218727

    2062494150306227385829413155563728524129343330403491533747285542531504178422528415875313251423935180256044633782583762939136132274125204529912528319838

    2963584810039885193104366840259655737615038414039494315673466237885514915748855035429810414940396651488019134995178524632901156358143139366834452940983742329447

    1364423645235720315123342444493021453422292823322784463040214834461453673371821345168242744353228173185539626712078712233131127203418294013861827619931

    756510494123851289113914382114862591111038310796848786859589201119911128313310020320394131968188126205191868511297941252358013397802264781341491031041891858211480919886758346134193

    96638334519542027472130204045341741301826251929238042263617443142142337034141730476420244031282416914523662267177568182912812416301425371883927219627

    26767296421432277598274285305407288278868303284275299288276415413277287281337300284294275301289300535420460425272275288305322278422298289291281422272727423880325403461763276286520525279288272283423276461272267462285

    182682113339841926784174944882562062007122182121912162031923442861922021962532151993891902172047614673573643551911925663284191933392132042043683421874643551373883235371493388301444436195205187198294199341196462182265

    22695144523211246746031433334758393054433140353242369355394930574455158478549273043757733405344413718227130506358027851593145143151294327384731932728526522

    snort pair

    1 DFA5346247332329917252611218112182711102196719226538344541112140427074109384110923325031513213539282920441117261172613141039110204433141405102651614121682026112231522510510133202752752015142204418102081102781510913441457664576445767457684577011024834248341105960141113214411013196228815167915110141111091134110110202038272109783334372811611514192011015116117113150432592101511115201313410134101311012024139721397274442501142228211426611011159611413142080098009265161453646463010512263261760661101512110103512

    Rule #0123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198

    1 DFARule #2 DFA

    5305310725525417727727070661301001126711267320159268116682755878394901611891045601231588790158843740801003708488777869490117751177562635912515969492363630559314656361217828860848057155955962810324324696419169490571069571593276415862490458154581345816458174583215924883248831591081096360627049059180145715757646512864159631601586083159159692525733215812782838677165164636869159641651661731509230825965601756962624106241062159180731402114021123491991637133116331515916010811063626369805880583146563585959579105617581556610955551596461159108461

    4611074628222056896896868591227030341303419630354174501096175261969476878336884764129490116354046712035401451147107318111463777970711002211308493084993565213235411372213113455601914196235856545500627153104712618191411914153461099799979137574637622211503996850354196751333540592211InfInfInfInfInf3541InfInf3642155215911325393612211523562243763505057134121563541132354235405346335413541137818509941187120462463466683547354656137138354157354735483696Inf94857441975337031379393InfInf3541371064InfInf11622122671561009603354594663541368115521629132935662InfInf962358561995987739534105523797248591384848354157523541Inf52

    242255282243691301303737122691952672626726162259012562063912423114546561743851258270945851512205852311677057771670572025051882577277212772186906019259052258718103402990152088796624019219141205199316329902990127121016991699528477862257728619928590144384585702577InfInfInfInfInf590InfInf681284290886075199257730675506612828868099146590885955854213159059052544281698448981261311461946876867911311359084687688745315481622119017099749527575InfInf590759198360983609894258254017019715726101404590686284295887579952430824308152088792751274195109214628526626373532828590571165906239116

    7332541220536973102102797986107115737716377163401792881368829560710311411023212091969760143178107182217811052474010012024701041702979889510383363833682837918351798951238383057933485838123786011478096813772721579579452101025322532898421189510773229771792427841788251084022877458225180539772881794234342343179128129838082916510792001659797777848514845317983180178801031791798923527724784497147102103106124818518483888917984185186232130069328279465802321898282Inf78716179232110623026530265143511265418395935118324151791801281308382838919692196923348583268521731159936037951522758620017575179843921791104392

    32477268913010232323333261474131325513255593139451500473666781661771735414656333501021386752313841873102132647271824771661712024931357913579152190108610139484933434205392942011661274873384031063724489415395391896007157154818417116249336144936139684147138129493482394881747985477534735113925439254394378889151621303574933837135838336361861431071901391511401381306313913948609366981055106626366430437437166254267139184437437541155867132392501865414813013042384423841395413921523915239102493102237336331114367213943888901511301662599550955029420116694268975581282954556344566534341391181661391389166

    32577268913010232323333261474131325513255593139451500473666781661771735414656333501021386752313841873102132647271824771661712024931357913579152190108610139484933434205392942011661274873384031063724489415395391896007157154818417116249336144936139684147138129493482394881747985477534735113925439254394378889151621303574933837135838336361861431071901391511401381306313913948609366981055106626366430437437166254267139184437437541155867132392501865414813013042384423841395413921523915239102493102237336331114367213943888901511301662599550955029420116694268975581282954556344566534341391181661391389166

    9670683779333399232641112331123327611522485242315433950461271455712079115435611534340036563364054333425447117411174119201654115254483191905152712119171733541163746537515515283702902902520147254471310351311529320115184474578145781457824578345785115248492484911564651916183644715136101371313202184301151911611517391151152521813287124833839424312112019242511520121122128150582762154325130251818410314103111513539139871398779447791193728711928111511664661918192580248024271211955166523610538324811227811111152028115104428

    9770683779333399232641112331123327611522485242315433950461271455712079115435611534340036563364054333425447117411174119201654115254483191905152712119171733541163746537515515283702902902520147254471310351311529320115184474578145781457824578345785115248492484911564651916183644715136101371313202184301151911611517391151152521813287124833839424312112019242511520121122128150582762154325130251818410314103111513539139871398779447791193728711928111511664661918192580248024271211955166523610538324811227811111152028115104428

    1786659122862612612323176339112311123128412323280322395514758541251535520087122515412236338044643344852414233454117391173926272352123334563272705232782927251813339243544535523523264502882883328155334542110332112329128122264544578045777457804578245783123248472484712372732724263445423144109352121282992281232712412224471231233321621286122914647504112912827323312328129130128150562722232924129332626410264102612313637139851398587455631273529512727912312472742726273380228022278292754959594310525394519307319191232825123104825

    259130122691074747262663258611298112983021442401314024755955666222219710628095143591011431233830527237956994950574791180311803645043991445447933535054429947454319986864110591580544544726603333335446163414792911302914433674143474794592846041458964586745828144248972489719393947836628747931153132952929467110072144781451434668144144542632934517599676858881471464550511444614714821015123374244125641865462604108341083144178841403214032954793311389830313532414419493957862455181248124299474559411980641066260109273814627271443769144113868

    261010070195115741341341413986262083120831500318783887894138941013456676320062569772909618773057918778159640531175956575950516189502133921339543632781878978952588236098784996383634288640473361511042698789878332990531453149737244242895030210533018785042751877388950InfInfInfInfInf1878InfInf19798588787433544289503218991379423030377610135187874187918773330118781878972243052901481003003013044818841883367980187837188418852009250035048387876332013975454InfInf1878202344InfInf96895122213661499518824928187819998588977454364226893268934996383610310664823341053225452283910028281878373218782138432

    1121811112673034126726377161325513255112331123311231112982083111218InfInfInfInf1128211233InfInf112481125911255InfInfInf11221011288Inf12010InfInfInfInf011245InfInf11249Inf11242112432600914238InfInf239721122811224InfInf1130414240Inf112280InfInf112301122811226Inf178402182211225Inf23296InfInfInf14289120040InfInf1130411229Inf112341423811222Inf11222InfInfInfInf1122914238InfInfInfInfInfInfInfInfInfInfInfInf11225InfInf1423811224InfInfInf112221122211229Inf1129315805InfInfInfInf1122512006InfInf11304Inf11222InfInf11292120051200612009InfInfInf11228InfInfInf11229InfInfInfInfInfInfInf11225Inf11304InfInfInfInfInfInfInfInfInf1128814239Inf11328InfInfInfInfInfInfInfInfInfInf1122811234InfInfInf1123011228InfInfInf12348Inf11757Inf1122011231Inf1122011220Inf1122913780InfInfInf

    11218121126730341267263771613255132551123311233112311129820831Inf11218InfInfInf1128211233InfInf112481125911255InfInfInf11221011288Inf12010InfInfInfInf011245InfInf11249Inf11242112432600914238InfInf239721122811224InfInf1130414240Inf112280InfInf112301122811226Inf178402182211225Inf23296InfInfInf14289120040InfInf1130411229Inf112341423811222Inf11222InfInfInfInf1122914238InfInfInfInfInfInfInfInfInfInfInfInf11225Inf183451423811224InfInfInf112221122211229Inf1129315805InfInfInfInf1122512006InfInf11304Inf11222InfInf11292120051200612009InfInfInf11228InfInfInf11229InfInfInfInfInfInfInf11225Inf11304InfInfInfInfInfInfInfInfInf1128814239Inf11328InfInfInfInfInfInfInfInfInfInf1122811234InfInfInf1123011228InfInfInf12348Inf11757Inf1122011231Inf1122011220Inf11229InfInfInfInf

    27113320963016223405935932762762843025003InfInf271375485333285492804300311307222034068887274034137630585483764567334880298318334843028044295296287708InfInf280281277817737728771058128107775322832812794353554499327840466183339277777771802299033930339302872824092877082753443527537733441282376280708InfInfInfInfInf377InfInf377326327281278280380270827739836340572752752822833461803377281378376278301377377287315462753368522551345300301304547838338228128628737728238338422354Inf526477181627822651287280280InfInf377233774524InfInf34170911108381403754938133429377378326328281280281287InfInf532283281Inf9859313297Inf29365202732848919273273377282155037713021550

    1101415935415901791391391151151231441878InfInf375110324172124331643139150146536424532661130180215144308321517545481013715754771412891134135126547InfInf119120116302421612654942012006163711221201182741365186811715452278576461661670513805611561112612124812654711462721142165434121215119547InfInfInfInfInf216InfInf2161651661201171191457547116237202155611411412112218570621612021721511714021621612653591145521788218413914014320412222211201251262161212222235364Inf3653167181175364126119119InfInf21653641711InfInf180548423922015363882205422216217165167120119120126InfInf37112212056923614152136Inf132245911212332981121122161216092161141609

    21915268745012562884514512242242322403887InfInf485324219281233440752248259255161593516875222028932425365923243563206400246266206362506200243244235656InfInf228229225633332523565852922907254802312292273832774387722631544787210237257251414247020970209702352303572356562232153122332520593230324228656InfInfInfInfInf325InfInf325274275229226228296665622534631131652232232302312941415325229326324226249325325235205182232078117291293248249252425033133022923423532523033133216254Inf474425142822616439235228228InfInf325168853520InfInf2896578289329314549732920581325326274276229228229235InfInf480231229208517623261245Inf24150682212326907221221325230121832512501218

    67161161092061365005008585801318911282112823331722816770277589859692176202105690137172101104172863880941143849810291928350411789117897677731021738350637777057332879777523183897485945855735737695033833883782058350471108371173341781727650445830458274583045832458331732489724897173122123777476845047319415985717178791427817377174172749717317383266713371721419596999117917877828317378179180178151063202738174180837676InfInf173185871403514035137505114177853451773291731741221247776778380728072328797759910910993105758995698012369691737875173109875

    19176861398847472424324041112331123328512423370192285403647431271545722089124535612438340046663365054434435456117411174128292554125354583292905252803129271833541263746537525525284702902903530157354562310352312529330124284564578145779457824578345785125248492484912574752926283645625146111372323303194301252912612426491251253521823287124934849524313113029343512530131132128150582742253026130352828410284102812513539139871398789457651293729712928112512674762928293580248024280312955161614510527414721327521211253027125105027

    22618275752612422953663662312312392473894InfInf492331440277228226539220142583524161663616882229029633126065993313570206470253273206432576207250251242663InfInf235236232634033224266553623607324872382362343902781388423331614794210307327321421254020977209772422373642426632302153823033220600237331235663InfInfInfInfInf332InfInf332281282236233235297366323235331831722302302372383011422332236333331233256332332242205252302078817298300255256259425733833723624124233223733833916261Inf481432143823316446242235235InfInf332168913527InfInf2966648655336315250433620588332333281283236235236242InfInf487238236208587630268252Inf24850752282396914228228332237122533212571225

    5381958719694311460767867854354355155910134InfInf804643752589540539538563311122914049862673181145410608643572175196439186Inf0565585Inf56916503562563554975InfInf5475485441663664455497784854801044799550548546702714910124545815312594Inf1044104436055660InfInf554549676554975542Inf542644Inf549643547975InfInfInfInfInf644InfInf644593594548545547765397554466563081645425425495506133606644548645643545568644644554Inf542InfInf6125675685711112165064954855355464454965065150269Inf793744362254551078554547547InfInf644530839143InfInf608976223836488144816648Inf644645593595548547548554InfInf799550548Inf20110580564Inf56013187540551Inf540540644549309764415693097

    34208376541031661663939475556112481124830013924885362201563334545014216972370104139687113953355061813516569585950471117561175643444069140504733444405402954644421985056415261552540540436203053055045172504713810503814030845139434714579645794457974579845800140248642486414089904441435147140161126523838454610945140441411394164140140502333830413910863646758146145444950140451461471451507328924049411475043434104341043140152541400214002104472801445231214429614014189914443445080398039295464456676766010542566236479036361404542140106542

    4521948765114177177505058666711259112593111502599647425811122544553153180834801151507982150643660729236276806970614821176711767545551801516148435555055130657555320961675263725635515515473031631661561836148249106149151319561505448245807458054580845809458111512487524875151100101555254624825117213763494956571205615155152150527515115161244493151501197475786915715655606115156157158156150843002516052158615454InfInf151163651401314013115483911556332315530715115210010255545561805080503065755577878771105536773475810147471515653151107653

    41229083611101731734646546263112551125530714625592433524914050534114917679440111146757814660362068883587276656657478117631176350514776147574803515105473025351492055763485968559547547506903123125752179574784510574514731552146504784580345801458044580545807147248712487114796975148505847847168133594545525311652147511481464871147147572404531114611570717465153152515657147521531541521508029624756481545750504105041050147159611400914009111479871515931915130314714896985150515780468046302535157383836710549636943549743431475249147107249

    11223161368874323215415411271271252222006InfInf22203536416159176127161664986214215314911213625363311501825363394349453631949321550139226232147143303213613710162271InfInf6271221183343536418922732695412204855022196124122120107581487199711917282411838348550485508203880276762767618912383781282271116Inf11653642723164053631212271InfInfInfInfInf5364InfInf5364143714896391194301580227111853857901168011611612364118782353646395365536311939053645364189566511627568978218638939039321715370536912264464553641235370537110726Inf211211615084711910728189430430InfInf5364107331837InfInf182227244512221722232185368266825364547714371652639430122128InfInf22196124122Inf3762914452Inf3542593114125535111411453641237235364Inf723

    1402418947648512094654651451451531972569InfInf4062453512021543616731691801761362514044051430210245174419424523898717016718787131713946164165156577InfInf1491501464079246156579450150064640115215014830418882559147212431099028646646103216808903890315615127815657714495361442468670151245149577InfInfInfInfInf246InfInf246195196150147149200857714626723221351441441511522151033246150247245147170246246156891814487871064521416917017327882522511501551562461512522538400Inf39534610451478442156149149InfInf24685262346InfInf210578538725021154182508658246247195197150149150156InfInf40115215089284865182166Inf162331814215344371421422461519082461171908

    4225104129258196963363357575510677InfInf8887326668751055768821811472837936334405424501123265429149326514810816069199108047310866671021775422694226991524815032661201777104705201766688805452505074708549112929562176661766656423089668966120534278581775463719246326691571293265541775InfInfInfInfInf3266InfInf3367143014661284989721775483287215476464653130117593266128326732654942532663266120439469415277116424425428863272327152133134326653327232733636Inf877268661014936421208989InfInf3266365778InfInf11217764681521158874327089563266340314301501128895258InfInf8880545218643122873492Inf3499444551724444326653543266Inf54

    72656492776353512122028291122111221274113222692222954137484411514345707711241441122632803454324384231322344411729117291617134211323446317170513268191715171232914253452551351316350278278231814523444111023111132811811216444457694576745770457714577311324837248371136263171416244441313499251111181982181131711411214371131132320611275112813637403111911817222311318119120116150462622131814118231616410164101611312327139751397577445531172528511726911311462641716172380128012268191753949493310515293592063991131815113103815

    0270000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

    74281231169414310210279798795961128811288341180289137892966081041151111822101127707417810811117893395010012039110410997988951011796117968283791091809051338484058033586848223890968192101592580580831020345345908521290511781090781803488517983511458364583445837458384584018024904249041801291308481839151180201166927878858614985180841811798110418018090273783431791481031041079818618584899018085186187184151133292808581186908383410834108318019194140421404214451212018492352184336180181129131848384908079807933586846061161161001058296102768713076761808582180110582

    1092915835405851781381381151151221431877InfInf376215324172124331643139150146536324532651120178109143308221317535480013515554761392890132133124545InfInf117118114302321512554841911906153701211191172731364186711615442277576361561570413705610561012512024712554611362711132155433120214118546InfInfInfInfInf215InfInf2151641651191161181456546115236201155511311312012118470521511921621411613921521512553581135520788118313813914220402212201191241252151202212225363Inf3643157171165363125118118InfInf21553631710InfInf179547423821915353872195421215216164166119118119125InfInf37012111956913613151135Inf131245811112232971111112151206082151140608

    3830874671511076767434351593051201012010305144253101532605726879753941744294101081433834614333959006585586693056263544751241512415474844424144544773484805442995048462022662954528831079454454415966056256254491765447542130242144543491434747546878472044674146620464221442514025140144939448454727947544165130299424249501131601444814514345681441445446842551662112676871310150149485354144491501513941539929324417245394544747415534155314439429614492144921084767701482793161485311441459395484748548821882129950488014618064117126041240514634040144491421441069142

    413190120220182252352356565410179InfInf8548308365921045665991751971827834944194149440111308234641308213810467068192104557210265669843393866538665855147137308311243411008751017083854153514948416782481048911564170831708352340091639163112524067574339453614645308388551223082524339InfInfInfInfInf3083InfInf3184129813331214885694339473104210871454552123116563083121308430824834230833083112436459120269115341342345833089308851126127308352308930903497Inf84436583974835031128585InfInf3083351875InfInf11143403911511048525308786593083321912981367121855157InfInf8541535118077119722395Inf28191435416243433083525130833644950

    1093215835405851781381381151151221431877InfInf376215324172124331643139150146536324532651120178213143308210917535480013515554761392890132133124545InfInf117118114302321512554841911906153701211191172731364186711615442277576361561570413705610561012512024712554611362711132155433120214118546InfInfInfInfInf215InfInf2151641651191161181456546115236201155511311312012118470521511921621411613921521512553581135520788118313813914220402212201191241252151202212225363Inf3643157171165363125118118InfInf21553631710InfInf179547423821915353872195421215216164166119118119125InfInf37012111956913613151135Inf131245811112232971111112151206082151140608

    233384145231110541841834343612381InfInf4567175435638638357091865364601949238914826093175333913817532355150501725499541204748728162418324030557332913517541348164535833089544560353331266263873084969589895489544233304441444113434226239816227191822717544176741753358162InfInfInfInfInf1754InfInf1855836854733053668162291775139969272734759844175473175517533033517541754134618274926327973343353388717601759337879175434176017611953Inf46323554783019611345353InfInf1754198175InfInf938163273133814572175840651754187383687173533339InfInf4560353394111416263693153929799253616225251754343917541941239

    3253437411471167724747317313403403383835964InfInf3348854812064038834020647Inf3553663623215587171081632803955480590104675480551532503526423Inf35696123493502756InfInfInf155933533199125481396InfInf3350Inf33547337335333118144233595833248817379InfInfInf21565840InfInf3963368719341Inf329Inf3295481Inf15825480334InfInfInfInfInfInf5481InfInf54811605165615813329584527Inf3315502Inf482832932933615834002455548115815482548033258654815481396Inf329InfInf39958558658965335487548633515861587548133654875488InfInfInf206312808332Inf396958958InfInf5481Inf5391InfInf395Inf135214354874Inf5485Inf54815803160519781581958335341InfInfInf337335Inf11747882634Inf540775732733815852327327548133618575481Inf1857

    0350000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

    3136807357100213213363644525311245112452981372469446253565617268139167693401001356568135503520315239125068474845467117531175339403666137474703414105372924341391954753384958549537537405903023024742169474683510473513730542136404684579345791457944579545797137248612486113786874138404846837158123493535424310642137411381363861137137472303530113610560616455143142414647137421431441421507028623757381444740404104041040137149511399913999101469771414930914129313713886884140414780368036292434156373735710539535933448733331374239137106239

    51371001817712026426456566472117InfInf31815726611466273585819288226218719954012015585192155172642305251997470158676865487InfInf59605619315767490361610557312636159215991195813613211092557557787905733573367621896748855222165515754546215660488InfInfInfInfInf157InfInf15710610761586010248857178143105555562631268015761158156588115715767650555706381125808184123163162616667157621631642267Inf306257152582273676060InfInf1572288111InfInf121489446161134329161532815715810610861606167InfInf3126361109801799377Inf73135536421853531576268157108275

    3213837011463167024707277273363363343795956InfInf3348454772063638433620643Inf35136235832147871310804324039154765861045554765499Inf03912997432153339838345346274887805InfInf155133132799005477392Inf457813310Inf33539333331329118104225595032848697371InfInfInf21485800Inf795003923328715337Inf325Inf3255477Inf15705476330InfInfInfInfInfInf5477InfInf54771601165215693289504519Inf32754982473748203253253321571396244754771569547854763285825477547739240821325InfInf3955815825856525548354823311574157554773325483548432345Inf3095720627279232832738392950950InfInf5477337035383InfInf391Inf128724314862332395481Inf54775795160119701569950331337InfInf33539333331Inf11739951634Inf540774932333415836323323547733218495477Inf1849

    3539847757104182182404048565711249112493021412509850257569657672143171733801041396972139543560507053333571515249471117571175743444070141514743454505412964745431995157425362553541541446303063065146173514723910513914130946140444724579745795457984579945801141248652486514190914542445247241162127533939464711046141451421404265141141512343930414010964656859147146455051141461471481451507429024160421475144444104441044141152551400314003105473811455331314529714114290924544455180408040296474556777776110543576337489137371414643141106643

    3940887920217024774775454529959InfInf80442891620010254620716503698076303239461084201092890305102289012096120681589838713963648764472720627206804945104289111064499495490160918037514947454953604687647529160911609146299083818381110503819556447433387043289180931142890506447InfInfInfInfInf2891InfInf2992120812411134680546447452912198355434350115114482891113289228904630128912891110237438344174113300301304612897289649118119289150289728983035Inf79596191944630391108080InfInf2891304957InfInf1096448316149878023289579142891302512081273113804955InfInf8037514916793794863481054525165415212541412891504528913440945

    284177705097166166333341495011242112422951342439143250562586965136164663109713262651324734904767345516328394246411750117503637336313444467338380534289403836192445035465554653453437560299299443916644465321044321343023913337465457904578845791457924579413424858248581348384383537454653415512046323239401033913438135133355813413444227322971331025758615214013938434413439140141138150672832345035140443737410374103713414548139961399698466741384630613829013413583853837384480338033289403856070705410536505630418430301343936134105936

    294278715198171171343442505111243112432961352449244251563597066137165673209813363661334835004868346526439294346511751117513738346413545468339390535290413937193455136475654753553538570300300454016745466331045331353034013438466457914578945792457934579513524859248591358485393638464663515612147333340411044013539136134365913513545228332981341035859625314114039444513540141142139150682842355236141453838410384103813514649139971399799467751394730713929113513684863938394580348034290413956171715510537515731428531311354037135106037

    2043691008889202202252533576126009260092871262358335242554506157101615610223089124549812472275604565274849874243204562702527025282925951263645933030052628132302818449622761715036526526354802597259736311583645724100862412623403112529457InfInfInfInfInf126InfInf1267576302729514572614711253242431329537126301271252750126126364162425832269449505365132131303536126311321331018Inf27522655271022362929InfInf126103257InfInf904581731306129813022811261277577302930362300523005281323047041016246210334273223311922221263133126105133

    44144490221125775104934934474474544798950142381423870854765650445666397547148247822715771775444051054547543395458162Inf04674878780547164474644654564411517315173449450446144125474578807514510947702453451449605644589404487289110104811947947346146902434200545745257945787844531794455472437452546450878Inf131604InfInfInf547InfInf5474964974514484506446878447568533687444544545245351626075474515485464484715475474576664544570939128515470471474977755355245145645754745255355455016345696647885448552457450450InfInf5475578119InfInf5118791927955172807195511135547548496498451450451457InfInf702453451Inf16054483467Inf463115234434547739443443547452303354714723033

    11726451177530849277213833613579135791174111741117391180321339InfInfInfInfInf1178911741InfInf117561176711763InfInf4226911729011796Inf1241538665Inf41832Inf011753InfInf11757272061175011751270251517311726Inf24988117361173238717Inf1180715175Inf117360InfInf117381173611734Inf1834822330117332907723804InfInfInf14797124090InfInf1180711737Inf117421517311730Inf11730InfInfInfInf1173715173InfInfInfInfInfInfInfInfInfInfInfInf11733Inf188531517311732InfInf19365117301173011737Inf1180116313InfInfInfInf1173312411InfInf11807Inf11730InfInf11800124101241112414InfInfInf11736InfInfInf11737InfInfInfInfInfInfInf11733Inf11807InfInfInfInfInfInfInfInfInf1179615174Inf11836InfInfInfInfInfInfInfInfInfInf1173611742InfInfInf1173811736InfInfInf12721Inf12193Inf1172811739Inf1172811728Inf1173714288InfInf14288

    11726461177530849277213833613579135791174111741117391180321339InfInfInfInfInf1178911741InfInf117561176711763InfInf4226911729011796Inf1241538665Inf40305Inf011753InfInf117572720611750117512702515173Inf1172624988117361173238717Inf1180715175Inf117360InfInf117381173611734Inf1834822330117333010023804InfInfInf14797124090InfInf1180711737Inf117421517311730Inf11730InfInfInfInf1173715173InfInfInfInfInfInfInfInfInfInfInfInf11733Inf188531517311732InfInf19365117301173011737Inf1180116313InfInfInfInf1173312411InfInf11807Inf11730InfInf11800124101241112414InfInfInf11736InfInfInf11737InfInfInfInfInfInfInf11733Inf11807InfInfInfInfInfInfInfInfInf1179615174Inf11836InfInfInfInfInfInfInfInfInfInf1173611742InfInfInf1173811736InfInfInf12721Inf12193Inf1172811739Inf1172811728Inf1173714288InfInf14288

    134762938682152152191926645423972239722801192287628235547435450627149911608211747851175715590395915514380363728449249882498813201682119294523232305192742523211774255205064304751951927410158015802924151294501760691711913272411822450InfInfInfInfInf119InfInf119686923202244450191401054617172425883011923120118204311911929409171570215874243465812512423282911924125126629318672682193420633292222InfInf11964350309423094283451134123502911231288119120687023222329190161901627425232635945539210263566152610815151192426119104425

    1448635690831901902020275036112281122828112022977292365484455511221505217083118485111833335040603314449373829450117361173620141549120304533242405202752624221783036213241532520520234202852853025152304511810301812028825119234514577645774457774577845780120248442484412069702421233145120141106321818252689251202412111921441201203021318283119884344473812612524293012025126127124150532692202621126302323410234102312013134139821398284452601243229212427612012169712423243080198019275262454656564010522364216277016161202522120104522

    1049595260791081081616234332112241122427711622573252325444051471181464813079114444711429331036563274045333425446117321173216151045116264493202005162712220181742632172837528516516193802812812621148264471410261411628421115194474577245770457734577445776116248402484011665662017192744716137102281414212285211162011711517401161162620914279115843940433412212120252611621122123120150492652162217122261919410194101911612730139781397880448561202828812027211611765672019202680158015271222054252523610518323812236612121162118116104118

    395012513219218356106105454529978InfInf81773024633310254634016636698076334340791504201093023424137302313599120661939900701046364951441238717387178249453930241171441496284901622481705149474682668546101881697116224162245141808696869611750395255144124334181433024839111730235114412InfInfInfInfInf3024InfInf31251341137411646826814412453045231871434350118114543024116302530234642030243024117436438657266113419420423823030302949121122302450303030313346Inf809263241184633521178282InfInf3024336774InfInf109144133741491018167302882053024315813411406116824955InfInf8170514917085118829480Inf3499041521594141302450503024Inf49

    1105115935415901791391391151151231441878InfInf377216325173125332644140151147536424632661130180215144308321517545481013715754771412891134135126547InfInf119120116302411011154541811906163711221201182741365186811715452278576461661670513805611561112612124812654711462721142165434121215119547InfInfInfInfInf216InfInf2161651661201171191457547116237202155611411412112218570621612021721511714021621612653591145521788218413914014320412222211201251262161212222235364Inf3653167181175364126119119InfInf21653641711InfInf180548423922015363882205422216217165167120119120126Inf3875537112212056923614152136Inf132245911212332981121122161216092161141609

    20526913752894848252533549711304113042871262358335242554506157189156120230901255411212513439604767392511104445364571180711807293026117111204553282905262813230281841059727106102593526526754803463463631158364572410972412634931125294574588145932458654585445843126249102491012675763027291074572614711211624243132957612630127125275012612636274243462019449505399132131303536126311321331891512927522688271893629294109341093126191961404414044904582791309929813033712612775773029303681108110281323060713462461070342131223315422221263169126105169

    44353492221325875124934934484484564798952142401424071054965850645866597747348448022735791777446051354847743415488164Inf0470490Inf47464494674684598801517515175452453449144145454554437514520949704455453451607644789424507291110124813949949346347102436200745945458145988044731814475492439454548452880InfInfInfInfInf549InfInf549498499453450452644888044957053568764474474544555182609549453550548450473549549459Inf44771139130517472473476977955555445345845954945455555655216347698649887450554459452452InfInf5495598121InfInf5138811845855372827215531137549550498500453452453459InfInf704455453InfInf485469Inf465115254454567741445445549454303554914743035

    314543631134518103833433433193193273355882InfInf58142052937732953684834435535126954450104703170384419348100874195358Inf0341361457813459495338339330751InfInf323324320962841832875131432308205753263243224784169587232147497282462688208202109342045787457873303254523307513184677631842045363325419323751InfInfInfInfInf420InfInf420369370324321323446175132044140647603183183253263892110420324421419321344420420330402133184539626686388343344347644542642532432933042032542642727148Inf569520212232127533330323323InfInf420284785315InfInf38475213043424474059242444949420421369371324323324330InfInf575326324Inf11618356340Inf336766331632710502316316420325181342013451813

    14556356348342421919273536112281122828112022977292365484455511221505217084119485111933335041613314549383930451117361173623242049119294523231405202752624221783036213241532520520234202852853025152304511810301812028825119234514577645774457774577845780120248442484412069702421233145120141106321818252689251202412111921441201203021318282119884344473812612524293012025126127123150532692202521125302323410234102312013034139821398284452601243229212427612012169712423243080198019275262454656564010522364216277016161202522120104522

    0560000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

    510575591914129905795395395155155235449878InfInf777616725573525732104454055154748550646176665130580615544170836158954Inf0537557Inf54116091534535526947InfInf51952051616224616526949820520051077052252051867469659868517794512278Inf1016101635055380InfInf526521648526947514Inf514616Inf521615519947InfInfInfInfInf616InfInf616565566520517519745794751663760279565145145215225853506616520617615517540616616526Inf514InfInf5845395405431084162262152052552661652162262348944Inf765716351851749729526519519InfInf616516748911InfInf580948208806207936788620Inf616617565567520519520526InfInf771522520Inf19614552536Inf5321285951252317698512512616521300961615413009

    26558314962315203342942942712712782994996InfInf532371480328280487799295306302221964018880268033537029985413704560335470292312335392968037289290281702InfInf274275271817037128170457527507702652772752734293547498627240396176344417717711795293033947339472812764032817022693594226937133453276370274702InfInfInfInfInf371InfInf371320321275272274379570227139235740502692692762773401797371275372370272295371371281315392693369622544339294295298547137737627528028137127637737822346Inf520471231427222643281274274InfInf371233684517InfInf33570311101375403054337533429371372320322275274275281InfInf526277275Inf9852307291Inf28765132672788912267267371276154337112961543

    1659655888852012012121294738112301123028312223179312385504657531241525419086121505312135337043633334751404132453117381173825262251122324553262605222771621191803238233443534522522254402872873227154324532010322012229027121254534577845776457794578045782122248462484612271722623253345322143108342020272891271222612312123461221223221520285121904546494012812726313212227128129126150552712222823128322525410254102512213336139841398486454621263429412627812212371732625263280218021277282654858584210524384418297218181222724122104724

    1460635679831661661919274536112281122828112022977292365484455511221505217084119485111933335041613314549383930451117361173623242049120304533242405202752114171783036213241532520520234202852853025152304511810301812028825119234514577645774457774577845780120248442484412069702421233145120141106321818252689251202412111921441201203021318283119884344473812612524293012025126127124150532692202621126302323410234102312013134139821398284452601243229212427612012169712423243080198019275262454656564010522364216277016161202522120104522

    1261615466811271271717254334112261122627911822775272345464253491201485015082117464911731333039593294347363728449117341173421221847118284513222205182731917121762834193039530518518214002832832823150284491610281611828623117214494577445772457754577645778118248422484211867682219212944918139104301616232487231182211911719421181182821116281117864142453612412322272811823124125122150512672182419124282121410214102111812932139801398082450581223029012227411811967692221222880178017273242254454543810520344014256814141182320118104320

    1686221755002402374874871731731811992886InfInf435274383231183390702198209205107583045074171023827320248412732662118140195215118101994549192193184605InfInf177178174468227418460747817806744291801781761682073287617423533536121476746741063196012044120441841793061846051721265517227411767179273177605InfInfInfInfInf274InfInf274223224178175177221560517429526023781721721791802431064274178275273175198274274184116921721190412590242197198201314928027917818318427417928028110802Inf423374137017510887184177177InfInf274110822619InfInf2386066447278234444627811755274275223225178177178184InfInf429180178120255622210194Inf190376717018151061701702741799172741199917

    206382621928603383383535338640178401784035541365277483352781714950615714871888702309013642666713646342330479942255153444549644518348183484230266613651056447416930069653547323028207320382746457507696569652726003853385310531176136644524150922413653587571364326445InfInfInfInfInf1365InfInf14666516655627423664452613861046362424315895291365561366136427262136513651052182438351369426126226542137113703061621365311371137214902211136592765582714941054242InfInf13651504382693726937906446168130493552136935031365148065167856423036209742097435473230727160434283105262274622338822221365312613651532726

    26648871191114740340341413986472182221822499318683877894138841012456676319972559852909618672958218678759580531195950576050516289402233022330553632851868978942587236098684986383634287638263359521041798689868342890530553059737243242894030210443018685036771867388940InfInfInfInfInf1868InfInf19698488687633554289403218891369433030377810136186876186918673329118681868972253052801511002902912944918741873368182186837187418751999254745038386878332003975555InfInf1868201345338353383596894125613664499618724922186819898488877655364227872278724986383610304674693241053324453283910228281868373318682137433

    1165605341801061061616244133112251122527811722674262335454152481191474914081116454811630332038583284246353627448117331173320211746117274503212105172722321191742733112938529517517203902822822722149274481510271511728522116204484577345771457744577545777117248412484111766672118202844817138103291515222386221172111811618411171172721015280116854041443512312221262711722123124121150502662172318123272020410204102011712831139791397981449571212928912127311711866682120212780168016272232154353533710519333913246713131172219117104219

    22668410420596837237237373510561InfInf404615453154853731618153526359172821241122509215442881041544844881049136486953874647617289290773010050322810115451067291474932079454039343230235346592922718558794579453528204414441410633199738728926171472615454142661544347289InfInfInfInfInf1545InfInf1646729745652948517289281566123253262633679737154565154615442928415451545106418264390231962832842876515511550327071154533155115521731Inf41313145672917371064848InfInf1545175257InfInf92729022113267405315494041154516627297606548323827008290084039343283481025233102103324673243512524241545333315451735533

    316780711991377448448464644915123296232966183227847879446479412594617268241131099234010122773108922779673790581327371626455567111010238042380464413788227810211012728241012278617643413935364552387131

    5226857126183163272194194153753753558010426InfInf3392757642102358553721030Inf552563559838390289562525059257637941156457639589Inf054911092Inf553752954654750364811InfInf30475325281697157645934813462685320Inf34441534532530121477507104175298558522InfInf40407880374853698859353390305384811526Inf526576436460307057635324811InfInfInfInfInf5764InfInf576418371889306952920507509481152857853095800652652653330715973052576430695765576352979057645764593Inf526InfInf5967897907931139157705769532307430755764533577057716391InfInf210143082529639559320502050InfInf576464059457InfInf5924812227566328552Inf576833672576466971837287230692050532538InfInfInf534532InfInf1124842Inf744134135245359138524524576453335435764Inf3543

    510695591914129905795395395155155235449878InfInf777616725573525732104454055154748550646176665130580615544170836158954Inf0537557Inf54116091534535526947InfInf5195205161622461652694982052001016771522520518674696598685177945Inf510101335055380InfInf526521648526947514Inf514616Inf521615519947InfInfInfInfInf616InfInf616565566520517519745794751663760279565145145215225853506616520617615517540616616526Inf514InfInf5845395405431084162262152052552661652162262348944Inf765716351851749729526519519InfInf616516748911InfInf580948218396207936788620Inf616617565567520519520526InfInf771522520Inf19614552536Inf5321285951252317698512512616521300961615413009

    510705591914129905795395395155155235449878InfInf777616725573525732104454055154748550646176665130580615544170836158954Inf0537557Inf54116091534535526947InfInf5195205161622461652694982052001016771522520518674696598685177945Inf101351035055380InfInf526521648526947514Inf514616Inf521615519947InfInfInfInfInf616InfInf616565566520517519745794751663760279565145145215225853506616520617615517540616616526Inf514InfInf5845395405431084162262152052552661652162262348944Inf765716351851749729526519519InfInf616516748911InfInf580948218396207936788620Inf616617565567520519520526InfInf771522520Inf19614552536Inf5321285951252317698512512616521300961615413009

    13716253127452189189282826723314289142891802705141476281421360543545082010325616083704159527044221560407821484446373835346114797147972723195170575346321092303505179525232110632734203540403505350513153020872087752490529346117807617705183236704253461InfInfInfInfInf705InfInf806348355352028283461197265952917172437882270535706704201557057057521117207512287154155158357117102340417052471171282218104197714053420826752828InfInf705836311997019970833462105123351807709178370581334836135282329140071400717952523366853255162105191343915267316167052419705819917

    327281461121101606037374566299120041200429913824795472545666273693881684233501021376634013733358405979580632995657484691240912409414238418138484713424205382934442401962602893928278853853815332055655648431704846936129636138537431374146946872471984673546614464161382513425134138878842394127346938159124293363643441071541384213913739621381384846236545656106616265304144143424748138431441453881539328723820239388484141415474154713838829014486144861024707641422733101425251381398789424142488815881529344427954557458117065440634454573434138431361381063136

    073000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

    275743249979169925327157152902902883335314InfInf3393056112097033829020977Inf305316312276768903896627803455610562916356104441Inf03025733Inf306838129930025972434InfInf1580285281869656113462436457872850Inf339472872852831204438535305282441437485InfInf208755602756792634628689052912434279Inf2795611Inf159956102852434InfInfInfInfInf5611InfInf56111633168615982821069410324342815632290643602792792861600350209156111598561256102825585611561134632212279InfInf3495575585615793561756162851603160456112865617561827829Inf313832096121202822813234610691069InfInf5611Inf4831InfInf3452435117803854408Inf5615Inf561160481633217315981069285291InfInf33947287285Inf10210987617Inf515684327728813976277277561128618335611Inf1833

    275753249979169925327157152902902883335314InfInf3393056112097033829020977Inf305316312276768903896627803455610562916356104441Inf0302573379500306838129930025972005InfInf1580285281869656113462007457872850Inf339472872852831204438535305282441436988InfInf208755606792627534628689052912005279Inf2795611Inf159956102852005InfInfInfInfInf5611InfInf56111633168615982821069410320052815632290443602792792861600350209156111598561256102825585611561134632212279InfInf3495575585615793561756162851603160456112865617561827829Inf313832096121192822813234610691069InfInf5611Inf4831InfInf3452006117803854408Inf5615Inf561160481633217315981069285291InfInfInf287285Inf10210987617Inf515684327728813976277277561128618335611Inf1833

    20766913752894848252533549711304113042871262358335242554506157189156120230901255411212513439604767392511104445364571180711807293026117126364593303005262813230281841059727106593526526754803463462083157354562410972412634931125294574588145932458654585445843126249102491012675763027291074572614711211624243132957612630127125275012612636274243462019449505399132131303536126311321331891512927522688271893629294109341093126191961404414044904583001309929813033712612775773029303681108110281323060713462461070342131223315422221263169126105169

    157764578484184184202028463711229112292821212307830237549455652123151531808512049521203433604262332465039403145211737117372425215012131454325250521276272523179313722335335215212443028628683151523045119103119121289261202445245777457754577845779Inf121248452484512170712522243245221142107331919262790261212512212022451211213121419285120894445483912712625303112126127128126150542702212722128312424InfInf12113335139831398385453611253329312527712112270722524253180208020276272554757574110523374317287117171212623121104623

    1427819146377782111711711471471551632442InfInf409248357205157364676172183179837827842781450212247176406724722628719016918987151733819166167158579InfInf151152148395224815858145215206484031541521503061761243214919979030648648905170089058905157152142103357814695381462488672153247151579InfInfInfInfInf248InfInf24819719815214915118815791482692342008146146153154217906248152249247149172248248158859714687871051821617117217526612542531521571582481532542558400Inf39734811681498441158151151InfInf24885262219InfInf212580547525219884202528660248249197199152151152158InfInf40315415289304738184168Inf164319114415543101441442481537812481173781

    20796962628916216225253341421123411234287126235833524255450615712815658230901255457125393410476733751554445364571174211742293026551263645933030052628132302818436422738538526526294802912913530103320456241036241262943112529457457824578045783InfInf126InfInf12675763027293745726147112382424313295311263012712527501261263621924290125944950534413213130353612631132133131150592752263827133362929InfInf12613940139881398890458661303829813028212612775773029303680258025281323055262624610528424822337622221263128126105128

    44180490221125775104934934474474544798950142381423870854765650445666397547148247822715771775444051154647543395468162Inf0468488Inf472644746546645787815173151734504514471441254745788075145109477024534514496056445894044872894811947947346146902434200545645157845644144531794455472437452546450878InfInfInfInfInf547InfInf547496497451448450644687844756853368744454454524535162607547451548546448471547547457Inf445709Inf515470471474977755355245145645754745255355455016345696647885448552457450450InfInf5475578119InfInf5118791927955172807195511135547548496498451450451457InfInf702453451InfInf483467Inf463115234434547739443443547452303354714723033

    8815750287736361313212930112221122227511422371232305423849451161444611078113424511327329035553253943323324445117301173017181443114244473181805142692018161722430152652651451417360279279241914624445810241111328218112164444577045768457714577245774114248382483811463641815172544514135100261212192083191141811511315381141142420712276113823738413212011918232411419120121117150472632141915119241717InfInf11412428139761397678446541182628611827011411563651817182480138013269201854050503410516303610216410101141916114103916

    1020821069399686199322914491449103510351033113021053InfInf344356272215311083103521538Inf105010611057Inf9536371921023010906271130236146627119182Inf0104722216Inf10513387010441045100863179InfInf606910301026341816272109731814677610300Inf35942103210301028126551509221044102717147InfInfInf807612960InfInf109710319538103631791024102010246272Inf6082627110303179InfInfInfInfInf6272InfInf62722345239760811027405816092317910266293Inf17099102410241031608310958080627260816273627110271298627262721097Inf1024InfInf1094129712981301Inf627862771030608660876272103162786279InfInf318982152281011027Inf109740584058InfInf6272Inf19070InfInf10903180Inf113017141368846276Inf62728198234543736081405810301036InfInf3594210321030InfInf18241360Inf1262Inf10221033Inf102210226272103170726272Inf7072

    8835750287736361313212930112221122227511422371232305423849451161444611078113424511327329035553253943323324445117301173017181443114244473181805142692018161722430152652651451417360279279241914624445111024811128218112164444577045768457714577245774114248382483811463641815172544514135100261212192083191141811511315381141142420712276113823738413212011918232411419120121117150472632141915119241717InfInf11412428139761397678446541182628611827011411563651817182480138013269201854050503410516303610216410101141916114103916

    1108415935415901791391391151151231441878InfInf377216325173125332644140151147536424632661130180215144308321517545481013715754771412891134135126547InfInf11912011630242161265494201200616371122120118274136518681171545576461661670513805611561112612124812654711362721111105434120214118546InfInfInfInfInf216InfInf2161651661201171191457547116237202155611411412112218570621612021721511714021621612653591145521788218413914014320412222211201251262161212222235364Inf3653167181175364126119119InfInf21653641711InfInf180548408022015363882205422216217165167120119120126InfInf37112212056923614152136Inf132245911212332981121122161216092161141609

    278853279675144324276846842932932913365042InfInf3344154342059334129320600Inf308319315272318670915728103485433543885554334176Inf03055454Inf309809330230323402437InfInf1327288284839154343492439453632880Inf334532902882861176735875036285414236460InfInf18325370InfInf34928986722942437282Inf2825434278134954332882437InfInfInfInfInf5434InfInf5434155816091348285818383524372845455279040902822822891350353208554341348543554332855395434543434931765282InfInf3525385395425519544054392881353135454342895440544127383Inf3091420584186628527684349818818InfInf5434Inf4561InfInf3482438114873884135Inf5438Inf54345709155818841348818288294InfInfInf290288Inf9905852588Inf494655928029113410280280543428915795434Inf1580

    15866413384841471472020287475InfInf2821212307830237549455652640151129180851204912212074158204262157046114394031452InfInf2425211171213145432525052127627252317957772266307052152136430159915993126153314521860821812013491511723451InfInfInfInfInf121InfInf121707125222460452211421076319192627903812125122120224512112131608191586309894445488112712625303112126127128643Inf2702212822649312424InfInf12166469InfInf854531711256629312513031211227072252425312502225022276272526511355741Inf3793172814417171212633121104633

    1098715835405851781381381151151221431877InfInf376215324172124331643139150146536324532651120179214143308221417535480013615654761402890133134125546InfInf11811911530232151255484191190615370121119117273136418671161544576361561570413705610561012512024712554611262711122145433117109117545InfInfInfInfInf215InfInf2151641651191161181456546115236201155511311312012118470521511921621411613921521512553581135520788118313813914220402212201191241252151202212225363Inf3643157171165363125118118InfInf21553631710InfInf179547423821915353872195421215216164166119118119125InfInf37012111956913613151135Inf131245811112232971111112151206082151140608

    13886259708212912918182647381122911229280119228762823554743545012114954160831184752118353340406033044503738294501173711737222319511192945232323051927425232117732382034532519519254102852852924151294501610301611828823117134484577645774457774577845780119248462484611968692320223345019140105341717242588271192312011820431191192921417282120874243463912512423282911924125126124150552682192820125292222410254102511913136139841398483451631233429112327611912068702322232980218021274252354658553910524354415267215151192424119104424

    44189490221125775104934934474474544798950142381423870854765650445666397547148247822715771775444051154647543395468162Inf0468488Inf472644746546645787815173151734504514471441254745788075145109477024534514496056445894044872894811947947346146902434200545745257945787844431794445462437451545448441InfInfInfInfInf547InfInf547496497451448450644687844756853368744454454524535162607547451548546448471547547457Inf445709Inf515470471474977755355245145645754745255355455016345696647885448552457450450InfInf5475578119InfInf511879Inf55172807195511135547548496498451450451457InfInf702453451InfInf483467Inf463115234434547739443443547452303354714723033

    457669045815InfInf84022482394823945781457814578045928InfInfInfInfInfInf4583045781InfInf457964580745803InfInfInf45769045836Inf46878InfInfInfInf045793InfInf45797Inf4579045791InfInfInfInfInf4577645772InfInf45881InfInf457760InfInf457784577645774InfInfInf45773InfInfInfInfInf468720InfInf4588145777Inf45782Inf45770Inf45770InfInfInfInf45776Inf45766InfInfInfInfInfInfInfInfInf63401Inf45773InfInfInf45772InfInfInf457704577045777Inf45841InfInfInfInfInf45773InfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInf

    457649145813InfInf87745488174881745781457814577746041InfInfInfInfInfInf4582745779InfInf457944580545801InfInfInf45767045834Inf47204InfInfInfInf045791InfInf45795Inf4578845789Inf131604InfInfInf4577445770InfInf45932InfInf457740InfInf457764577445772InfInfInf45771InfInfInfInfInf471980InfInf4593245775Inf45780Inf45768Inf45768InfInfInfInf45774InfInf45764InfInfInfInfInfInfInfInfInfInf45771InfInfInf45770InfInfInf457684576845775Inf45839InfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInf

    457679245816InfInf82251479854798545782457824578045896InfInfInfInfInfInf4583045782InfInf457974580845804InfInfInf45770045837Inf46741InfInfInfInf045794InfInf45798Inf4579145792InfInfInfInfInf4577745773InfInf45865InfInf457770InfInf457794577745775InfInfInf45774InfInfInfInfInf467350InfInf4586545778Inf45783Inf45771Inf45771InfInfInfInf45777InfInfInf45767InfInfInfInfInfInfInfInfInf45774InfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInf

    457689345817InfInf80539477534775345783457834578245867InfInfInfInfInfInf4583245783InfInf457984580945805InfInfInf45771045838Inf46620InfInfInfInf045795InfInf45799Inf4579245793InfInfInfInfInf4577845774InfInf45854InfInf457780InfInf457804577845776InfInfInf45775InfInfInfInfInf466140InfInf4585445779InfInfInf45772Inf45772InfInfInfInf45778InfInfInfInf45768InfInfInfInfInfInfInfInf45775InfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInf

    457709445832InfInf77288473514735145785457854578345828InfInfInfInfInfInf4583345785InfInf458004581145807InfInfInf45773045840Inf46422InfInfInfInf045797InfInf45801Inf4579445795InfInfInfInfInf4578045776InfInf45843InfInf457800InfInf457824578045778InfInfInf45777InfInfInfInfInf464160InfInf45843InfInfInfInf45774Inf45774InfInfInfInf45780InfInfInfInfInf45770InfInfInfInfInfInfInf45777InfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInf

    1109515935415901791391391151151231441878InfInf377216325173125332644140151147536424632661130180215144308321517545481013715754771412891134135126547InfInf11912011630242161265494201200616371122120118274136518681171545576461661670513805611561112612124812654711462721142165434121215119547InfInfInfInfInf110InfInf2161651661201171191457547116237202155611411412112218570621612021721511714021621612653591145521788218413914014320412222211201251262161212222235364Inf3653167181175364126119119InfInf21653641711InfInf180548408022015363882205422216217165167120119120126InfInf37112212056923614152136Inf132245911212332981121122161216092161141609

    248349624883InfInf42343254392543924849248492484724897InfInfInfInfInfInf2489724849InfInf248642487524871InfInfInf24837024904Inf25140InfInfInfInf024861InfInf24865Inf2485824859InfInfInfInfInf2484424840InfInf24910InfInf248440InfInf248462484424842InfInfInf24841InfInfInfInfInf251340InfInf2491024845InfInfInf24838Inf24838InfInfInfInf24846InfInfInfInfInfInfInf24834InfInfInfInfInf24841InfInfInf24840InfInfInf2483824838InfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInf249082513525136InfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfInfIn