Class: BELParser::Parsers::Expression::ObservedTerm::Parser

Inherits:
Object
  • Object
show all
Includes:
AST::Sexp, Buffer, Tracer, Enumerable
Defined in:
lib/bel_parser/parsers/expression/observed_term.rb

Instance Method Summary collapse

Methods included from Tracer

#trace

Methods included from AST::Sexp

#annotation_definition, #argument, #blank_line, build, #comment, #comment_line, #document_property, #domain, #function, #identifier, #keyword, #list, #list_item, #multi_identifier, #name, #namespace_definition, #nested_statement, #object, #observed_term, #parameter, #pattern, #prefix, #relationship, #set, #simple_statement, #statement, #string, #subject, #term, #unset, #uri, #url, #value

Methods included from Buffer

#ord_to_str, #utf8_string

Constructor Details

#initialize(content) ⇒ Parser

Returns a new instance of Parser.



30652
30653
30654
30655
30656
30657
30658
30659
30660
30661
30662
30663
30664
30665
30666
30667
30668
30669
30670
30671
30672
30673
30674
30675
30676
30677
30678
30679
30680
30681
30682
30683
30684
30685
30686
30687
30688
30689
30690
30691
30692
30693
30694
30695
30696
30697
30698
30699
30700
30701
30702
30703
30704
30705
30706
30707
30708
30709
30710
30711
30712
30713
30714
30715
30716
30717
30718
30719
30720
30721
30722
30723
30724
30725
30726
30727
30728
30729
30730
30731
30732
30733
30734
30735
30736
30737
30738
30739
30740
30741
30742
30743
30744
30745
30746
30747
30748
30749
30750
30751
30752
30753
30754
30755
30756
30757
30758
30759
30760
30761
30762
30763
30764
30765
30766
30767
30768
30769
30770
30771
30772
30773
30774
30775
30776
30777
30778
30779
30780
30781
30782
30783
30784
30785
30786
30787
30788
30789
30790
30791
30792
30793
30794
30795
30796
30797
30798
30799
30800
30801
30802
30803
30804
30805
30806
30807
30808
30809
30810
30811
30812
30813
30814
30815
30816
30817
30818
30819
30820
30821
30822
30823
30824
30825
30826
30827
30828
30829
30830
30831
30832
30833
30834
30835
30836
30837
30838
30839
30840
30841
30842
30843
30844
30845
30846
30847
30848
30849
30850
30851
30852
30853
30854
30855
30856
30857
30858
30859
30860
30861
30862
30863
30864
30865
30866
30867
30868
30869
30870
30871
30872
30873
30874
30875
30876
30877
30878
30879
30880
30881
30882
30883
30884
30885
30886
30887
30888
30889
30890
30891
30892
30893
30894
30895
30896
30897
30898
30899
30900
30901
30902
30903
30904
30905
30906
30907
30908
30909
30910
30911
30912
30913
30914
30915
30916
30917
30918
30919
30920
30921
30922
30923
30924
30925
30926
30927
30928
30929
30930
30931
30932
30933
30934
30935
30936
30937
30938
30939
30940
30941
30942
30943
30944
30945
30946
30947
30948
30949
30950
30951
30952
30953
30954
30955
30956
30957
30958
30959
30960
30961
30962
30963
30964
30965
30966
30967
30968
30969
30970
30971
30972
30973
30974
30975
30976
30977
30978
30979
30980
30981
30982
30983
30984
30985
30986
30987
30988
30989
30990
30991
30992
30993
30994
30995
30996
30997
30998
30999
31000
31001
31002
31003
31004
31005
31006
31007
31008
31009
31010
31011
31012
31013
31014
31015
31016
31017
31018
31019
31020
31021
31022
31023
31024
31025
31026
31027
31028
31029
31030
31031
31032
31033
31034
31035
31036
31037
31038
31039
31040
31041
31042
31043
31044
31045
31046
31047
31048
31049
31050
31051
31052
31053
31054
31055
31056
31057
31058
31059
31060
31061
31062
31063
31064
31065
31066
31067
31068
31069
31070
31071
31072
31073
31074
31075
31076
31077
31078
31079
31080
31081
31082
31083
31084
31085
31086
31087
31088
31089
31090
31091
31092
31093
31094
31095
31096
31097
31098
31099
31100
31101
31102
31103
31104
31105
31106
31107
31108
31109
31110
31111
31112
31113
31114
31115
31116
31117
31118
31119
31120
31121
31122
31123
31124
31125
31126
31127
31128
31129
31130
31131
31132
31133
31134
31135
31136
31137
31138
31139
31140
31141
31142
31143
31144
31145
31146
31147
31148
31149
31150
31151
31152
31153
31154
31155
31156
31157
31158
31159
31160
31161
31162
31163
31164
31165
31166
31167
31168
31169
31170
31171
31172
31173
31174
31175
31176
31177
31178
31179
31180
31181
31182
31183
31184
31185
31186
31187
31188
31189
31190
31191
31192
31193
31194
31195
31196
31197
31198
31199
31200
31201
31202
31203
31204
31205
31206
31207
31208
31209
31210
31211
31212
31213
31214
31215
31216
31217
31218
31219
31220
31221
31222
31223
31224
31225
31226
31227
31228
31229
31230
31231
31232
31233
31234
31235
31236
31237
31238
31239
31240
31241
31242
31243
31244
31245
31246
31247
31248
31249
31250
31251
31252
31253
31254
31255
31256
31257
31258
31259
31260
31261
31262
31263
31264
31265
31266
31267
31268
31269
31270
31271
31272
31273
31274
31275
31276
31277
31278
31279
31280
31281
31282
31283
31284
31285
31286
31287
31288
31289
31290
31291
31292
31293
31294
31295
31296
31297
31298
31299
31300
31301
31302
31303
31304
31305
31306
31307
31308
31309
31310
31311
31312
31313
31314
31315
31316
31317
31318
31319
31320
31321
31322
31323
31324
31325
31326
31327
31328
31329
31330
31331
31332
31333
31334
31335
31336
31337
31338
31339
31340
31341
31342
31343
31344
31345
31346
31347
31348
31349
31350
31351
31352
31353
31354
31355
31356
31357
31358
31359
31360
31361
31362
31363
31364
31365
31366
31367
31368
31369
31370
31371
31372
31373
31374
31375
31376
31377
31378
31379
31380
31381
31382
31383
31384
31385
31386
31387
31388
31389
31390
31391
31392
31393
31394
31395
31396
31397
31398
31399
31400
31401
31402
31403
31404
31405
31406
31407
31408
31409
31410
31411
31412
31413
31414
31415
31416
31417
31418
31419
31420
31421
31422
31423
31424
31425
31426
31427
31428
31429
31430
31431
31432
31433
31434
31435
31436
31437
31438
31439
31440
31441
31442
31443
31444
31445
31446
31447
31448
31449
31450
31451
31452
31453
31454
31455
31456
31457
31458
31459
31460
31461
31462
31463
31464
31465
31466
31467
31468
31469
31470
31471
31472
31473
31474
31475
31476
31477
31478
31479
31480
31481
31482
31483
31484
31485
31486
31487
31488
31489
31490
31491
31492
31493
31494
31495
31496
31497
31498
31499
31500
31501
31502
31503
31504
31505
31506
31507
31508
31509
31510
31511
31512
31513
31514
31515
31516
31517
31518
31519
31520
31521
31522
31523
31524
31525
31526
31527
31528
31529
31530
31531
31532
31533
31534
31535
31536
31537
31538
31539
31540
31541
31542
31543
31544
31545
31546
31547
31548
31549
31550
31551
31552
31553
31554
31555
31556
31557
31558
31559
31560
31561
31562
31563
31564
31565
31566
31567
31568
31569
31570
31571
31572
31573
31574
31575
31576
31577
31578
31579
31580
31581
31582
31583
31584
31585
31586
31587
31588
31589
31590
31591
31592
31593
31594
31595
31596
31597
31598
31599
31600
31601
31602
31603
31604
31605
31606
31607
31608
31609
31610
31611
31612
31613
31614
31615
31616
31617
31618
31619
31620
31621
31622
31623
31624
31625
31626
31627
31628
31629
31630
31631
31632
31633
31634
31635
31636
31637
31638
31639
31640
31641
31642
31643
31644
31645
31646
31647
31648
31649
31650
31651
31652
31653
31654
31655
31656
31657
31658
31659
31660
31661
31662
31663
31664
31665
31666
31667
31668
31669
31670
31671
31672
31673
31674
31675
31676
31677
31678
31679
31680
31681
31682
31683
31684
31685
31686
31687
31688
31689
31690
31691
31692
31693
31694
31695
31696
31697
31698
31699
31700
31701
31702
31703
31704
31705
31706
31707
31708
31709
31710
31711
31712
31713
31714
31715
31716
31717
31718
31719
31720
31721
31722
31723
31724
31725
31726
31727
31728
31729
31730
31731
31732
31733
31734
31735
31736
31737
31738
31739
31740
31741
31742
31743
31744
31745
31746
31747
31748
31749
31750
31751
31752
31753
31754
31755
31756
31757
31758
31759
31760
31761
31762
31763
31764
31765
31766
31767
31768
31769
31770
31771
31772
31773
31774
31775
31776
31777
31778
31779
31780
31781
31782
31783
31784
31785
31786
31787
31788
31789
31790
31791
31792
31793
31794
31795
31796
31797
31798
31799
31800
31801
31802
31803
31804
31805
31806
31807
31808
31809
31810
31811
31812
31813
31814
31815
31816
31817
31818
31819
31820
31821
31822
31823
31824
31825
31826
31827
31828
31829
31830
31831
31832
31833
31834
31835
31836
31837
31838
31839
31840
31841
31842
31843
31844
31845
31846
31847
31848
31849
31850
31851
31852
31853
31854
31855
31856
31857
31858
31859
31860
31861
31862
31863
31864
31865
31866
31867
31868
31869
31870
31871
31872
31873
31874
31875
31876
31877
31878
31879
31880
31881
31882
31883
31884
31885
31886
31887
31888
31889
31890
31891
31892
31893
31894
31895
31896
31897
31898
31899
31900
31901
31902
31903
31904
31905
31906
31907
31908
31909
31910
31911
31912
31913
31914
31915
31916
31917
31918
31919
31920
31921
31922
31923
31924
31925
31926
31927
31928
31929
31930
31931
31932
31933
31934
31935
31936
31937
31938
31939
31940
31941
31942
31943
31944
31945
31946
31947
31948
31949
31950
31951
31952
31953
31954
31955
31956
31957
31958
31959
31960
31961
31962
31963
31964
31965
31966
31967
31968
31969
31970
31971
31972
31973
31974
31975
31976
31977
31978
31979
31980
31981
31982
31983
31984
31985
31986
31987
31988
31989
31990
31991
31992
31993
31994
31995
31996
31997
31998
31999
32000
32001
32002
32003
32004
32005
32006
32007
32008
32009
32010
32011
32012
32013
32014
32015
32016
32017
32018
32019
32020
32021
32022
32023
32024
32025
32026
32027
32028
32029
32030
32031
32032
32033
32034
32035
32036
32037
32038
32039
32040
32041
32042
32043
32044
32045
32046
32047
32048
32049
32050
32051
32052
32053
32054
32055
32056
32057
32058
32059
32060
32061
32062
32063
32064
32065
32066
32067
32068
32069
32070
32071
32072
32073
32074
32075
32076
32077
32078
32079
32080
32081
32082
32083
32084
32085
32086
32087
32088
32089
32090
32091
32092
32093
32094
32095
32096
32097
32098
32099
32100
32101
32102
32103
32104
32105
32106
32107
32108
32109
32110
32111
32112
32113
32114
32115
32116
32117
32118
32119
32120
32121
32122
32123
32124
32125
32126
32127
32128
32129
32130
32131
32132
32133
32134
32135
32136
32137
32138
32139
32140
32141
32142
32143
32144
32145
32146
32147
32148
32149
32150
32151
32152
32153
32154
32155
32156
32157
32158
32159
32160
32161
32162
32163
32164
32165
32166
32167
32168
32169
32170
32171
32172
32173
32174
32175
32176
32177
32178
32179
32180
32181
32182
32183
32184
32185
32186
32187
32188
32189
32190
32191
32192
32193
32194
32195
32196
32197
32198
32199
32200
32201
32202
32203
32204
32205
32206
32207
32208
32209
32210
32211
32212
32213
32214
32215
32216
32217
32218
32219
32220
32221
32222
32223
32224
32225
32226
32227
32228
32229
32230
32231
32232
32233
32234
32235
32236
32237
32238
32239
32240
32241
32242
32243
32244
32245
32246
32247
32248
32249
32250
32251
32252
32253
32254
32255
32256
32257
32258
32259
32260
32261
32262
32263
32264
32265
32266
32267
32268
32269
32270
32271
32272
32273
32274
32275
32276
32277
32278
32279
32280
32281
32282
32283
32284
32285
32286
32287
32288
32289
32290
32291
32292
32293
32294
32295
32296
32297
32298
32299
32300
32301
32302
32303
32304
32305
32306
32307
32308
32309
32310
32311
32312
32313
32314
32315
32316
32317
32318
32319
32320
32321
32322
32323
32324
32325
32326
32327
32328
32329
32330
32331
32332
32333
32334
32335
32336
32337
32338
32339
32340
32341
32342
32343
32344
32345
32346
# File 'lib/bel_parser/parsers/expression/observed_term.rb', line 30652

def initialize(content)
  @content = content
      # begin: ragel
  
class << self
	attr_accessor :_bel_trans_keys
	private :_bel_trans_keys, :_bel_trans_keys=
end
self._bel_trans_keys = [
	0, 0, 33, 126, 9, 126, 
	9, 40, 9, 126, 9, 
	122, 9, 34, 34, 92, 
	34, 92, 9, 44, 9, 44, 
	9, 126, 33, 126, 9, 
	44, 47, 47, 10, 10, 
	9, 126, 33, 126, 10, 126, 
	0, 0, 9, 126, 9, 
	126, 9, 122, 9, 122, 
	9, 126, 9, 126, 9, 126, 
	9, 126, 9, 126, 9, 
	126, 9, 126, 9, 126, 
	33, 126, 48, 122, 9, 34, 
	34, 92, 34, 92, 0, 
	0, 9, 122, 9, 122, 
	9, 34, 34, 92, 34, 92, 
	0, 0, 33, 126, 9, 
	126, 9, 40, 9, 126, 
	9, 122, 9, 34, 34, 92, 
	34, 92, 9, 44, 9, 
	44, 9, 126, 33, 126, 
	9, 44, 9, 126, 9, 126, 
	9, 126, 9, 122, 9, 
	122, 9, 126, 0, 0, 
	9, 126, 9, 126, 9, 126, 
	9, 126, 9, 126, 9, 
	126, 9, 126, 33, 126, 
	9, 126, 9, 40, 9, 126, 
	9, 122, 9, 34, 34, 
	92, 34, 92, 9, 44, 
	9, 44, 9, 126, 33, 126, 
	9, 44, 9, 126, 9, 
	126, 9, 126, 9, 122, 
	9, 122, 9, 126, 0, 0, 
	9, 126, 9, 126, 9, 
	126, 9, 126, 9, 126, 
	9, 126, 9, 126, 47, 47, 
	47, 47, 10, 10, 9, 
	47, 0, 0, 10, 10, 
	9, 126, 10, 126, 9, 44, 
	9, 44, 9, 126, 9, 
	34, 9, 34, 10, 92, 
	10, 92, 34, 92, 9, 44, 
	9, 47, 10, 47, 10, 
	10, 10, 10, 9, 126, 
	9, 126, 10, 126, 10, 126, 
	9, 126, 9, 126, 9, 
	122, 9, 122, 9, 126, 
	10, 126, 0, 0, 10, 122, 
	0, 0, 0, 0, 10, 
	10, 0, 0, 10, 122, 
	10, 122, 9, 122, 9, 122, 
	9, 34, 0, 0, 33, 
	126, 10, 10, 0, 0, 
	10, 126, 10, 10, 0, 0, 
	0
]

class << self
	attr_accessor :_bel_key_spans
	private :_bel_key_spans, :_bel_key_spans=
end
self._bel_key_spans = [
	0, 94, 118, 32, 118, 114, 26, 59, 
	59, 36, 36, 118, 94, 36, 1, 1, 
	118, 94, 117, 0, 118, 118, 114, 114, 
	118, 118, 118, 118, 118, 118, 118, 118, 
	94, 75, 26, 59, 59, 0, 114, 114, 
	26, 59, 59, 0, 94, 118, 32, 118, 
	114, 26, 59, 59, 36, 36, 118, 94, 
	36, 118, 118, 118, 114, 114, 118, 0, 
	118, 118, 118, 118, 118, 118, 118, 94, 
	118, 32, 118, 114, 26, 59, 59, 36, 
	36, 118, 94, 36, 118, 118, 118, 114, 
	114, 118, 0, 118, 118, 118, 118, 118, 
	118, 118, 1, 1, 1, 39, 0, 1, 
	118, 117, 36, 36, 118, 26, 26, 83, 
	83, 59, 36, 39, 38, 1, 1, 118, 
	118, 117, 117, 118, 118, 114, 114, 118, 
	117, 0, 113, 0, 0, 1, 0, 113, 
	113, 114, 114, 26, 0, 94, 1, 0, 
	117, 1, 0
]

class << self
	attr_accessor :_bel_index_offsets
	private :_bel_index_offsets, :_bel_index_offsets=
end
self._bel_index_offsets = [
	0, 0, 95, 214, 247, 366, 481, 508, 
	568, 628, 665, 702, 821, 916, 953, 955, 
	957, 1076, 1171, 1289, 1290, 1409, 1528, 1643, 
	1758, 1877, 1996, 2115, 2234, 2353, 2472, 2591, 
	2710, 2805, 2881, 2908, 2968, 3028, 3029, 3144, 
	3259, 3286, 3346, 3406, 3407, 3502, 3621, 3654, 
	3773, 3888, 3915, 3975, 4035, 4072, 4109, 4228, 
	4323, 4360, 4479, 4598, 4717, 4832, 4947, 5066, 
	5067, 5186, 5305, 5424, 5543, 5662, 5781, 5900, 
	5995, 6114, 6147, 6266, 6381, 6408, 6468, 6528, 
	6565, 6602, 6721, 6816, 6853, 6972, 7091, 7210, 
	7325, 7440, 7559, 7560, 7679, 7798, 7917, 8036, 
	8155, 8274, 8393, 8395, 8397, 8399, 8439, 8440, 
	8442, 8561, 8679, 8716, 8753, 8872, 8899, 8926, 
	9010, 9094, 9154, 9191, 9231, 9270, 9272, 9274, 
	9393, 9512, 9630, 9748, 9867, 9986, 10101, 10216, 
	10335, 10453, 10454, 10568, 10569, 10570, 10572, 10573, 
	10687, 10801, 10916, 11031, 11058, 11059, 11154, 11156, 
	11157, 11275, 11277
]

class << self
	attr_accessor :_bel_indicies
	private :_bel_indicies, :_bel_indicies=
end
self._bel_indicies = [
	0, 1, 0, 0, 0, 0, 1, 1, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 1, 2, 
	1, 1, 1, 1, 1, 1, 1, 1, 
	1, 1, 1, 1, 1, 1, 1, 1, 
	1, 1, 1, 1, 1, 1, 2, 3, 
	1, 3, 3, 3, 3, 1, 4, 3, 
	3, 3, 3, 3, 3, 3, 3, 3, 
	3, 3, 3, 3, 3, 3, 3, 3, 
	3, 3, 3, 3, 3, 3, 3, 3, 
	3, 3, 3, 3, 3, 3, 3, 3, 
	3, 3, 3, 3, 3, 3, 3, 3, 
	3, 3, 3, 3, 3, 3, 3, 3, 
	3, 3, 3, 3, 3, 3, 3, 3, 
	3, 3, 3, 3, 3, 3, 3, 3, 
	3, 3, 3, 3, 3, 3, 3, 3, 
	3, 3, 3, 3, 3, 3, 3, 3, 
	3, 3, 3, 3, 3, 1, 5, 1, 
	1, 1, 1, 1, 1, 1, 1, 1, 
	1, 1, 1, 1, 1, 1, 1, 1, 
	1, 1, 1, 1, 1, 5, 1, 1, 
	1, 1, 1, 1, 1, 6, 1, 8, 
	9, 9, 9, 9, 7, 7, 7, 7, 
	7, 7, 7, 7, 7, 7, 7, 7, 
	7, 7, 7, 7, 7, 7, 8, 10, 
	11, 10, 10, 10, 10, 7, 7, 10, 
	10, 10, 10, 10, 10, 10, 12, 12, 
	12, 12, 12, 12, 12, 12, 12, 12, 
	10, 10, 10, 10, 10, 10, 10, 12, 
	12, 12, 12, 12, 12, 12, 12, 12, 
	12, 12, 12, 12, 12, 12, 12, 12, 
	12, 12, 12, 12, 12, 12, 12, 12, 
	12, 10, 10, 10, 10, 12, 10, 12, 
	12, 12, 12, 12, 12, 12, 12, 12, 
	12, 12, 12, 12, 12, 12, 12, 12, 
	12, 12, 12, 12, 12, 12, 12, 12, 
	12, 10, 10, 10, 10, 7, 8, 9, 
	9, 9, 9, 7, 7, 7, 7, 7, 
	7, 7, 7, 7, 7, 7, 7, 7, 
	7, 7, 7, 7, 7, 8, 7, 11, 
	7, 7, 7, 7, 7, 7, 7, 7, 
	7, 7, 7, 7, 7, 13, 13, 13, 
	13, 13, 13, 13, 13, 13, 13, 7, 
	7, 7, 7, 7, 7, 7, 13, 13, 
	13, 13, 13, 13, 13, 13, 13, 13, 
	13, 13, 13, 13, 13, 13, 13, 13, 
	13, 13, 13, 13, 13, 13, 13, 13, 
	7, 7, 7, 7, 13, 7, 13, 13, 
	13, 13, 13, 13, 13, 13, 13, 13, 
	13, 13, 13, 13, 13, 13, 13, 13, 
	13, 13, 13, 13, 13, 13, 13, 13, 
	7, 9, 9, 9, 9, 9, 14, 14, 
	14, 14, 14, 14, 14, 14, 14, 14, 
	14, 14, 14, 14, 14, 14, 14, 14, 
	9, 14, 11, 14, 16, 15, 15, 15, 
	15, 15, 15, 15, 15, 15, 15, 15, 
	15, 15, 15, 15, 15, 15, 15, 15, 
	15, 15, 15, 15, 15, 15, 15, 15, 
	15, 15, 15, 15, 15, 15, 15, 15, 
	15, 15, 15, 15, 15, 15, 15, 15, 
	15, 15, 15, 15, 15, 15, 15, 15, 
	15, 15, 15, 15, 15, 15, 17, 15, 
	19, 18, 18, 18, 18, 18, 18, 18, 
	18, 18, 18, 18, 18, 18, 18, 18, 
	18, 18, 18, 18, 18, 18, 18, 18, 
	18, 18, 18, 18, 18, 18, 18, 18, 
	18, 18, 18, 18, 18, 18, 18, 18, 
	18, 18, 18, 18, 18, 18, 18, 18, 
	18, 18, 18, 18, 18, 18, 18, 18, 
	18, 18, 20, 18, 21, 14, 14, 14, 
	14, 14, 14, 14, 14, 14, 14, 14, 
	14, 14, 14, 14, 14, 14, 14, 14, 
	14, 14, 14, 21, 14, 14, 14, 14, 
	14, 14, 14, 14, 22, 14, 14, 23, 
	14, 24, 1, 1, 1, 1, 1, 1, 
	1, 1, 1, 1, 1, 1, 1, 1, 
	1, 1, 1, 1, 1, 1, 1, 1, 
	24, 1, 1, 1, 1, 1, 1, 1, 
	1, 1, 1, 1, 25, 1, 25, 9, 
	9, 9, 9, 7, 7, 7, 7, 7, 
	7, 7, 7, 7, 7, 7, 7, 7, 
	7, 7, 7, 7, 7, 25, 10, 11, 
	10, 10, 10, 10, 7, 7, 10, 10, 
	10, 10, 10, 10, 10, 26, 26, 26, 
	26, 26, 26, 26, 26, 26, 26, 10, 
	10, 10, 10, 10, 10, 10, 26, 26, 
	26, 26, 26, 26, 26, 26, 26, 26, 
	26, 26, 26, 26, 26, 26, 26, 26, 
	26, 26, 26, 26, 26, 26, 26, 26, 
	10, 10, 10, 10, 26, 10, 26, 26, 
	26, 26, 26, 26, 26, 26, 26, 26, 
	26, 26, 26, 26, 26, 26, 26, 26, 
	26, 26, 26, 26, 26, 26, 26, 26, 
	10, 10, 10, 10, 7, 27, 1, 27, 
	27, 27, 27, 1, 28, 27, 27, 27, 
	27, 27, 27, 27, 27, 27, 27, 27, 
	27, 27, 27, 27, 27, 27, 27, 27, 
	27, 27, 27, 27, 27, 27, 27, 27, 
	27, 27, 27, 27, 27, 27, 27, 27, 
	27, 27, 27, 27, 27, 27, 27, 27, 
	27, 27, 27, 27, 27, 27, 27, 27, 
	27, 27, 27, 27, 27, 27, 27, 27, 
	27, 27, 27, 27, 27, 27, 27, 27, 
	27, 27, 27, 27, 27, 27, 27, 27, 
	27, 27, 27, 27, 27, 27, 27, 27, 
	27, 27, 27, 1, 24, 1, 1, 1, 
	1, 1, 1, 1, 1, 1, 1, 1, 
	1, 1, 1, 1, 1, 1, 1, 1, 
	1, 1, 1, 24, 1, 1, 1, 1, 
	1, 1, 1, 1, 29, 1, 1, 25, 
	1, 30, 1, 1, 31, 33, 32, 32, 
	32, 32, 32, 32, 32, 32, 32, 32, 
	32, 32, 32, 32, 32, 32, 32, 32, 
	32, 32, 32, 32, 33, 27, 32, 27, 
	27, 27, 27, 32, 28, 34, 27, 27, 
	35, 27, 27, 27, 36, 36, 36, 36, 
	36, 36, 36, 36, 36, 36, 37, 27, 
	27, 27, 27, 27, 27, 36, 36, 36, 
	36, 36, 36, 36, 36, 36, 36, 36, 
	36, 36, 36, 36, 36, 36, 36, 36, 
	36, 36, 36, 36, 36, 36, 36, 27, 
	27, 27, 27, 36, 27, 36, 36, 36, 
	36, 36, 36, 36, 36, 36, 36, 36, 
	36, 36, 36, 36, 36, 36, 36, 36, 
	36, 36, 36, 36, 36, 36, 36, 27, 
	27, 27, 27, 32, 27, 1, 27, 27, 
	27, 27, 1, 28, 27, 27, 27, 27, 
	27, 27, 38, 27, 27, 27, 27, 27, 
	27, 27, 27, 27, 27, 27, 27, 27, 
	27, 27, 27, 27, 27, 27, 27, 27, 
	27, 27, 27, 27, 27, 27, 27, 27, 
	27, 27, 27, 27, 27, 27, 27, 27, 
	27, 27, 27, 27, 27, 27, 27, 27, 
	27, 27, 27, 27, 27, 27, 27, 27, 
	27, 27, 27, 27, 27, 27, 27, 27, 
	27, 27, 27, 27, 27, 27, 27, 27, 
	27, 27, 27, 27, 27, 27, 27, 27, 
	27, 27, 1, 1, 31, 31, 31, 31, 
	31, 31, 31, 31, 31, 31, 31, 31, 
	31, 31, 31, 31, 31, 31, 31, 31, 
	31, 31, 39, 31, 39, 39, 39, 39, 
	31, 40, 39, 39, 39, 39, 39, 39, 
	39, 39, 39, 39, 39, 39, 39, 39, 
	39, 39, 39, 39, 39, 39, 39, 39, 
	39, 39, 39, 39, 39, 39, 39, 39, 
	39, 39, 39, 39, 39, 39, 39, 39, 
	39, 39, 39, 39, 39, 39, 39, 39, 
	39, 39, 39, 39, 39, 39, 39, 39, 
	39, 39, 39, 39, 39, 39, 39, 39, 
	39, 39, 39, 39, 39, 39, 39, 39, 
	39, 39, 39, 39, 39, 39, 39, 39, 
	39, 39, 39, 39, 39, 39, 39, 39, 
	31, 18, 25, 9, 9, 9, 9, 7, 
	7, 7, 7, 7, 7, 7, 7, 7, 
	7, 7, 7, 7, 7, 7, 7, 7, 
	7, 25, 10, 11, 10, 10, 10, 10, 
	7, 28, 10, 10, 10, 10, 10, 10, 
	10, 26, 26, 26, 26, 26, 26, 26, 
	26, 26, 26, 10, 10, 10, 10, 10, 
	10, 10, 26, 26, 26, 26, 26, 26, 
	26, 26, 26, 26, 26, 26, 26, 26, 
	26, 26, 26, 26, 26, 26, 26, 26, 
	26, 26, 26, 26, 10, 10, 10, 10, 
	26, 10, 26, 26, 26, 26, 26, 26, 
	26, 26, 26, 26, 26, 26, 26, 26, 
	26, 26, 26, 26, 26, 26, 26, 26, 
	26, 26, 26, 26, 10, 10, 10, 10, 
	7, 41, 42, 42, 42, 42, 7, 7, 
	7, 7, 7, 7, 7, 7, 7, 7, 
	7, 7, 7, 7, 7, 7, 7, 7, 
	41, 27, 43, 27, 27, 27, 27, 7, 
	28, 44, 27, 27, 45, 27, 27, 27, 
	46, 46, 46, 46, 46, 46, 46, 46, 
	46, 46, 27, 27, 27, 27, 27, 27, 
	27, 46, 46, 46, 46, 46, 46, 46, 
	46, 46, 46, 46, 46, 46, 46, 46, 
	46, 46, 46, 46, 46, 46, 46, 46, 
	46, 46, 46, 27, 27, 27, 27, 46, 
	27, 46, 46, 46, 46, 46, 46, 46, 
	46, 46, 46, 46, 46, 46, 46, 46, 
	46, 46, 46, 46, 46, 46, 46, 46, 
	46, 46, 46, 27, 27, 27, 27, 7, 
	47, 9, 9, 9, 9, 7, 7, 7, 
	7, 7, 7, 7, 7, 7, 7, 7, 
	7, 7, 7, 7, 7, 7, 7, 47, 
	7, 11, 7, 7, 7, 7, 7, 7, 
	48, 7, 7, 49, 7, 7, 7, 13, 
	13, 13, 13, 13, 13, 13, 13, 13, 
	13, 7, 7, 7, 7, 7, 7, 7, 
	13, 13, 13, 13, 13, 13, 13, 13, 
	13, 13, 13, 13, 13, 13, 13, 13, 
	13, 13, 13, 13, 13, 13, 13, 13, 
	13, 13, 7, 7, 7, 7, 13, 7, 
	13, 13, 13, 13, 13, 13, 13, 13, 
	13, 13, 13, 13, 13, 13, 13, 13, 
	13, 13, 13, 13, 13, 13, 13, 13, 
	13, 13, 7, 33, 32, 32, 32, 32, 
	32, 32, 32, 32, 32, 32, 32, 32, 
	32, 32, 32, 32, 32, 32, 32, 32, 
	32, 32, 33, 32, 32, 32, 32, 32, 
	32, 32, 32, 50, 32, 32, 51, 32, 
	32, 32, 52, 52, 52, 52, 52, 52, 
	52, 52, 52, 52, 32, 32, 32, 32, 
	32, 32, 32, 52, 52, 52, 52, 52, 
	52, 52, 52, 52, 52, 52, 52, 52, 
	52, 52, 52, 52, 52, 52, 52, 52, 
	52, 52, 52, 52, 52, 32, 32, 32, 
	32, 52, 32, 52, 52, 52, 52, 52, 
	52, 52, 52, 52, 52, 52, 52, 52, 
	52, 52, 52, 52, 52, 52, 52, 52, 
	52, 52, 52, 52, 52, 32, 33, 32, 
	32, 32, 32, 32, 32, 32, 32, 32, 
	32, 32, 32, 32, 32, 32, 32, 32, 
	32, 32, 32, 32, 32, 33, 27, 32, 
	27, 27, 27, 27, 32, 28, 34, 27, 
	27, 35, 27, 27, 27, 53, 53, 53, 
	53, 53, 53, 53, 53, 53, 53, 27, 
	27, 27, 27, 27, 27, 27, 53, 53, 
	53, 53, 53, 53, 53, 53, 53, 53, 
	53, 53, 53, 53, 53, 53, 53, 53, 
	53, 53, 53, 53, 53, 53, 53, 53, 
	27, 27, 27, 27, 53, 27, 53, 53, 
	53, 53, 53, 53, 53, 53, 53, 53, 
	53, 53, 53, 53, 53, 53, 53, 53, 
	53, 53, 53, 53, 53, 53, 53, 53, 
	27, 27, 27, 27, 32, 33, 32, 32, 
	32, 32, 32, 32, 32, 32, 32, 32, 
	32, 32, 32, 32, 32, 32, 32, 32, 
	32, 32, 32, 32, 33, 27, 32, 27, 
	27, 27, 27, 32, 28, 34, 27, 27, 
	54, 27, 27, 27, 55, 55, 55, 55, 
	55, 55, 55, 55, 55, 55, 56, 27, 
	27, 27, 27, 27, 27, 55, 55, 55, 
	55, 55, 55, 55, 55, 55, 55, 55, 
	55, 55, 55, 55, 55, 55, 55, 55, 
	55, 55, 55, 55, 55, 55, 55, 27, 
	27, 27, 27, 55, 27, 55, 55, 55, 
	55, 55, 55, 55, 55, 55, 55, 55, 
	55, 55, 55, 55, 55, 55, 55, 55, 
	55, 55, 55, 55, 55, 55, 55, 27, 
	27, 27, 27, 32, 25, 9, 9, 9, 
	9, 7, 7, 7, 7, 7, 7, 7, 
	7, 7, 7, 7, 7, 7, 7, 7, 
	7, 7, 7, 25, 10, 11, 10, 10, 
	10, 10, 7, 28, 10, 10, 10, 10, 
	10, 10, 10, 57, 57, 57, 57, 57, 
	57, 57, 57, 57, 57, 10, 10, 10, 
	10, 10, 10, 10, 57, 57, 57, 57, 
	57, 57, 57, 57, 57, 57, 57, 57, 
	57, 57, 57, 57, 57, 57, 57, 57, 
	57, 57, 57, 57, 57, 57, 10, 10, 
	10, 10, 57, 10, 57, 57, 57, 57, 
	57, 57, 57, 57, 57, 57, 57, 57, 
	57, 57, 57, 57, 57, 57, 57, 57, 
	57, 57, 57, 57, 57, 57, 10, 10, 
	10, 10, 7, 33, 32, 32, 32, 32, 
	32, 32, 32, 32, 32, 32, 32, 32, 
	32, 32, 32, 32, 32, 32, 32, 32, 
	32, 32, 33, 27, 32, 27, 27, 27, 
	27, 32, 28, 34, 27, 27, 54, 27, 
	27, 27, 58, 58, 58, 58, 58, 58, 
	58, 58, 58, 58, 59, 27, 27, 27, 
	27, 27, 27, 58, 58, 58, 58, 58, 
	58, 58, 58, 58, 58, 58, 58, 58, 
	58, 58, 58, 58, 58, 58, 58, 58, 
	58, 58, 58, 58, 58, 27, 27, 27, 
	27, 58, 27, 58, 58, 58, 58, 58, 
	58, 58, 58, 58, 58, 58, 58, 58, 
	58, 58, 58, 58, 58, 58, 58, 58, 
	58, 58, 58, 58, 58, 27, 27, 27, 
	27, 32, 41, 42, 42, 42, 42, 7, 
	7, 7, 7, 7, 7, 7, 7, 7, 
	7, 7, 7, 7, 7, 7, 7, 7, 
	7, 41, 27, 43, 27, 27, 27, 27, 
	7, 28, 44, 27, 27, 60, 27, 27, 
	27, 61, 61, 61, 61, 61, 61, 61, 
	61, 61, 61, 27, 27, 27, 27, 27, 
	27, 27, 61, 61, 61, 61, 61, 61, 
	61, 61, 61, 61, 61, 61, 61, 61, 
	61, 61, 61, 61, 61, 61, 61, 61, 
	61, 61, 61, 61, 27, 27, 27, 27, 
	61, 27, 61, 61, 61, 61, 61, 61, 
	61, 61, 61, 61, 61, 61, 61, 61, 
	61, 61, 61, 61, 61, 61, 61, 61, 
	61, 61, 61, 61, 27, 27, 27, 27, 
	7, 33, 32, 32, 32, 32, 32, 32, 
	32, 32, 32, 32, 32, 32, 32, 32, 
	32, 32, 32, 32, 32, 32, 32, 32, 
	33, 27, 32, 27, 27, 27, 27, 32, 
	28, 34, 27, 27, 54, 27, 27, 27, 
	62, 62, 62, 62, 62, 62, 62, 62, 
	62, 62, 27, 27, 27, 27, 27, 27, 
	27, 62, 62, 62, 62, 62, 62, 62, 
	62, 62, 62, 62, 62, 62, 62, 62, 
	62, 62, 62, 62, 62, 62, 62, 62, 
	62, 62, 62, 27, 27, 27, 27, 62, 
	27, 62, 62, 62, 62, 62, 62, 62, 
	62, 62, 62, 62, 62, 62, 62, 62, 
	62, 62, 62, 62, 62, 62, 62, 62, 
	62, 62, 62, 27, 27, 27, 27, 32, 
	41, 42, 42, 42, 42, 7, 7, 7, 
	7, 7, 7, 7, 7, 7, 7, 7, 
	7, 7, 7, 7, 7, 7, 7, 41, 
	27, 43, 27, 27, 27, 27, 7, 28, 
	44, 27, 27, 60, 27, 27, 27, 63, 
	63, 63, 63, 63, 63, 63, 63, 63, 
	63, 27, 27, 27, 27, 27, 27, 27, 
	63, 63, 63, 63, 63, 63, 63, 63, 
	63, 63, 63, 63, 63, 63, 63, 63, 
	63, 63, 63, 63, 63, 63, 63, 63, 
	63, 63, 27, 27, 27, 27, 63, 27, 
	63, 63, 63, 63, 63, 63, 63, 63, 
	63, 63, 63, 63, 63, 63, 63, 63, 
	63, 63, 63, 63, 63, 63, 63, 63, 
	63, 63, 27, 27, 27, 27, 7, 33, 
	32, 32, 32, 32, 32, 32, 32, 32, 
	32, 32, 32, 32, 32, 32, 32, 32, 
	32, 32, 32, 32, 32, 32, 33, 27, 
	32, 27, 27, 27, 27, 32, 28, 34, 
	27, 27, 54, 27, 27, 27, 64, 64, 
	64, 64, 64, 64, 64, 64, 64, 64, 
	27, 27, 27, 27, 27, 27, 27, 64, 
	64, 64, 64, 64, 64, 64, 64, 64, 
	64, 64, 64, 64, 64, 64, 64, 64, 
	64, 64, 64, 64, 64, 64, 64, 64, 
	64, 27, 27, 27, 27, 64, 27, 64, 
	64, 64, 64, 64, 64, 64, 64, 64, 
	64, 64, 64, 64, 64, 64, 64, 64, 
	64, 64, 64, 64, 64, 64, 64, 64, 
	64, 27, 27, 27, 27, 32, 66, 65, 
	66, 66, 66, 66, 65, 65, 66, 66, 
	66, 66, 66, 66, 66, 66, 66, 66, 
	66, 66, 66, 66, 66, 66, 66, 66, 
	66, 66, 66, 66, 66, 66, 66, 66, 
	66, 66, 66, 66, 66, 66, 66, 66, 
	66, 66, 66, 66, 66, 66, 66, 66, 
	66, 66, 66, 66, 66, 66, 66, 66, 
	66, 66, 66, 66, 66, 66, 66, 66, 
	66, 66, 66, 66, 66, 66, 66, 66, 
	66, 66, 66, 66, 66, 66, 66, 66, 
	66, 66, 66, 66, 66, 66, 66, 66, 
	66, 66, 66, 66, 65, 67, 67, 67, 
	67, 67, 67, 67, 67, 67, 67, 1, 
	1, 1, 1, 1, 1, 1, 67, 67, 
	67, 67, 67, 67, 67, 67, 67, 67, 
	67, 67, 67, 67, 67, 67, 67, 67, 
	67, 67, 67, 67, 67, 67, 67, 67, 
	1, 1, 1, 1, 67, 1, 67, 67, 
	67, 67, 67, 67, 67, 67, 67, 67, 
	67, 67, 67, 67, 67, 67, 67, 67, 
	67, 67, 67, 67, 67, 67, 67, 67, 
	1, 69, 69, 69, 69, 69, 68, 68, 
	68, 68, 68, 68, 68, 68, 68, 68, 
	68, 68, 68, 68, 68, 68, 68, 68, 
	69, 68, 70, 68, 72, 71, 71, 71, 
	71, 71, 71, 71, 71, 71, 71, 71, 
	71, 71, 71, 71, 71, 71, 71, 71, 
	71, 71, 71, 71, 71, 71, 71, 71, 
	71, 71, 71, 71, 71, 71, 71, 71, 
	71, 71, 71, 71, 71, 71, 71, 71, 
	71, 71, 71, 71, 71, 71, 71, 71, 
	71, 71, 71, 71, 71, 71, 73, 71, 
	75, 74, 74, 74, 74, 74, 74, 74, 
	74, 74, 74, 74, 74, 74, 74, 74, 
	74, 74, 74, 74, 74, 74, 74, 74, 
	74, 74, 74, 74, 74, 74, 74, 74, 
	74, 74, 74, 74, 74, 74, 74, 74, 
	74, 74, 74, 74, 74, 74, 74, 74, 
	74, 74, 74, 74, 74, 74, 74, 74, 
	74, 74, 76, 74, 74, 77, 78, 78, 
	78, 78, 7, 7, 7, 7, 7, 7, 
	7, 7, 7, 7, 7, 7, 7, 7, 
	7, 7, 7, 7, 77, 7, 79, 7, 
	7, 7, 7, 7, 7, 7, 7, 7, 
	7, 7, 7, 7, 80, 80, 80, 80, 
	80, 80, 80, 80, 80, 80, 7, 7, 
	7, 7, 7, 7, 7, 80, 80, 80, 
	80, 80, 80, 80, 80, 80, 80, 80, 
	80, 80, 80, 80, 80, 80, 80, 80, 
	80, 80, 80, 80, 80, 80, 80, 7, 
	7, 7, 7, 80, 7, 80, 80, 80, 
	80, 80, 80, 80, 80, 80, 80, 80, 
	80, 80, 80, 80, 80, 80, 80, 80, 
	80, 80, 80, 80, 80, 80, 80, 7, 
	77, 78, 78, 78, 78, 7, 7, 7, 
	7, 7, 7, 7, 7, 7, 7, 7, 
	7, 7, 7, 7, 7, 7, 7, 77, 
	7, 79, 7, 7, 7, 7, 7, 7, 
	7, 7, 7, 7, 7, 7, 7, 81, 
	81, 81, 81, 81, 81, 81, 81, 81, 
	81, 7, 7, 7, 7, 7, 7, 7, 
	81, 81, 81, 81, 81, 81, 81, 81, 
	81, 81, 81, 81, 81, 81, 81, 81, 
	81, 81, 81, 81, 81, 81, 81, 81, 
	81, 81, 7, 7, 7, 7, 81, 7, 
	81, 81, 81, 81, 81, 81, 81, 81, 
	81, 81, 81, 81, 81, 81, 81, 81, 
	81, 81, 81, 81, 81, 81, 81, 81, 
	81, 81, 7, 78, 78, 78, 78, 78, 
	14, 14, 14, 14, 14, 14, 14, 14, 
	14, 14, 14, 14, 14, 14, 14, 14, 
	14, 14, 78, 14, 79, 14, 83, 82, 
	82, 82, 82, 82, 82, 82, 82, 82, 
	82, 82, 82, 82, 82, 82, 82, 82, 
	82, 82, 82, 82, 82, 82, 82, 82, 
	82, 82, 82, 82, 82, 82, 82, 82, 
	82, 82, 82, 82, 82, 82, 82, 82, 
	82, 82, 82, 82, 82, 82, 82, 82, 
	82, 82, 82, 82, 82, 82, 82, 82, 
	84, 82, 86, 85, 85, 85, 85, 85, 
	85, 85, 85, 85, 85, 85, 85, 85, 
	85, 85, 85, 85, 85, 85, 85, 85, 
	85, 85, 85, 85, 85, 85, 85, 85, 
	85, 85, 85, 85, 85, 85, 85, 85, 
	85, 85, 85, 85, 85, 85, 85, 85, 
	85, 85, 85, 85, 85, 85, 85, 85, 
	85, 85, 85, 85, 87, 85, 85, 88, 
	1, 88, 88, 88, 88, 1, 1, 88, 
	88, 88, 88, 88, 88, 88, 88, 88, 
	88, 88, 88, 88, 88, 88, 88, 88, 
	88, 88, 88, 88, 88, 88, 88, 88, 
	88, 88, 88, 88, 88, 88, 88, 88, 
	88, 88, 88, 88, 88, 88, 88, 88, 
	88, 88, 88, 88, 88, 88, 88, 88, 
	88, 88, 88, 88, 88, 88, 88, 88, 
	88, 88, 88, 88, 88, 88, 88, 88, 
	88, 88, 88, 88, 88, 88, 88, 88, 
	88, 88, 88, 88, 88, 88, 88, 88, 
	88, 88, 88, 88, 88, 1, 89, 1, 
	1, 1, 1, 1, 1, 1, 1, 1, 
	1, 1, 1, 1, 1, 1, 1, 1, 
	1, 1, 1, 1, 1, 89, 90, 1, 
	90, 90, 90, 90, 1, 91, 90, 90, 
	90, 90, 90, 90, 90, 90, 90, 90, 
	90, 90, 90, 90, 90, 90, 90, 90, 
	90, 90, 90, 90, 90, 90, 90, 90, 
	90, 90, 90, 90, 90, 90, 90, 90, 
	90, 90, 90, 90, 90, 90, 90, 90, 
	90, 90, 90, 90, 90, 90, 90, 90, 
	90, 90, 90, 90, 90, 90, 90, 90, 
	90, 90, 90, 90, 90, 90, 90, 90, 
	90, 90, 90, 90, 90, 90, 90, 90, 
	90, 90, 90, 90, 90, 90, 90, 90, 
	90, 90, 90, 90, 1, 92, 1, 1, 
	1, 1, 1, 1, 1, 1, 1, 1, 
	1, 1, 1, 1, 1, 1, 1, 1, 
	1, 1, 1, 1, 92, 1, 1, 1, 
	1, 1, 1, 1, 93, 1, 94, 95, 
	95, 95, 95, 7, 7, 7, 7, 7, 
	7, 7, 7, 7, 7, 7, 7, 7, 
	7, 7, 7, 7, 7, 94, 96, 97, 
	96, 96, 96, 96, 7, 7, 96, 96, 
	96, 96, 96, 96, 96, 98, 98, 98, 
	98, 98, 98, 98, 98, 98, 98, 96, 
	96, 96, 96, 96, 96, 96, 98, 98, 
	98, 98, 98, 98, 98, 98, 98, 98, 
	98, 98, 98, 98, 98, 98, 98, 98, 
	98, 98, 98, 98, 98, 98, 98, 98, 
	96, 96, 96, 96, 98, 96, 98, 98, 
	98, 98, 98, 98, 98, 98, 98, 98, 
	98, 98, 98, 98, 98, 98, 98, 98, 
	98, 98, 98, 98, 98, 98, 98, 98, 
	96, 96, 96, 96, 7, 94, 95, 95, 
	95, 95, 7, 7, 7, 7, 7, 7, 
	7, 7, 7, 7, 7, 7, 7, 7, 
	7, 7, 7, 7, 94, 7, 97, 7, 
	7, 7, 7, 7, 7, 7, 7, 7, 
	7, 7, 7, 7, 99, 99, 99, 99, 
	99, 99, 99, 99, 99, 99, 7, 7, 
	7, 7, 7, 7, 7, 99, 99, 99, 
	99, 99, 99, 99, 99, 99, 99, 99, 
	99, 99, 99, 99, 99, 99, 99, 99, 
	99, 99, 99, 99, 99, 99, 99, 7, 
	7, 7, 7, 99, 7, 99, 99, 99, 
	99, 99, 99, 99, 99, 99, 99, 99, 
	99, 99, 99, 99, 99, 99, 99, 99, 
	99, 99, 99, 99, 99, 99, 99, 7, 
	95, 95, 95, 95, 95, 14, 14, 14, 
	14, 14, 14, 14, 14, 14, 14, 14, 
	14, 14, 14, 14, 14, 14, 14, 95, 
	14, 97, 14, 101, 100, 100, 100, 100, 
	100, 100, 100, 100, 100, 100, 100, 100, 
	100, 100, 100, 100, 100, 100, 100, 100, 
	100, 100, 100, 100, 100, 100, 100, 100, 
	100, 100, 100, 100, 100, 100, 100, 100, 
	100, 100, 100, 100, 100, 100, 100, 100, 
	100, 100, 100, 100, 100, 100, 100, 100, 
	100, 100, 100, 100, 100, 102, 100, 104, 
	103, 103, 103, 103, 103, 103, 103, 103, 
	103, 103, 103, 103, 103, 103, 103, 103, 
	103, 103, 103, 103, 103, 103, 103, 103, 
	103, 103, 103, 103, 103, 103, 103, 103, 
	103, 103, 103, 103, 103, 103, 103, 103, 
	103, 103, 103, 103, 103, 103, 103, 103, 
	103, 103, 103, 103, 103, 103, 103, 103, 
	103, 105, 103, 106, 14, 14, 14, 14, 
	14, 14, 14, 14, 14, 14, 14, 14, 
	14, 14, 14, 14, 14, 14, 14, 14, 
	14, 14, 106, 14, 14, 14, 14, 14, 
	14, 14, 14, 107, 14, 14, 108, 14, 
	109, 1, 1, 1, 1, 1, 1, 1, 
	1, 1, 1, 1, 1, 1, 1, 1, 
	1, 1, 1, 1, 1, 1, 1, 109, 
	1, 1, 1, 1, 1, 1, 1, 1, 
	1, 1, 1, 110, 1, 110, 95, 95, 
	95, 95, 7, 7, 7, 7, 7, 7, 
	7, 7, 7, 7, 7, 7, 7, 7, 
	7, 7, 7, 7, 110, 96, 97, 96, 
	96, 96, 96, 7, 7, 96, 96, 96, 
	96, 96, 96, 96, 111, 111, 111, 111, 
	111, 111, 111, 111, 111, 111, 96, 96, 
	96, 96, 96, 96, 96, 111, 111, 111, 
	111, 111, 111, 111, 111, 111, 111, 111, 
	111, 111, 111, 111, 111, 111, 111, 111, 
	111, 111, 111, 111, 111, 111, 111, 96, 
	96, 96, 96, 111, 96, 111, 111, 111, 
	111, 111, 111, 111, 111, 111, 111, 111, 
	111, 111, 111, 111, 111, 111, 111, 111, 
	111, 111, 111, 111, 111, 111, 111, 96, 
	96, 96, 96, 7, 112, 1, 112, 112, 
	112, 112, 1, 113, 112, 112, 112, 112, 
	112, 112, 112, 112, 112, 112, 112, 112, 
	112, 112, 112, 112, 112, 112, 112, 112, 
	112, 112, 112, 112, 112, 112, 112, 112, 
	112, 112, 112, 112, 112, 112, 112, 112, 
	112, 112, 112, 112, 112, 112, 112, 112, 
	112, 112, 112, 112, 112, 112, 112, 112, 
	112, 112, 112, 112, 112, 112, 112, 112, 
	112, 112, 112, 112, 112, 112, 112, 112, 
	112, 112, 112, 112, 112, 112, 112, 112, 
	112, 112, 112, 112, 112, 112, 112, 112, 
	112, 112, 1, 109, 1, 1, 1, 1, 
	1, 1, 1, 1, 1, 1, 1, 1, 
	1, 1, 1, 1, 1, 1, 1, 1, 
	1, 1, 109, 1, 1, 1, 1, 1, 
	1, 1, 1, 114, 1, 1, 110, 1, 
	115, 32, 32, 32, 32, 32, 32, 32, 
	32, 32, 32, 32, 32, 32, 32, 32, 
	32, 32, 32, 32, 32, 32, 32, 115, 
	112, 32, 112, 112, 112, 112, 32, 113, 
	116, 112, 112, 117, 112, 112, 112, 118, 
	118, 118, 118, 118, 118, 118, 118, 118, 
	118, 119, 112, 112, 112, 112, 112, 112, 
	118, 118, 118, 118, 118, 118, 118, 118, 
	118, 118, 118, 118, 118, 118, 118, 118, 
	118, 118, 118, 118, 118, 118, 118, 118, 
	118, 118, 112, 112, 112, 112, 118, 112, 
	118, 118, 118, 118, 118, 118, 118, 118, 
	118, 118, 118, 118, 118, 118, 118, 118, 
	118, 118, 118, 118, 118, 118, 118, 118, 
	118, 118, 112, 112, 112, 112, 32, 110, 
	95, 95, 95, 95, 7, 7, 7, 7, 
	7, 7, 7, 7, 7, 7, 7, 7, 
	7, 7, 7, 7, 7, 7, 110, 96, 
	97, 96, 96, 96, 96, 7, 113, 96, 
	96, 96, 96, 96, 96, 96, 111, 111, 
	111, 111, 111, 111, 111, 111, 111, 111, 
	96, 96, 96, 96, 96, 96, 96, 111, 
	111, 111, 111, 111, 111, 111, 111, 111, 
	111, 111, 111, 111, 111, 111, 111, 111, 
	111, 111, 111, 111, 111, 111, 111, 111, 
	111, 96, 96, 96, 96, 111, 96, 111, 
	111, 111, 111, 111, 111, 111, 111, 111, 
	111, 111, 111, 111, 111, 111, 111, 111, 
	111, 111, 111, 111, 111, 111, 111, 111, 
	111, 96, 96, 96, 96, 7, 120, 121, 
	121, 121, 121, 7, 7, 7, 7, 7, 
	7, 7, 7, 7, 7, 7, 7, 7, 
	7, 7, 7, 7, 7, 120, 112, 122, 
	112, 112, 112, 112, 7, 113, 123, 112, 
	112, 124, 112, 112, 112, 125, 125, 125, 
	125, 125, 125, 125, 125, 125, 125, 112, 
	112, 112, 112, 112, 112, 112, 125, 125, 
	125, 125, 125, 125, 125, 125, 125, 125, 
	125, 125, 125, 125, 125, 125, 125, 125, 
	125, 125, 125, 125, 125, 125, 125, 125, 
	112, 112, 112, 112, 125, 112, 125, 125, 
	125, 125, 125, 125, 125, 125, 125, 125, 
	125, 125, 125, 125, 125, 125, 125, 125, 
	125, 125, 125, 125, 125, 125, 125, 125, 
	112, 112, 112, 112, 7, 126, 95, 95, 
	95, 95, 7, 7, 7, 7, 7, 7, 
	7, 7, 7, 7, 7, 7, 7, 7, 
	7, 7, 7, 7, 126, 7, 97, 7, 
	7, 7, 7, 7, 7, 127, 7, 7, 
	128, 7, 7, 7, 99, 99, 99, 99, 
	99, 99, 99, 99, 99, 99, 7, 7, 
	7, 7, 7, 7, 7, 99, 99, 99, 
	99, 99, 99, 99, 99, 99, 99, 99, 
	99, 99, 99, 99, 99, 99, 99, 99, 
	99, 99, 99, 99, 99, 99, 99, 7, 
	7, 7, 7, 99, 7, 99, 99, 99, 
	99, 99, 99, 99, 99, 99, 99, 99, 
	99, 99, 99, 99, 99, 99, 99, 99, 
	99, 99, 99, 99, 99, 99, 99, 7, 
	115, 32, 32, 32, 32, 32, 32, 32, 
	32, 32, 32, 32, 32, 32, 32, 32, 
	32, 32, 32, 32, 32, 32, 32, 115, 
	32, 32, 32, 32, 32, 32, 32, 32, 
	129, 32, 32, 130, 32, 32, 32, 131, 
	131, 131, 131, 131, 131, 131, 131, 131, 
	131, 32, 32, 32, 32, 32, 32, 32, 
	131, 131, 131, 131, 131, 131, 131, 131, 
	131, 131, 131, 131, 131, 131, 131, 131, 
	131, 131, 131, 131, 131, 131, 131, 131, 
	131, 131, 32, 32, 32, 32, 131, 32, 
	131, 131, 131, 131, 131, 131, 131, 131, 
	131, 131, 131, 131, 131, 131, 131, 131, 
	131, 131, 131, 131, 131, 131, 131, 131, 
	131, 131, 32, 115, 32, 32, 32, 32, 
	32, 32, 32, 32, 32, 32, 32, 32, 
	32, 32, 32, 32, 32, 32, 32, 32, 
	32, 32, 115, 112, 32, 112, 112, 112, 
	112, 32, 113, 116, 112, 112, 117, 112, 
	112, 112, 132, 132, 132, 132, 132, 132, 
	132, 132, 132, 132, 112, 112, 112, 112, 
	112, 112, 112, 132, 132, 132, 132, 132, 
	132, 132, 132, 132, 132, 132, 132, 132, 
	132, 132, 132, 132, 132, 132, 132, 132, 
	132, 132, 132, 132, 132, 112, 112, 112, 
	112, 132, 112, 132, 132, 132, 132, 132, 
	132, 132, 132, 132, 132, 132, 132, 132, 
	132, 132, 132, 132, 132, 132, 132, 132, 
	132, 132, 132, 132, 132, 112, 112, 112, 
	112, 32, 103, 115, 32, 32, 32, 32, 
	32, 32, 32, 32, 32, 32, 32, 32, 
	32, 32, 32, 32, 32, 32, 32, 32, 
	32, 32, 115, 112, 32, 112, 112, 112, 
	112, 32, 113, 116, 112, 112, 133, 112, 
	112, 112, 134, 134, 134, 134, 134, 134, 
	134, 134, 134, 134, 135, 112, 112, 112, 
	112, 112, 112, 134, 134, 134, 134, 134, 
	134, 134, 134, 134, 134, 134, 134, 134, 
	134, 134, 134, 134, 134, 134, 134, 134, 
	134, 134, 134, 134, 134, 112, 112, 112, 
	112, 134, 112, 134, 134, 134, 134, 134, 
	134, 134, 134, 134, 134, 134, 134, 134, 
	134, 134, 134, 134, 134, 134, 134, 134, 
	134, 134, 134, 134, 134, 112, 112, 112, 
	112, 32, 110, 95, 95, 95, 95, 7, 
	7, 7, 7, 7, 7, 7, 7, 7, 
	7, 7, 7, 7, 7, 7, 7, 7, 
	7, 110, 96, 97, 96, 96, 96, 96, 
	7, 113, 96, 96, 96, 96, 96, 96, 
	96, 136, 136, 136, 136, 136, 136, 136, 
	136, 136, 136, 96, 96, 96, 96, 96, 
	96, 96, 136, 136, 136, 136, 136, 136, 
	136, 136, 136, 136, 136, 136, 136, 136, 
	136, 136, 136, 136, 136, 136, 136, 136, 
	136, 136, 136, 136, 96, 96, 96, 96, 
	136, 96, 136, 136, 136, 136, 136, 136, 
	136, 136, 136, 136, 136, 136, 136, 136, 
	136, 136, 136, 136, 136, 136, 136, 136, 
	136, 136, 136, 136, 96, 96, 96, 96, 
	7, 115, 32, 32, 32, 32, 32, 32, 
	32, 32, 32, 32, 32, 32, 32, 32, 
	32, 32, 32, 32, 32, 32, 32, 32, 
	115, 112, 32, 112, 112, 112, 112, 32, 
	113, 116, 112, 112, 133, 112, 112, 112, 
	137, 137, 137, 137, 137, 137, 137, 137, 
	137, 137, 138, 112, 112, 112, 112, 112, 
	112, 137, 137, 137, 137, 137, 137, 137, 
	137, 137, 137, 137, 137, 137, 137, 137, 
	137, 137, 137, 137, 137, 137, 137, 137, 
	137, 137, 137, 112, 112, 112, 112, 137, 
	112, 137, 137, 137, 137, 137, 137, 137, 
	137, 137, 137, 137, 137, 137, 137, 137, 
	137, 137, 137, 137, 137, 137, 137, 137, 
	137, 137, 137, 112, 112, 112, 112, 32, 
	120, 121, 121, 121, 121, 7, 7, 7, 
	7, 7, 7, 7, 7, 7, 7, 7, 
	7, 7, 7, 7, 7, 7, 7, 120, 
	112, 122, 112, 112, 112, 112, 7, 113, 
	123, 112, 112, 139, 112, 112, 112, 140, 
	140, 140, 140, 140, 140, 140, 140, 140, 
	140, 112, 112, 112, 112, 112, 112, 112, 
	140, 140, 140, 140, 140, 140, 140, 140, 
	140, 140, 140, 140, 140, 140, 140, 140, 
	140, 140, 140, 140, 140, 140, 140, 140, 
	140, 140, 112, 112, 112, 112, 140, 112, 
	140, 140, 140, 140, 140, 140, 140, 140, 
	140, 140, 140, 140, 140, 140, 140, 140, 
	140, 140, 140, 140, 140, 140, 140, 140, 
	140, 140, 112, 112, 112, 112, 7, 115, 
	32, 32, 32, 32, 32, 32, 32, 32, 
	32, 32, 32, 32, 32, 32, 32, 32, 
	32, 32, 32, 32, 32, 32, 115, 112, 
	32, 112, 112, 112, 112, 32, 113, 116, 
	112, 112, 133, 112, 112, 112, 141, 141, 
	141, 141, 141, 141, 141, 141, 141, 141, 
	112, 112, 112, 112, 112, 112, 112, 141, 
	141, 141, 141, 141, 141, 141, 141, 141, 
	141, 141, 141, 141, 141, 141, 141, 141, 
	141, 141, 141, 141, 141, 141, 141, 141, 
	141, 112, 112, 112, 112, 141, 112, 141, 
	141, 141, 141, 141, 141, 141, 141, 141, 
	141, 141, 141, 141, 141, 141, 141, 141, 
	141, 141, 141, 141, 141, 141, 141, 141, 
	141, 112, 112, 112, 112, 32, 120, 121, 
	121, 121, 121, 7, 7, 7, 7, 7, 
	7, 7, 7, 7, 7, 7, 7, 7, 
	7, 7, 7, 7, 7, 120, 112, 122, 
	112, 112, 112, 112, 7, 113, 123, 112, 
	112, 139, 112, 112, 112, 142, 142, 142, 
	142, 142, 142, 142, 142, 142, 142, 112, 
	112, 112, 112, 112, 112, 112, 142, 142, 
	142, 142, 142, 142, 142, 142, 142, 142, 
	142, 142, 142, 142, 142, 142, 142, 142, 
	142, 142, 142, 142, 142, 142, 142, 142, 
	112, 112, 112, 112, 142, 112, 142, 142, 
	142, 142, 142, 142, 142, 142, 142, 142, 
	142, 142, 142, 142, 142, 142, 142, 142, 
	142, 142, 142, 142, 142, 142, 142, 142, 
	112, 112, 112, 112, 7, 115, 32, 32, 
	32, 32, 32, 32, 32, 32, 32, 32, 
	32, 32, 32, 32, 32, 32, 32, 32, 
	32, 32, 32, 32, 115, 112, 32, 112, 
	112, 112, 112, 32, 113, 116, 112, 112, 
	133, 112, 112, 112, 143, 143, 143, 143, 
	143, 143, 143, 143, 143, 143, 112, 112, 
	112, 112, 112, 112, 112, 143, 143, 143, 
	143, 143, 143, 143, 143, 143, 143, 143, 
	143, 143, 143, 143, 143, 143, 143, 143, 
	143, 143, 143, 143, 143, 143, 143, 112, 
	112, 112, 112, 143, 112, 143, 143, 143, 
	143, 143, 143, 143, 143, 143, 143, 143, 
	143, 143, 143, 143, 143, 143, 143, 143, 
	143, 143, 143, 143, 143, 143, 143, 112, 
	112, 112, 112, 32, 144, 1, 144, 144, 
	144, 144, 1, 1, 144, 144, 144, 144, 
	144, 144, 144, 144, 144, 144, 144, 144, 
	144, 144, 144, 144, 144, 144, 144, 144, 
	144, 144, 144, 144, 144, 144, 144, 144, 
	144, 144, 144, 144, 144, 144, 144, 144, 
	144, 144, 144, 144, 144, 144, 144, 144, 
	144, 144, 144, 144, 144, 144, 144, 144, 
	144, 144, 144, 144, 144, 144, 144, 144, 
	144, 144, 144, 144, 144, 144, 144, 144, 
	144, 144, 144, 144, 144, 144, 144, 144, 
	144, 144, 144, 144, 144, 144, 144, 144, 
	144, 144, 1, 145, 1, 1, 1, 1, 
	1, 1, 1, 1, 1, 1, 1, 1, 
	1, 1, 1, 1, 1, 1, 1, 1, 
	1, 1, 145, 146, 1, 146, 146, 146, 
	146, 1, 147, 146, 146, 146, 146, 146, 
	146, 146, 146, 146, 146, 146, 146, 146, 
	146, 146, 146, 146, 146, 146, 146, 146, 
	146, 146, 146, 146, 146, 146, 146, 146, 
	146, 146, 146, 146, 146, 146, 146, 146, 
	146, 146, 146, 146, 146, 146, 146, 146, 
	146, 146, 146, 146, 146, 146, 146, 146, 
	146, 146, 146, 146, 146, 146, 146, 146, 
	146, 146, 146, 146, 146, 146, 146, 146, 
	146, 146, 146, 146, 146, 146, 146, 146, 
	146, 146, 146, 146, 146, 146, 146, 146, 
	146, 1, 148, 1, 1, 1, 1, 1, 
	1, 1, 1, 1, 1, 1, 1, 1, 
	1, 1, 1, 1, 1, 1, 1, 1, 
	1, 148, 1, 1, 1, 1, 1, 1, 
	1, 149, 1, 150, 151, 151, 151, 151, 
	7, 7, 7, 7, 7, 7, 7, 7, 
	7, 7, 7, 7, 7, 7, 7, 7, 
	7, 7, 150, 152, 153, 152, 152, 152, 
	152, 7, 7, 152, 152, 152, 152, 152, 
	152, 152, 154, 154, 154, 154, 154, 154, 
	154, 154, 154, 154, 152, 152, 152, 152, 
	152, 152, 152, 154, 154, 154, 154, 154, 
	154, 154, 154, 154, 154, 154, 154, 154, 
	154, 154, 154, 154, 154, 154, 154, 154, 
	154, 154, 154, 154, 154, 152, 152, 152, 
	152, 154, 152, 154, 154, 154, 154, 154, 
	154, 154, 154, 154, 154, 154, 154, 154, 
	154, 154, 154, 154, 154, 154, 154, 154, 
	154, 154, 154, 154, 154, 152, 152, 152, 
	152, 7, 150, 151, 151, 151, 151, 7, 
	7, 7, 7, 7, 7, 7, 7, 7, 
	7, 7, 7, 7, 7, 7, 7, 7, 
	7, 150, 7, 153, 7, 7, 7, 7, 
	7, 7, 7, 7, 7, 7, 7, 7, 
	7, 155, 155, 155, 155, 155, 155, 155, 
	155, 155, 155, 7, 7, 7, 7, 7, 
	7, 7, 155, 155, 155, 155, 155, 155, 
	155, 155, 155, 155, 155, 155, 155, 155, 
	155, 155, 155, 155, 155, 155, 155, 155, 
	155, 155, 155, 155, 7, 7, 7, 7, 
	155, 7, 155, 155, 155, 155, 155, 155, 
	155, 155, 155, 155, 155, 155, 155, 155, 
	155, 155, 155, 155, 155, 155, 155, 155, 
	155, 155, 155, 155, 7, 151, 151, 151, 
	151, 151, 14, 14, 14, 14, 14, 14, 
	14, 14, 14, 14, 14, 14, 14, 14, 
	14, 14, 14, 14, 151, 14, 153, 14, 
	157, 156, 156, 156, 156, 156, 156, 156, 
	156, 156, 156, 156, 156, 156, 156, 156, 
	156, 156, 156, 156, 156, 156, 156, 156, 
	156, 156, 156, 156, 156, 156, 156, 156, 
	156, 156, 156, 156, 156, 156, 156, 156, 
	156, 156, 156, 156, 156, 156, 156, 156, 
	156, 156, 156, 156, 156, 156, 156, 156, 
	156, 156, 158, 156, 160, 159, 159, 159, 
	159, 159, 159, 159, 159, 159, 159, 159, 
	159, 159, 159, 159, 159, 159, 159, 159, 
	159, 159, 159, 159, 159, 159, 159, 159, 
	159, 159, 159, 159, 159, 159, 159, 159, 
	159, 159, 159, 159, 159, 159, 159, 159, 
	159, 159, 159, 159, 159, 159, 159, 159, 
	159, 159, 159, 159, 159, 159, 161, 159, 
	162, 14, 14, 14, 14, 14, 14, 14, 
	14, 14, 14, 14, 14, 14, 14, 14, 
	14, 14, 14, 14, 14, 14, 14, 162, 
	14, 14, 14, 14, 14, 14, 14, 14, 
	163, 14, 14, 164, 14, 165, 1, 1, 
	1, 1, 1, 1, 1, 1, 1, 1, 
	1, 1, 1, 1, 1, 1, 1, 1, 
	1, 1, 1, 1, 165, 1, 1, 1, 
	1, 1, 1, 1, 1, 1, 1, 1, 
	166, 1, 166, 151, 151, 151, 151, 7, 
	7, 7, 7, 7, 7, 7, 7, 7, 
	7, 7, 7, 7, 7, 7, 7, 7, 
	7, 166, 152, 153, 152, 152, 152, 152, 
	7, 7, 152, 152, 152, 152, 152, 152, 
	152, 167, 167, 167, 167, 167, 167, 167, 
	167, 167, 167, 152, 152, 152, 152, 152, 
	152, 152, 167, 167, 167, 167, 167, 167, 
	167, 167, 167, 167, 167, 167, 167, 167, 
	167, 167, 167, 167, 167, 167, 167, 167, 
	167, 167, 167, 167, 152, 152, 152, 152, 
	167, 152, 167, 167, 167, 167, 167, 167, 
	167, 167, 167, 167, 167, 167, 167, 167, 
	167, 167, 167, 167, 167, 167, 167, 167, 
	167, 167, 167, 167, 152, 152, 152, 152, 
	7, 168, 1, 168, 168, 168, 168, 1, 
	169, 168, 168, 168, 168, 168, 168, 168, 
	168, 168, 168, 168, 168, 168, 168, 168, 
	168, 168, 168, 168, 168, 168, 168, 168, 
	168, 168, 168, 168, 168, 168, 168, 168, 
	168, 168, 168, 168, 168, 168, 168, 168, 
	168, 168, 168, 168, 168, 168, 168, 168, 
	168, 168, 168, 168, 168, 168, 168, 168, 
	168, 168, 168, 168, 168, 168, 168, 168, 
	168, 168, 168, 168, 168, 168, 168, 168, 
	168, 168, 168, 168, 168, 168, 168, 168, 
	168, 168, 168, 168, 168, 168, 168, 1, 
	165, 1, 1, 1, 1, 1, 1, 1, 
	1, 1, 1, 1, 1, 1, 1, 1, 
	1, 1, 1, 1, 1, 1, 1, 165, 
	1, 1, 1, 1, 1, 1, 1, 1, 
	170, 1, 1, 166, 1, 171, 32, 32, 
	32, 32, 32, 32, 32, 32, 32, 32, 
	32, 32, 32, 32, 32, 32, 32, 32, 
	32, 32, 32, 32, 171, 168, 32, 168, 
	168, 168, 168, 32, 169, 172, 168, 168, 
	173, 168, 168, 168, 174, 174, 174, 174, 
	174, 174, 174, 174, 174, 174, 175, 168, 
	168, 168, 168, 168, 168, 174, 174, 174, 
	174, 174, 174, 174, 174, 174, 174, 174, 
	174, 174, 174, 174, 174, 174, 174, 174, 
	174, 174, 174, 174, 174, 174, 174, 168, 
	168, 168, 168, 174, 168, 174, 174, 174, 
	174, 174, 174, 174, 174, 174, 174, 174, 
	174, 174, 174, 174, 174, 174, 174, 174, 
	174, 174, 174, 174, 174, 174, 174, 168, 
	168, 168, 168, 32, 166, 151, 151, 151, 
	151, 7, 7, 7, 7, 7, 7, 7, 
	7, 7, 7, 7, 7, 7, 7, 7, 
	7, 7, 7, 166, 152, 153, 152, 152, 
	152, 152, 7, 169, 152, 152, 152, 152, 
	152, 152, 152, 167, 167, 167, 167, 167, 
	167, 167, 167, 167, 167, 152, 152, 152, 
	152, 152, 152, 152, 167, 167, 167, 167, 
	167, 167, 167, 167, 167, 167, 167, 167, 
	167, 167, 167, 167, 167, 167, 167, 167, 
	167, 167, 167, 167, 167, 167, 152, 152, 
	152, 152, 167, 152, 167, 167, 167, 167, 
	167, 167, 167, 167, 167, 167, 167, 167, 
	167, 167, 167, 167, 167, 167, 167, 167, 
	167, 167, 167, 167, 167, 167, 152, 152, 
	152, 152, 7, 176, 177, 177, 177, 177, 
	7, 7, 7, 7, 7, 7, 7, 7, 
	7, 7, 7, 7, 7, 7, 7, 7, 
	7, 7, 176, 168, 178, 168, 168, 168, 
	168, 7, 169, 179, 168, 168, 180, 168, 
	168, 168, 181, 181, 181, 181, 181, 181, 
	181, 181, 181, 181, 168, 168, 168, 168, 
	168, 168, 168, 181, 181, 181, 181, 181, 
	181, 181, 181, 181, 181, 181, 181, 181, 
	181, 181, 181, 181, 181, 181, 181, 181, 
	181, 181, 181, 181, 181, 168, 168, 168, 
	168, 181, 168, 181, 181, 181, 181, 181, 
	181, 181, 181, 181, 181, 181, 181, 181, 
	181, 181, 181, 181, 181, 181, 181, 181, 
	181, 181, 181, 181, 181, 168, 168, 168, 
	168, 7, 182, 151, 151, 151, 151, 7, 
	7, 7, 7, 7, 7, 7, 7, 7, 
	7, 7, 7, 7, 7, 7, 7, 7, 
	7, 182, 7, 153, 7, 7, 7, 7, 
	7, 7, 183, 7, 7, 184, 7, 7, 
	7, 155, 155, 155, 155, 155, 155, 155, 
	155, 155, 155, 7, 7, 7, 7, 7, 
	7, 7, 155, 155, 155, 155, 155, 155, 
	155, 155, 155, 155, 155, 155, 155, 155, 
	155, 155, 155, 155, 155, 155, 155, 155, 
	155, 155, 155, 155, 7, 7, 7, 7, 
	155, 7, 155, 155, 155, 155, 155, 155, 
	155, 155, 155, 155, 155, 155, 155, 155, 
	155, 155, 155, 155, 155, 155, 155, 155, 
	155, 155, 155, 155, 7, 171, 32, 32, 
	32, 32, 32, 32, 32, 32, 32, 32, 
	32, 32, 32, 32, 32, 32, 32, 32, 
	32, 32, 32, 32, 171, 32, 32, 32, 
	32, 32, 32, 32, 32, 185, 32, 32, 
	186, 32, 32, 32, 187, 187, 187, 187, 
	187, 187, 187, 187, 187, 187, 32, 32, 
	32, 32, 32, 32, 32, 187, 187, 187, 
	187, 187, 187, 187, 187, 187, 187, 187, 
	187, 187, 187, 187, 187, 187, 187, 187, 
	187, 187, 187, 187, 187, 187, 187, 32, 
	32, 32, 32, 187, 32, 187, 187, 187, 
	187, 187, 187, 187, 187, 187, 187, 187, 
	187, 187, 187, 187, 187, 187, 187, 187, 
	187, 187, 187, 187, 187, 187, 187, 32, 
	171, 32, 32, 32, 32, 32, 32, 32, 
	32, 32, 32, 32, 32, 32, 32, 32, 
	32, 32, 32, 32, 32, 32, 32, 171, 
	168, 32, 168, 168, 168, 168, 32, 169, 
	172, 168, 168, 173, 168, 168, 168, 188, 
	188, 188, 188, 188, 188, 188, 188, 188, 
	188, 168, 168, 168, 168, 168, 168, 168, 
	188, 188, 188, 188, 188, 188, 188, 188, 
	188, 188, 188, 188, 188, 188, 188, 188, 
	188, 188, 188, 188, 188, 188, 188, 188, 
	188, 188, 168, 168, 168, 168, 188, 168, 
	188, 188, 188, 188, 188, 188, 188, 188, 
	188, 188, 188, 188, 188, 188, 188, 188, 
	188, 188, 188, 188, 188, 188, 188, 188, 
	188, 188, 168, 168, 168, 168, 32, 159, 
	171, 32, 32, 32, 32, 32, 32, 32, 
	32, 32, 32, 32, 32, 32, 32, 32, 
	32, 32, 32, 32, 32, 32, 32, 171, 
	168, 32, 168, 168, 168, 168, 32, 169, 
	172, 168, 168, 189, 168, 168, 168, 190, 
	190, 190, 190, 190, 190, 190, 190, 190, 
	190, 191, 168, 168, 168, 168, 168, 168, 
	190, 190, 190, 190, 190, 190, 190, 190, 
	190, 190, 190, 190, 190, 190, 190, 190, 
	190, 190, 190, 190, 190, 190, 190, 190, 
	190, 190, 168, 168, 168, 168, 190, 168, 
	190, 190, 190, 190, 190, 190, 190, 190, 
	190, 190, 190, 190, 190, 190, 190, 190, 
	190, 190, 190, 190, 190, 190, 190, 190, 
	190, 190, 168, 168, 168, 168, 32, 166, 
	151, 151, 151, 151, 7, 7, 7, 7, 
	7, 7, 7, 7, 7, 7, 7, 7, 
	7, 7, 7, 7, 7, 7, 166, 152, 
	153, 152, 152, 152, 152, 7, 169, 152, 
	152, 152, 152, 152, 152, 152, 192, 192, 
	192, 192, 192, 192, 192, 192, 192, 192, 
	152, 152, 152, 152, 152, 152, 152, 192, 
	192, 192, 192, 192, 192, 192, 192, 192, 
	192, 192, 192, 192, 192, 192, 192, 192, 
	192, 192, 192, 192, 192, 192, 192, 192, 
	192, 152, 152, 152, 152, 192, 152, 192, 
	192, 192, 192, 192, 192, 192, 192, 192, 
	192, 192, 192, 192, 192, 192, 192, 192, 
	192, 192, 192, 192, 192, 192, 192, 192, 
	192, 152, 152, 152, 152, 7, 171, 32, 
	32, 32, 32, 32, 32, 32, 32, 32, 
	32, 32, 32, 32, 32, 32, 32, 32, 
	32, 32, 32, 32, 32, 171, 168, 32, 
	168, 168, 168, 168, 32, 169, 172, 168, 
	168, 189, 168, 168, 168, 193, 193, 193, 
	193, 193, 193, 193, 193, 193, 193, 194, 
	168, 168, 168, 168, 168, 168, 193, 193, 
	193, 193, 193, 193, 193, 193, 193, 193, 
	193, 193, 193, 193, 193, 193, 193, 193, 
	193, 193, 193, 193, 193, 193, 193, 193, 
	168, 168, 168, 168, 193, 168, 193, 193, 
	193, 193, 193, 193, 193, 193, 193, 193, 
	193, 193, 193, 193, 193, 193, 193, 193, 
	193, 193, 193, 193, 193, 193, 193, 193, 
	168, 168, 168, 168, 32, 176, 177, 177, 
	177, 177, 7, 7, 7, 7, 7, 7, 
	7, 7, 7, 7, 7, 7, 7, 7, 
	7, 7, 7, 7, 176, 168, 178, 168, 
	168, 168, 168, 7, 169, 179, 168, 168, 
	195, 168, 168, 168, 196, 196, 196, 196, 
	196, 196, 196, 196, 196, 196, 168, 168, 
	168, 168, 168, 168, 168, 196, 196, 196, 
	196, 196, 196, 196, 196, 196, 196, 196, 
	196, 196, 196, 196, 196, 196, 196, 196, 
	196, 196, 196, 196, 196, 196, 196, 168, 
	168, 168, 168, 196, 168, 196, 196, 196, 
	196, 196, 196, 196, 196, 196, 196, 196, 
	196, 196, 196, 196, 196, 196, 196, 196, 
	196, 196, 196, 196, 196, 196, 196, 168, 
	168, 168, 168, 7, 171, 32, 32, 32, 
	32, 32, 32, 32, 32, 32, 32, 32, 
	32, 32, 32, 32, 32, 32, 32, 32, 
	32, 32, 32, 171, 168, 32, 168, 168, 
	168, 168, 32, 169, 172, 168, 168, 189, 
	168, 168, 168, 197, 197, 197, 197, 197, 
	197, 197, 197, 197, 197, 168, 168, 168, 
	168, 168, 168, 168, 197, 197, 197, 197, 
	197, 197, 197, 197, 197, 197, 197, 197, 
	197, 197, 197, 197, 197, 197, 197, 197, 
	197, 197, 197, 197, 197, 197, 168, 168, 
	168, 168, 197, 168, 197, 197, 197, 197, 
	197, 197, 197, 197, 197, 197, 197, 197, 
	197, 197, 197, 197, 197, 197, 197, 197, 
	197, 197, 197, 197, 197, 197, 168, 168, 
	168, 168, 32, 176, 177, 177, 177, 177, 
	7, 7, 7, 7, 7, 7, 7, 7, 
	7, 7, 7, 7, 7, 7, 7, 7, 
	7, 7, 176, 168, 178, 168, 168, 168, 
	168, 7, 169, 179, 168, 168, 195, 168, 
	168, 168, 198, 198, 198, 198, 198, 198, 
	198, 198, 198, 198, 168, 168, 168, 168, 
	168, 168, 168, 198, 198, 198, 198, 198, 
	198, 198, 198, 198, 198, 198, 198, 198, 
	198, 198, 198, 198, 198, 198, 198, 198, 
	198, 198, 198, 198, 198, 168, 168, 168, 
	168, 198, 168, 198, 198, 198, 198, 198, 
	198, 198, 198, 198, 198, 198, 198, 198, 
	198, 198, 198, 198, 198, 198, 198, 198, 
	198, 198, 198, 198, 198, 168, 168, 168, 
	168, 7, 171, 32, 32, 32, 32, 32, 
	32, 32, 32, 32, 32, 32, 32, 32, 
	32, 32, 32, 32, 32, 32, 32, 32, 
	32, 171, 168, 32, 168, 168, 168, 168, 
	32, 169, 172, 168, 168, 189, 168, 168, 
	168, 199, 199, 199, 199, 199, 199, 199, 
	199, 199, 199, 168, 168, 168, 168, 168, 
	168, 168, 199, 199, 199, 199, 199, 199, 
	199, 199, 199, 199, 199, 199, 199, 199, 
	199, 199, 199, 199, 199, 199, 199, 199, 
	199, 199, 199, 199, 168, 168, 168, 168, 
	199, 168, 199, 199, 199, 199, 199, 199, 
	199, 199, 199, 199, 199, 199, 199, 199, 
	199, 199, 199, 199, 199, 199, 199, 199, 
	199, 199, 199, 199, 168, 168, 168, 168, 
	32, 200, 1, 201, 1, 1, 202, 29, 
	203, 1, 1, 1, 1, 1, 1, 1, 
	1, 1, 1, 1, 1, 1, 1, 1, 
	1, 1, 1, 1, 1, 1, 29, 1, 
	1, 1, 1, 1, 1, 1, 1, 1, 
	1, 1, 1, 1, 1, 204, 1, 1, 
	206, 205, 29, 203, 1, 1, 1, 1, 
	1, 1, 1, 1, 1, 1, 1, 1, 
	1, 1, 1, 1, 1, 1, 1, 1, 
	1, 29, 27, 1, 27, 27, 27, 27, 
	1, 28, 27, 27, 27, 27, 27, 27, 
	207, 27, 27, 27, 27, 27, 27, 27, 
	27, 27, 27, 27, 27, 27, 27, 27, 
	27, 27, 27, 27, 27, 27, 27, 27, 
	27, 27, 27, 27, 27, 27, 27, 27, 
	27, 27, 27, 27, 27, 27, 27, 27, 
	27, 27, 27, 27, 27, 27, 27, 27, 
	27, 27, 27, 27, 27, 27, 27, 27, 
	27, 27, 27, 27, 27, 27, 27, 27, 
	27, 27, 27, 27, 27, 27, 27, 27, 
	27, 27, 27, 27, 27, 27, 27, 27, 
	1, 206, 205, 205, 205, 205, 205, 205, 
	205, 205, 205, 205, 205, 205, 205, 205, 
	205, 205, 205, 205, 205, 205, 205, 205, 
	208, 205, 208, 208, 208, 208, 205, 209, 
	208, 208, 208, 208, 208, 208, 208, 208, 
	208, 208, 208, 208, 208, 208, 208, 208, 
	208, 208, 208, 208, 208, 208, 208, 208, 
	208, 208, 208, 208, 208, 208, 208, 208, 
	208, 208, 208, 208, 208, 208, 208, 208, 
	208, 208, 208, 208, 208, 208, 208, 208, 
	208, 208, 208, 208, 208, 208, 208, 208, 
	208, 208, 208, 208, 208, 208, 208, 208, 
	208, 208, 208, 208, 208, 208, 208, 208, 
	208, 208, 208, 208, 208, 208, 208, 208, 
	208, 208, 208, 208, 208, 208, 205, 210, 
	206, 205, 205, 205, 205, 205, 205, 205, 
	205, 205, 205, 205, 205, 205, 205, 205, 
	205, 205, 205, 205, 205, 205, 210, 205, 
	205, 205, 205, 205, 205, 205, 205, 211, 
	205, 205, 212, 205, 210, 206, 205, 205, 
	205, 205, 205, 205, 205, 205, 205, 205, 
	205, 205, 205, 205, 205, 205, 205, 205, 
	205, 205, 205, 210, 205, 205, 205, 205, 
	205, 205, 205, 205, 205, 205, 205, 212, 
	205, 212, 213, 214, 214, 214, 205, 205, 
	205, 205, 205, 205, 205, 205, 205, 205, 
	205, 205, 205, 205, 205, 205, 205, 205, 
	212, 215, 216, 215, 215, 215, 215, 205, 
	205, 215, 215, 215, 215, 215, 215, 215, 
	217, 217, 217, 217, 217, 217, 217, 217, 
	217, 217, 215, 215, 215, 215, 215, 215, 
	215, 217, 217, 217, 217, 217, 217, 217, 
	217, 217, 217, 217, 217, 217, 217, 217, 
	217, 217, 217, 217, 217, 217, 217, 217, 
	217, 217, 217, 215, 215, 215, 215, 217, 
	215, 217, 217, 217, 217, 217, 217, 217, 
	217, 217, 217, 217, 217, 217, 217, 217, 
	217, 217, 217, 217, 217, 217, 217, 217, 
	217, 217, 217, 215, 215, 215, 215, 205, 
	9, 9, 9, 9, 9, 14, 14, 14, 
	14, 14, 14, 14, 14, 14, 14, 14, 
	14, 14, 14, 14, 14, 14, 14, 9, 
	14, 11, 14, 214, 213, 214, 214, 214, 
	205, 205, 205, 205, 205, 205, 205, 205, 
	205, 205, 205, 205, 205, 205, 205, 205, 
	205, 205, 214, 205, 216, 205, 219, 218, 
	218, 218, 218, 218, 218, 218, 218, 218, 
	218, 218, 218, 218, 218, 218, 218, 218, 
	218, 218, 218, 218, 218, 218, 220, 218, 
	218, 218, 218, 218, 218, 218, 218, 218, 
	218, 218, 218, 218, 218, 218, 218, 218, 
	218, 218, 218, 218, 218, 218, 218, 218, 
	218, 218, 218, 218, 218, 218, 218, 218, 
	218, 218, 218, 218, 218, 218, 218, 218, 
	218, 218, 218, 218, 218, 218, 218, 218, 
	218, 218, 218, 218, 218, 218, 218, 218, 
	221, 218, 223, 222, 222, 222, 222, 222, 
	222, 222, 222, 222, 222, 222, 222, 222, 
	222, 222, 222, 222, 222, 222, 222, 222, 
	222, 222, 224, 222, 222, 222, 222, 222, 
	222, 222, 222, 222, 222, 222, 222, 222, 
	222, 222, 222, 222, 222, 222, 222, 222, 
	222, 222, 222, 222, 222, 222, 222, 222, 
	222, 222, 222, 222, 222, 222, 222, 222, 
	222, 222, 222, 222, 222, 222, 222, 222, 
	222, 222, 222, 222, 222, 222, 222, 222, 
	222, 222, 222, 222, 225, 222, 19, 18, 
	18, 18, 18, 18, 18, 18, 18, 18, 
	18, 18, 18, 18, 18, 18, 18, 18, 
	18, 18, 18, 18, 18, 18, 18, 18, 
	18, 18, 18, 18, 18, 18, 18, 18, 
	18, 18, 18, 18, 18, 18, 18, 18, 
	18, 18, 18, 18, 18, 18, 18, 18, 
	18, 18, 18, 18, 18, 18, 18, 18, 
	20, 18, 226, 206, 205, 205, 205, 205, 
	205, 205, 205, 205, 205, 205, 205, 205, 
	205, 205, 205, 205, 205, 205, 205, 205, 
	205, 226, 205, 205, 205, 205, 205, 205, 
	205, 205, 227, 205, 205, 228, 205, 211, 
	206, 205, 205, 205, 205, 205, 205, 205, 
	205, 205, 205, 205, 205, 205, 205, 205, 
	205, 205, 205, 205, 205, 205, 211, 205, 
	205, 205, 205, 205, 205, 205, 205, 205, 
	205, 205, 205, 205, 205, 229, 205, 206, 
	205, 205, 205, 205, 205, 205, 205, 205, 
	205, 205, 205, 205, 205, 205, 205, 205, 
	205, 205, 205, 205, 205, 205, 205, 205, 
	205, 205, 205, 205, 205, 205, 205, 205, 
	205, 205, 205, 205, 230, 205, 206, 31, 
	223, 222, 231, 206, 205, 205, 205, 205, 
	205, 205, 205, 205, 205, 205, 205, 205, 
	205, 205, 205, 205, 205, 205, 205, 205, 
	205, 231, 208, 205, 208, 208, 208, 208, 
	205, 209, 232, 208, 208, 233, 208, 208, 
	208, 234, 234, 234, 234, 234, 234, 234, 
	234, 234, 234, 235, 208, 208, 208, 208, 
	208, 208, 234, 234, 234, 234, 234, 234, 
	234, 234, 234, 234, 234, 234, 234, 234, 
	234, 234, 234, 234, 234, 234, 234, 234, 
	234, 234, 234, 234, 208, 208, 208, 208, 
	234, 208, 234, 234, 234, 234, 234, 234, 
	234, 234, 234, 234, 234, 234, 234, 234, 
	234, 234, 234, 234, 234, 234, 234, 234, 
	234, 234, 234, 234, 208, 208, 208, 208, 
	205, 211, 206, 205, 205, 205, 205, 205, 
	205, 205, 205, 205, 205, 205, 205, 205, 
	205, 205, 205, 205, 205, 205, 205, 205, 
	211, 208, 205, 208, 208, 208, 208, 205, 
	209, 208, 208, 208, 208, 208, 208, 236, 
	208, 208, 208, 208, 208, 208, 208, 208, 
	208, 208, 208, 208, 208, 208, 208, 208, 
	208, 208, 208, 208, 208, 208, 208, 208, 
	208, 208, 208, 208, 208, 208, 208, 208, 
	208, 208, 208, 208, 208, 208, 208, 208, 
	208, 208, 208, 208, 208, 208, 208, 208, 
	208, 208, 208, 208, 208, 208, 208, 208, 
	208, 208, 208, 208, 208, 208, 208, 208, 
	208, 208, 208, 208, 208, 208, 208, 208, 
	208, 208, 208, 208, 208, 208, 208, 205, 
	206, 205, 205, 205, 205, 205, 205, 205, 
	205, 205, 205, 205, 205, 205, 205, 205, 
	205, 205, 205, 205, 205, 205, 205, 208, 
	205, 208, 208, 208, 208, 205, 209, 208, 
	208, 208, 208, 208, 208, 237, 208, 208, 
	208, 208, 208, 208, 208, 208, 208, 208, 
	208, 208, 208, 208, 208, 208, 208, 208, 
	208, 208, 208, 208, 208, 208, 208, 208, 
	208, 208, 208, 208, 208, 208, 208, 208, 
	208, 208, 208, 208, 208, 208, 208, 208, 
	208, 208, 208, 208, 208, 208, 208, 208, 
	208, 208, 208, 208, 208, 208, 208, 208, 
	208, 208, 208, 208, 208, 208, 208, 208, 
	208, 208, 208, 208, 208, 208, 208, 208, 
	208, 208, 208, 208, 208, 205, 206, 31, 
	31, 31, 31, 31, 31, 31, 31, 31, 
	31, 31, 31, 31, 31, 31, 31, 31, 
	31, 31, 31, 31, 31, 39, 31, 39, 
	39, 39, 39, 31, 40, 39, 39, 39, 
	39, 39, 39, 39, 39, 39, 39, 39, 
	39, 39, 39, 39, 39, 39, 39, 39, 
	39, 39, 39, 39, 39, 39, 39, 39, 
	39, 39, 39, 39, 39, 39, 39, 39, 
	39, 39, 39, 39, 39, 39, 39, 39, 
	39, 39, 39, 39, 39, 39, 39, 39, 
	39, 39, 39, 39, 39, 39, 39, 39, 
	39, 39, 39, 39, 39, 39, 39, 39, 
	39, 39, 39, 39, 39, 39, 39, 39, 
	39, 39, 39, 39, 39, 39, 39, 39, 
	39, 39, 39, 31, 212, 213, 214, 214, 
	214, 205, 205, 205, 205, 205, 205, 205, 
	205, 205, 205, 205, 205, 205, 205, 205, 
	205, 205, 205, 212, 215, 216, 215, 215, 
	215, 215, 205, 209, 215, 215, 215, 215, 
	215, 215, 215, 217, 217, 217, 217, 217, 
	217, 217, 217, 217, 217, 215, 215, 215, 
	215, 215, 215, 215, 217, 217, 217, 217, 
	217, 217, 217, 217, 217, 217, 217, 217, 
	217, 217, 217, 217, 217, 217, 217, 217, 
	217, 217, 217, 217, 217, 217, 215, 215, 
	215, 215, 217, 215, 217, 217, 217, 217, 
	217, 217, 217, 217, 217, 217, 217, 217, 
	217, 217, 217, 217, 217, 217, 217, 217, 
	217, 217, 217, 217, 217, 217, 215, 215, 
	215, 215, 205, 238, 239, 240, 240, 240, 
	205, 205, 205, 205, 205, 205, 205, 205, 
	205, 205, 205, 205, 205, 205, 205, 205, 
	205, 205, 238, 208, 241, 208, 208, 208, 
	208, 205, 209, 242, 208, 208, 243, 208, 
	208, 208, 244, 244, 244, 244, 244, 244, 
	244, 244, 244, 244, 208, 208, 208, 208, 
	208, 208, 208, 244, 244, 244, 244, 244, 
	244, 244, 244, 244, 244, 244, 244, 244, 
	244, 244, 244, 244, 244, 244, 244, 244, 
	244, 244, 244, 244, 244, 208, 208, 208, 
	208, 244, 208, 244, 244, 244, 244, 244, 
	244, 244, 244, 244, 244, 244, 244, 244, 
	244, 244, 244, 244, 244, 244, 244, 244, 
	244, 244, 244, 244, 244, 208, 208, 208, 
	208, 205, 245, 213, 214, 214, 214, 205, 
	205, 205, 205, 205, 205, 205, 205, 205, 
	205, 205, 205, 205, 205, 205, 205, 205, 
	205, 245, 205, 216, 205, 205, 205, 205, 
	205, 205, 246, 205, 205, 247, 205, 205, 
	205, 248, 248, 248, 248, 248, 248, 248, 
	248, 248, 248, 205, 205, 205, 205, 205, 
	205, 205, 248, 248, 248, 248, 248, 248, 
	248, 248, 248, 248, 248, 248, 248, 248, 
	248, 248, 248, 248, 248, 248, 248, 248, 
	248, 248, 248, 248, 205, 205, 205, 205, 
	248, 205, 248, 248, 248, 248, 248, 248, 
	248, 248, 248, 248, 248, 248, 248, 248, 
	248, 248, 248, 248, 248, 248, 248, 248, 
	248, 248, 248, 248, 205, 231, 206, 205, 
	205, 205, 205, 205, 205, 205, 205, 205, 
	205, 205, 205, 205, 205, 205, 205, 205, 
	205, 205, 205, 205, 231, 205, 205, 205, 
	205, 205, 205, 205, 205, 249, 205, 205, 
	250, 205, 205, 205, 251, 251, 251, 251, 
	251, 251, 251, 251, 251, 251, 205, 205, 
	205, 205, 205, 205, 205, 251, 251, 251, 
	251, 251, 251, 251, 251, 251, 251, 251, 
	251, 251, 251, 251, 251, 251, 251, 251, 
	251, 251, 251, 251, 251, 251, 251, 205, 
	205, 205, 205, 251, 205, 251, 251, 251, 
	251, 251, 251, 251, 251, 251, 251, 251, 
	251, 251, 251, 251, 251, 251, 251, 251, 
	251, 251, 251, 251, 251, 251, 251, 205, 
	231, 206, 205, 205, 205, 205, 205, 205, 
	205, 205, 205, 205, 205, 205, 205, 205, 
	205, 205, 205, 205, 205, 205, 205, 231, 
	208, 205, 208, 208, 208, 208, 205, 209, 
	232, 208, 208, 233, 208, 208, 208, 252, 
	252, 252, 252, 252, 252, 252, 252, 252, 
	252, 208, 208, 208, 208, 208, 208, 208, 
	252, 252, 252, 252, 252, 252, 252, 252, 
	252, 252, 252, 252, 252, 252, 252, 252, 
	252, 252, 252, 252, 252, 252, 252, 252, 
	252, 252, 208, 208, 208, 208, 252, 208, 
	252, 252, 252, 252, 252, 252, 252, 252, 
	252, 252, 252, 252, 252, 252, 252, 252, 
	252, 252, 252, 252, 252, 252, 252, 252, 
	252, 252, 208, 208, 208, 208, 205, 253, 
	65, 65, 65, 65, 65, 65, 65, 65, 
	65, 65, 65, 65, 65, 65, 65, 65, 
	65, 65, 65, 65, 65, 65, 254, 65, 
	254, 254, 254, 254, 65, 65, 254, 254, 
	254, 254, 254, 254, 254, 254, 254, 254, 
	254, 254, 254, 254, 254, 254, 254, 254, 
	254, 254, 254, 254, 254, 254, 254, 254, 
	254, 254, 254, 254, 254, 254, 254, 254, 
	254, 254, 254, 254, 254, 254, 254, 254, 
	254, 254, 254, 254, 254, 254, 254, 254, 
	254, 254, 254, 254, 254, 254, 254, 254, 
	254, 254, 254, 254, 254, 254, 254, 254, 
	254, 254, 254, 254, 254, 254, 254, 254, 
	254, 254, 254, 254, 254, 254, 254, 254, 
	254, 254, 254, 254, 65, 1, 256, 255, 
	255, 255, 255, 255, 255, 255, 255, 255, 
	255, 255, 255, 255, 255, 255, 255, 255, 
	255, 255, 255, 255, 255, 255, 255, 255, 
	255, 255, 255, 255, 255, 255, 255, 255, 
	255, 255, 255, 255, 257, 257, 257, 257, 
	257, 257, 257, 257, 257, 257, 255, 255, 
	255, 255, 255, 255, 255, 257, 257, 257, 
	257, 257, 257, 257, 257, 257, 257, 257, 
	257, 257, 257, 257, 257, 257, 257, 257, 
	257, 257, 257, 257, 257, 257, 257, 255, 
	255, 255, 255, 257, 255, 257, 257, 257, 
	257, 257, 257, 257, 257, 257, 257, 257, 
	257, 257, 257, 257, 257, 257, 257, 257, 
	257, 257, 257, 257, 257, 257, 257, 255, 
	255, 68, 258, 14, 1, 259, 32, 32, 
	32, 32, 32, 32, 32, 32, 32, 32, 
	32, 32, 32, 32, 32, 32, 32, 32, 
	32, 32, 32, 32, 32, 32, 32, 32, 
	32, 32, 32, 32, 32, 32, 32, 32, 
	32, 32, 32, 260, 260, 260, 260, 260, 
	260, 260, 260, 260, 260, 32, 32, 32, 
	32, 32, 32, 32, 260, 260, 260, 260, 
	260, 260, 260, 260, 260, 260, 260, 260, 
	260, 260, 260, 260, 260, 260, 260, 260, 
	260, 260, 260, 260, 260, 260, 32, 32, 
	32, 32, 260, 32, 260, 260, 260, 260, 
	260, 260, 260, 260, 260, 260, 260, 260, 
	260, 260, 260, 260, 260, 260, 260, 260, 
	260, 260, 260, 260, 260, 260, 32, 259, 
	32, 32, 32, 32, 32, 32, 32, 32, 
	32, 32, 32, 32, 32, 32, 32, 32, 
	32, 32, 32, 32, 32, 32, 32, 32, 
	32, 32, 32, 32, 32, 32, 32, 32, 
	32, 32, 32, 32, 32, 261, 261, 261, 
	261, 261, 261, 261, 261, 261, 261, 262, 
	32, 32, 32, 32, 32, 32, 261, 261, 
	261, 261, 261, 261, 261, 261, 261, 261, 
	261, 261, 261, 261, 261, 261, 261, 261, 
	261, 261, 261, 261, 261, 261, 261, 261, 
	32, 32, 32, 32, 261, 32, 261, 261, 
	261, 261, 261, 261, 261, 261, 261, 261, 
	261, 261, 261, 261, 261, 261, 261, 261, 
	261, 261, 261, 261, 261, 261, 261, 261, 
	32, 263, 264, 265, 265, 265, 7, 7, 
	7, 7, 7, 7, 7, 7, 7, 7, 
	7, 7, 7, 7, 7, 7, 7, 7, 
	263, 7, 266, 7, 7, 7, 7, 7, 
	7, 7, 7, 7, 7, 7, 7, 7, 
	267, 267, 267, 267, 267, 267, 267, 267, 
	267, 267, 7, 7, 7, 7, 7, 7, 
	7, 267, 267, 267, 267, 267, 267, 267, 
	267, 267, 267, 267, 267, 267, 267, 267, 
	267, 267, 267, 267, 267, 267, 267, 267, 
	267, 267, 267, 7, 7, 7, 7, 267, 
	7, 267, 267, 267, 267, 267, 267, 267, 
	267, 267, 267, 267, 267, 267, 267, 267, 
	267, 267, 267, 267, 267, 267, 267, 267, 
	267, 267, 267, 7, 268, 269, 78, 78, 
	78, 7, 7, 7, 7, 7, 7, 7, 
	7, 7, 7, 7, 7, 7, 7, 7, 
	7, 7, 7, 268, 7, 79, 7, 7, 
	7, 7, 7, 7, 7, 7, 7, 7, 
	7, 7, 7, 81, 81, 81, 81, 81, 
	81, 81, 81, 81, 81, 7, 7, 7, 
	7, 7, 7, 7, 81, 81, 81, 81, 
	81, 81, 81, 81, 81, 81, 81, 81, 
	81, 81, 81, 81, 81, 81, 81, 81, 
	81, 81, 81, 81, 81, 81, 7, 7, 
	7, 7, 81, 7, 81, 81, 81, 81, 
	81, 81, 81, 81, 81, 81, 81, 81, 
	81, 81, 81, 81, 81, 81, 81, 81, 
	81, 81, 81, 81, 81, 81, 7, 78, 
	78, 78, 78, 78, 14, 14, 14, 14, 
	14, 14, 14, 14, 14, 14, 14, 14, 
	14, 14, 14, 14, 14, 14, 78, 14, 
	79, 14, 1, 112, 1, 112, 112, 112, 
	112, 1, 113, 112, 112, 112, 112, 112, 
	112, 112, 112, 112, 112, 112, 112, 112, 
	112, 112, 112, 112, 112, 112, 112, 112, 
	112, 112, 112, 112, 112, 112, 112, 112, 
	112, 112, 112, 112, 112, 112, 112, 112, 
	112, 112, 112, 112, 112, 112, 112, 112, 
	112, 112, 112, 112, 112, 112, 112, 112, 
	112, 112, 112, 112, 112, 112, 112, 112, 
	112, 112, 112, 112, 112, 112, 112, 112, 
	112, 112, 112, 112, 112, 112, 112, 112, 
	112, 112, 112, 112, 112, 112, 112, 112, 
	112, 1, 270, 1, 1, 270, 1, 1, 
	1, 1, 1, 1, 1, 1, 1, 1, 
	1, 1, 1, 1, 1, 1, 1, 1, 
	1, 1, 1, 1, 168, 1, 168, 168, 
	168, 168, 1, 169, 168, 168, 168, 168, 
	168, 168, 168, 168, 168, 168, 168, 168, 
	168, 168, 168, 168, 168, 168, 168, 168, 
	168, 168, 168, 168, 168, 168, 168, 168, 
	168, 168, 168, 168, 168, 168, 168, 168, 
	168, 168, 168, 168, 168, 168, 168, 168, 
	168, 168, 168, 168, 168, 168, 168, 168, 
	168, 168, 168, 168, 168, 168, 168, 168, 
	168, 168, 168, 168, 168, 168, 168, 168, 
	168, 168, 168, 168, 168, 168, 168, 168, 
	168, 168, 168, 168, 168, 168, 168, 168, 
	168, 168, 1, 272, 271, 1, 0
]

class << self
	attr_accessor :_bel_trans_targs
	private :_bel_trans_targs, :_bel_trans_targs=
end
self._bel_trans_targs = [
	2, 0, 3, 2, 4, 3, 4, 0, 
	5, 6, 12, 7, 25, 23, 0, 8, 
	9, 19, 8, 9, 19, 10, 101, 11, 
	10, 11, 16, 12, 13, 101, 15, 103, 
	0, 10, 104, 20, 16, 21, 18, 105, 
	106, 22, 6, 7, 104, 20, 24, 22, 
	101, 11, 101, 11, 23, 24, 26, 25, 
	30, 27, 27, 28, 26, 29, 29, 31, 
	31, 0, 128, 130, 0, 34, 35, 36, 
	132, 37, 36, 132, 37, 39, 40, 41, 
	136, 135, 42, 133, 43, 42, 133, 43, 
	45, 46, 45, 47, 46, 47, 48, 49, 
	55, 50, 64, 61, 51, 52, 63, 51, 
	52, 63, 53, 140, 54, 53, 54, 57, 
	55, 56, 140, 53, 141, 58, 57, 59, 
	60, 49, 50, 141, 58, 62, 60, 140, 
	54, 140, 54, 61, 62, 65, 64, 69, 
	66, 66, 67, 65, 68, 68, 70, 70, 
	72, 73, 72, 74, 73, 74, 75, 76, 
	82, 77, 91, 88, 78, 79, 90, 78, 
	79, 90, 80, 142, 81, 80, 81, 84, 
	82, 83, 142, 80, 144, 85, 84, 86, 
	87, 76, 77, 144, 85, 89, 87, 142, 
	81, 142, 81, 88, 89, 92, 91, 96, 
	93, 93, 94, 92, 95, 95, 97, 97, 
	99, 100, 145, 102, 14, 103, 102, 17, 
	105, 106, 107, 115, 108, 109, 110, 105, 
	111, 119, 112, 113, 114, 118, 112, 113, 
	114, 118, 107, 115, 108, 116, 117, 107, 
	120, 123, 119, 124, 121, 122, 125, 109, 
	110, 111, 120, 123, 127, 125, 115, 108, 
	126, 115, 108, 126, 127, 129, 128, 0, 
	131, 130, 134, 134, 135, 136, 137, 138, 
	139, 40, 41, 135, 138, 139, 143, 145, 
	146
]

class << self
	attr_accessor :_bel_trans_actions
	private :_bel_trans_actions, :_bel_trans_actions=
end
self._bel_trans_actions = [
	2, 0, 3, 0, 4, 0, 5, 7, 
	0, 0, 8, 0, 9, 11, 13, 15, 
	16, 15, 0, 17, 0, 19, 19, 19, 
	0, 0, 9, 0, 20, 0, 0, 21, 
	23, 24, 24, 24, 0, 25, 0, 21, 
	26, 28, 29, 29, 28, 28, 30, 32, 
	32, 32, 24, 24, 0, 0, 24, 0, 
	25, 9, 0, 25, 28, 30, 0, 30, 
	0, 37, 8, 11, 39, 0, 0, 15, 
	41, 15, 0, 42, 0, 0, 0, 0, 
	11, 11, 15, 16, 15, 0, 17, 0, 
	46, 3, 0, 4, 0, 5, 0, 0, 
	8, 0, 9, 11, 15, 16, 15, 0, 
	17, 0, 19, 51, 19, 0, 0, 9, 
	0, 20, 52, 24, 54, 24, 0, 25, 
	28, 29, 29, 56, 28, 30, 32, 58, 
	32, 54, 24, 0, 0, 24, 0, 25, 
	9, 0, 25, 28, 30, 0, 30, 0, 
	2, 3, 0, 4, 0, 5, 0, 0, 
	8, 0, 9, 11, 15, 16, 15, 0, 
	17, 0, 19, 19, 19, 0, 0, 9, 
	0, 20, 0, 24, 24, 24, 0, 25, 
	28, 29, 29, 28, 28, 30, 32, 32, 
	32, 24, 24, 0, 0, 24, 0, 25, 
	9, 0, 25, 28, 30, 0, 30, 0, 
	0, 0, 21, 63, 0, 0, 64, 0, 
	0, 20, 0, 0, 0, 64, 0, 8, 
	0, 9, 15, 71, 16, 15, 0, 64, 
	17, 0, 19, 19, 19, 0, 0, 24, 
	24, 24, 0, 25, 0, 0, 28, 75, 
	29, 29, 28, 28, 30, 32, 32, 32, 
	11, 24, 24, 0, 0, 3, 0, 80, 
	25, 0, 82, 84, 0, 0, 25, 29, 
	87, 29, 29, 30, 0, 89, 91, 0, 
	93
]

class << self
	attr_accessor :_bel_eof_actions
	private :_bel_eof_actions, :_bel_eof_actions=
end
self._bel_eof_actions = [
	0, 1, 1, 0, 6, 10, 12, 14, 
	14, 18, 0, 6, 1, 0, 0, 0, 
	22, 1, 1, 14, 6, 27, 31, 33, 
	22, 22, 34, 35, 36, 35, 27, 22, 
	37, 0, 38, 40, 40, 40, 43, 43, 
	44, 45, 45, 45, 1, 1, 0, 47, 
	48, 49, 50, 50, 13, 0, 47, 1, 
	0, 53, 47, 55, 57, 59, 53, 50, 
	53, 60, 61, 62, 61, 55, 53, 1, 
	1, 0, 6, 10, 12, 14, 14, 18, 
	0, 6, 1, 0, 22, 6, 27, 31, 
	33, 22, 14, 22, 34, 35, 36, 35, 
	27, 22, 0, 0, 0, 63, 0, 64, 
	65, 66, 64, 64, 67, 68, 69, 70, 
	70, 72, 73, 64, 64, 64, 70, 74, 
	66, 66, 66, 67, 74, 76, 76, 74, 
	77, 78, 79, 81, 0, 82, 0, 83, 
	85, 86, 88, 90, 0, 1, 91, 0, 
	92, 93, 0
]

class << self
	attr_accessor :bel_start
end
self.bel_start = 1;
class << self
	attr_accessor :bel_first_final
end
self.bel_first_final = 101;
class << self
	attr_accessor :bel_error
end
self.bel_error = 0;

class << self
	attr_accessor :bel_en_function_node
end
self.bel_en_function_node = 32;
class << self
	attr_accessor :bel_en_ident_node
end
self.bel_en_ident_node = 33;
class << self
	attr_accessor :bel_en_string_node
end
self.bel_en_string_node = 34;
class << self
	attr_accessor :bel_en_parameter_node
end
self.bel_en_parameter_node = 38;
class << self
	attr_accessor :bel_en_inner_term
end
self.bel_en_inner_term = 44;
class << self
	attr_accessor :bel_en_term
end
self.bel_en_term = 71;
class << self
	attr_accessor :bel_en_comment_node
end
self.bel_en_comment_node = 98;
class << self
	attr_accessor :bel_en_observed_term
end
self.bel_en_observed_term = 1;


      # end: ragel
end

Instance Method Details

#eachObject



32348
32349
32350
32351
32352
32353
32354
32355
32356
32357
32358
32359
32360
32361
32362
32363
32364
32365
32366
32367
32368
32369
32370
32371
32372
32373
32374
32375
32376
32377
32378
32379
32380
32381
32382
32383
32384
32385
32386
32387
32388
32389
32390
32391
32392
32393
32394
32395
32396
32397
32398
32399
32400
32401
32402
32403
32404
32405
32406
32407
32408
32409
32410
32411
32412
32413
32414
32415
32416
32417
32418
32419
32420
32421
32422
32423
32424
32425
32426
32427
32428
32429
32430
32431
32432
32433
32434
32435
32436
32437
32438
32439
32440
32441
32442
32443
32444
32445
32446
32447
32448
32449
32450
32451
32452
32453
32454
32455
32456
32457
32458
32459
32460
32461
32462
32463
32464
32465
32466
32467
32468
32469
32470
32471
32472
32473
32474
32475
32476
32477
32478
32479
32480
32481
32482
32483
32484
32485
32486
32487
32488
32489
32490
32491
32492
32493
32494
32495
32496
32497
32498
32499
32500
32501
32502
32503
32504
32505
32506
32507
32508
32509
32510
32511
32512
32513
32514
32515
32516
32517
32518
32519
32520
32521
32522
32523
32524
32525
32526
32527
32528
32529
32530
32531
32532
32533
32534
32535
32536
32537
32538
32539
32540
32541
32542
32543
32544
32545
32546
32547
32548
32549
32550
32551
32552
32553
32554
32555
32556
32557
32558
32559
32560
32561
32562
32563
32564
32565
32566
32567
32568
32569
32570
32571
32572
32573
32574
32575
32576
32577
32578
32579
32580
32581
32582
32583
32584
32585
32586
32587
32588
32589
32590
32591
32592
32593
32594
32595
32596
32597
32598
32599
32600
32601
32602
32603
32604
32605
32606
32607
32608
32609
32610
32611
32612
32613
32614
32615
32616
32617
32618
32619
32620
32621
32622
32623
32624
32625
32626
32627
32628
32629
32630
32631
32632
32633
32634
32635
32636
32637
32638
32639
32640
32641
32642
32643
32644
32645
32646
32647
32648
32649
32650
32651
32652
32653
32654
32655
32656
32657
32658
32659
32660
32661
32662
32663
32664
32665
32666
32667
32668
32669
32670
32671
32672
32673
32674
32675
32676
32677
32678
32679
32680
32681
32682
32683
32684
32685
32686
32687
32688
32689
32690
32691
32692
32693
32694
32695
32696
32697
32698
32699
32700
32701
32702
32703
32704
32705
32706
32707
32708
32709
32710
32711
32712
32713
32714
32715
32716
32717
32718
32719
32720
32721
32722
32723
32724
32725
32726
32727
32728
32729
32730
32731
32732
32733
32734
32735
32736
32737
32738
32739
32740
32741
32742
32743
32744
32745
32746
32747
32748
32749
32750
32751
32752
32753
32754
32755
32756
32757
32758
32759
32760
32761
32762
32763
32764
32765
32766
32767
32768
32769
32770
32771
32772
32773
32774
32775
32776
32777
32778
32779
32780
32781
32782
32783
32784
32785
32786
32787
32788
32789
32790
32791
32792
32793
32794
32795
32796
32797
32798
32799
32800
32801
32802
32803
32804
32805
32806
32807
32808
32809
32810
32811
32812
32813
32814
32815
32816
32817
32818
32819
32820
32821
32822
32823
32824
32825
32826
32827
32828
32829
32830
32831
32832
32833
32834
32835
32836
32837
32838
32839
32840
32841
32842
32843
32844
32845
32846
32847
32848
32849
32850
32851
32852
32853
32854
32855
32856
32857
32858
32859
32860
32861
32862
32863
32864
32865
32866
32867
32868
32869
32870
32871
32872
32873
32874
32875
32876
32877
32878
32879
32880
32881
32882
32883
32884
32885
32886
32887
32888
32889
32890
32891
32892
32893
32894
32895
32896
32897
32898
32899
32900
32901
32902
32903
32904
32905
32906
32907
32908
32909
32910
32911
32912
32913
32914
32915
32916
32917
32918
32919
32920
32921
32922
32923
32924
32925
32926
32927
32928
32929
32930
32931
32932
32933
32934
32935
32936
32937
32938
32939
32940
32941
32942
32943
32944
32945
32946
32947
32948
32949
32950
32951
32952
32953
32954
32955
32956
32957
32958
32959
32960
32961
32962
32963
32964
32965
32966
32967
32968
32969
32970
32971
32972
32973
32974
32975
32976
32977
32978
32979
32980
32981
32982
32983
32984
32985
32986
32987
32988
32989
32990
32991
32992
32993
32994
32995
32996
32997
32998
32999
33000
33001
33002
33003
33004
33005
33006
33007
33008
33009
33010
33011
33012
33013
33014
33015
33016
33017
33018
33019
33020
33021
33022
33023
33024
33025
33026
33027
33028
33029
33030
33031
33032
33033
33034
33035
33036
33037
33038
33039
33040
33041
33042
33043
33044
33045
33046
33047
33048
33049
33050
33051
33052
33053
33054
33055
33056
33057
33058
33059
33060
33061
33062
33063
33064
33065
33066
33067
33068
33069
33070
33071
33072
33073
33074
33075
33076
33077
33078
33079
33080
33081
33082
33083
33084
33085
33086
33087
33088
33089
33090
33091
33092
33093
33094
33095
33096
33097
33098
33099
33100
33101
33102
33103
33104
33105
33106
33107
33108
33109
33110
33111
33112
33113
33114
33115
33116
33117
33118
33119
33120
33121
33122
33123
33124
33125
33126
33127
33128
33129
33130
33131
33132
33133
33134
33135
33136
33137
33138
33139
33140
33141
33142
33143
33144
33145
33146
33147
33148
33149
33150
33151
33152
33153
33154
33155
33156
33157
33158
33159
33160
33161
33162
33163
33164
33165
33166
33167
33168
33169
33170
33171
33172
33173
33174
33175
33176
33177
33178
33179
33180
33181
33182
33183
33184
33185
33186
33187
33188
33189
33190
33191
33192
33193
33194
33195
33196
33197
33198
33199
33200
33201
33202
33203
33204
33205
33206
33207
33208
33209
33210
33211
33212
33213
33214
33215
33216
33217
33218
33219
33220
33221
33222
33223
33224
33225
33226
33227
33228
33229
33230
33231
33232
33233
33234
33235
33236
33237
33238
33239
33240
33241
33242
33243
33244
33245
33246
33247
33248
33249
33250
33251
33252
33253
33254
33255
33256
33257
33258
33259
33260
33261
33262
33263
33264
33265
33266
33267
33268
33269
33270
33271
33272
33273
33274
33275
33276
33277
33278
33279
33280
33281
33282
33283
33284
33285
33286
33287
33288
33289
33290
33291
33292
33293
33294
33295
33296
33297
33298
33299
33300
33301
33302
33303
33304
33305
33306
33307
33308
33309
33310
33311
33312
33313
33314
33315
33316
33317
33318
33319
33320
33321
33322
33323
33324
33325
33326
33327
33328
33329
33330
33331
33332
33333
33334
33335
33336
33337
33338
33339
33340
33341
33342
33343
33344
33345
33346
33347
33348
33349
33350
33351
33352
33353
33354
33355
33356
33357
33358
33359
33360
33361
33362
33363
33364
33365
33366
33367
33368
33369
33370
33371
33372
33373
33374
33375
33376
33377
33378
33379
33380
33381
33382
33383
33384
33385
33386
33387
33388
33389
33390
33391
33392
33393
33394
33395
33396
33397
33398
33399
33400
33401
33402
33403
33404
33405
33406
33407
33408
33409
33410
33411
33412
33413
33414
33415
33416
33417
33418
33419
33420
33421
33422
33423
33424
33425
33426
33427
33428
33429
33430
33431
33432
33433
33434
33435
33436
33437
33438
33439
33440
33441
33442
33443
33444
33445
33446
33447
33448
33449
33450
33451
33452
33453
33454
33455
33456
33457
33458
33459
33460
33461
33462
33463
33464
33465
33466
33467
33468
33469
33470
33471
33472
33473
33474
33475
33476
33477
33478
33479
33480
33481
33482
33483
33484
33485
33486
33487
33488
33489
33490
33491
33492
33493
33494
33495
33496
33497
33498
33499
33500
33501
33502
33503
33504
33505
33506
33507
33508
33509
33510
33511
33512
33513
33514
33515
33516
33517
33518
33519
33520
33521
33522
33523
33524
33525
33526
33527
33528
33529
33530
33531
33532
33533
33534
33535
33536
33537
33538
33539
33540
33541
33542
33543
33544
33545
33546
33547
33548
33549
33550
33551
33552
33553
33554
33555
33556
33557
33558
33559
33560
33561
33562
33563
33564
33565
33566
33567
33568
33569
33570
33571
33572
33573
33574
33575
33576
33577
33578
33579
33580
33581
33582
33583
33584
33585
33586
33587
33588
33589
33590
33591
33592
33593
33594
33595
33596
33597
33598
33599
33600
33601
33602
33603
33604
33605
33606
33607
33608
33609
33610
33611
33612
33613
33614
33615
33616
33617
33618
33619
33620
33621
33622
33623
33624
33625
33626
33627
33628
33629
33630
33631
33632
33633
33634
33635
33636
33637
33638
33639
33640
33641
33642
33643
33644
33645
33646
33647
33648
33649
33650
33651
33652
33653
33654
33655
33656
33657
33658
33659
33660
33661
33662
33663
33664
33665
33666
33667
33668
33669
33670
33671
33672
33673
33674
33675
33676
33677
33678
33679
33680
33681
33682
33683
33684
33685
33686
33687
33688
33689
33690
33691
33692
33693
33694
33695
33696
33697
33698
33699
33700
33701
33702
33703
33704
33705
33706
33707
33708
33709
33710
33711
33712
33713
33714
33715
33716
33717
33718
33719
33720
33721
33722
33723
33724
33725
33726
33727
33728
33729
33730
33731
33732
33733
33734
33735
33736
33737
33738
33739
33740
33741
33742
33743
33744
33745
33746
33747
33748
33749
33750
33751
33752
33753
33754
33755
33756
33757
33758
33759
33760
33761
33762
33763
33764
33765
33766
33767
33768
33769
33770
33771
33772
33773
33774
33775
33776
33777
33778
33779
33780
33781
33782
33783
33784
33785
33786
33787
33788
33789
33790
33791
33792
33793
33794
33795
33796
33797
33798
33799
33800
33801
33802
33803
33804
33805
33806
33807
33808
33809
33810
33811
33812
33813
33814
33815
33816
33817
33818
33819
33820
33821
33822
33823
33824
33825
33826
33827
33828
33829
33830
33831
33832
33833
33834
33835
33836
33837
33838
33839
33840
33841
33842
33843
33844
33845
33846
33847
33848
33849
33850
33851
33852
33853
33854
33855
33856
33857
33858
33859
33860
33861
33862
33863
33864
33865
33866
33867
33868
33869
33870
33871
33872
33873
33874
33875
33876
33877
33878
33879
33880
33881
33882
33883
33884
33885
33886
33887
33888
33889
33890
33891
33892
33893
33894
33895
33896
33897
33898
33899
33900
33901
33902
33903
33904
33905
33906
33907
33908
33909
33910
33911
33912
33913
33914
33915
33916
33917
33918
33919
33920
33921
33922
33923
33924
33925
33926
33927
33928
33929
33930
33931
33932
33933
33934
33935
33936
33937
33938
33939
33940
33941
33942
33943
33944
33945
33946
33947
33948
33949
33950
33951
33952
33953
33954
33955
33956
33957
33958
33959
33960
33961
33962
33963
33964
33965
33966
33967
33968
33969
33970
33971
33972
33973
33974
33975
33976
33977
33978
33979
33980
33981
33982
33983
33984
33985
33986
33987
33988
33989
33990
33991
33992
33993
33994
33995
33996
33997
33998
33999
34000
34001
34002
34003
34004
34005
34006
34007
34008
34009
34010
34011
34012
34013
34014
34015
34016
34017
34018
34019
34020
34021
34022
34023
34024
34025
34026
34027
34028
34029
34030
34031
34032
34033
34034
34035
34036
34037
34038
34039
34040
34041
34042
34043
34044
34045
34046
34047
34048
34049
34050
34051
34052
34053
34054
34055
34056
34057
34058
34059
34060
34061
34062
34063
34064
34065
34066
34067
34068
34069
34070
34071
34072
34073
34074
34075
34076
34077
34078
34079
34080
34081
34082
34083
34084
34085
34086
34087
34088
34089
34090
34091
34092
34093
34094
34095
34096
34097
34098
34099
34100
34101
34102
34103
34104
34105
34106
34107
34108
34109
34110
34111
34112
34113
34114
34115
34116
34117
34118
34119
34120
34121
34122
34123
34124
34125
34126
34127
34128
34129
34130
34131
34132
34133
34134
34135
34136
34137
34138
34139
34140
34141
34142
34143
34144
34145
34146
34147
34148
34149
34150
34151
34152
34153
34154
34155
34156
34157
34158
34159
34160
34161
34162
34163
34164
34165
34166
34167
34168
34169
34170
34171
34172
34173
34174
34175
34176
34177
34178
34179
34180
34181
34182
34183
34184
34185
34186
34187
34188
34189
34190
34191
34192
34193
34194
34195
34196
34197
34198
34199
34200
34201
34202
34203
34204
34205
34206
34207
34208
34209
34210
34211
34212
34213
34214
34215
34216
34217
34218
34219
34220
34221
34222
34223
34224
34225
34226
34227
34228
34229
34230
34231
34232
34233
34234
34235
34236
34237
34238
34239
34240
34241
34242
34243
34244
34245
34246
34247
34248
34249
34250
34251
34252
34253
34254
34255
34256
34257
34258
34259
34260
34261
34262
34263
34264
34265
34266
34267
34268
34269
34270
34271
34272
34273
34274
34275
34276
34277
34278
34279
34280
34281
34282
34283
34284
34285
34286
34287
34288
34289
34290
34291
34292
34293
34294
34295
34296
34297
34298
34299
34300
34301
34302
34303
34304
34305
34306
34307
34308
34309
34310
34311
34312
34313
34314
34315
34316
34317
34318
34319
34320
34321
34322
34323
34324
34325
34326
34327
34328
34329
34330
34331
34332
34333
34334
34335
34336
34337
34338
34339
34340
34341
34342
34343
34344
34345
34346
34347
34348
34349
34350
34351
34352
34353
34354
34355
34356
34357
34358
34359
34360
34361
34362
34363
34364
34365
34366
34367
34368
34369
34370
34371
34372
34373
34374
34375
34376
34377
34378
34379
34380
34381
34382
34383
34384
34385
34386
34387
34388
34389
34390
34391
34392
34393
34394
34395
34396
34397
34398
34399
34400
34401
34402
34403
34404
34405
34406
34407
34408
34409
34410
34411
34412
34413
34414
34415
34416
34417
34418
34419
34420
34421
34422
34423
34424
34425
34426
34427
34428
34429
34430
34431
34432
34433
34434
34435
34436
34437
34438
34439
34440
34441
34442
34443
34444
34445
34446
34447
34448
34449
34450
34451
34452
34453
34454
34455
34456
34457
34458
34459
34460
34461
34462
34463
34464
34465
34466
34467
34468
34469
34470
34471
34472
34473
34474
34475
34476
34477
34478
34479
34480
34481
34482
34483
34484
34485
34486
34487
34488
34489
34490
34491
34492
34493
34494
34495
34496
34497
34498
34499
34500
34501
34502
34503
34504
34505
34506
34507
34508
34509
34510
34511
34512
34513
34514
34515
34516
34517
34518
34519
34520
34521
34522
34523
34524
34525
34526
34527
34528
34529
34530
34531
34532
34533
34534
34535
34536
34537
34538
34539
34540
34541
34542
34543
34544
34545
34546
34547
34548
34549
34550
34551
34552
34553
34554
34555
34556
34557
34558
34559
34560
34561
34562
34563
34564
34565
34566
34567
34568
34569
34570
34571
34572
34573
34574
34575
34576
34577
34578
34579
34580
34581
34582
34583
34584
34585
34586
34587
34588
34589
34590
34591
34592
34593
34594
34595
34596
34597
34598
34599
34600
34601
34602
34603
34604
34605
34606
34607
34608
34609
34610
34611
34612
34613
34614
34615
34616
34617
34618
34619
34620
34621
34622
34623
34624
34625
34626
34627
34628
34629
34630
34631
34632
34633
34634
34635
34636
34637
34638
34639
34640
34641
34642
34643
34644
34645
34646
34647
34648
34649
34650
34651
34652
34653
34654
34655
34656
34657
34658
34659
34660
34661
34662
34663
34664
34665
34666
34667
34668
34669
34670
34671
34672
34673
34674
34675
34676
34677
34678
34679
34680
34681
34682
34683
34684
34685
34686
34687
34688
34689
34690
34691
34692
34693
34694
34695
34696
34697
34698
34699
34700
34701
34702
34703
34704
34705
34706
34707
34708
34709
34710
34711
34712
34713
34714
34715
34716
34717
34718
34719
34720
34721
34722
34723
34724
34725
34726
34727
34728
34729
34730
34731
34732
34733
34734
34735
34736
34737
34738
34739
34740
34741
34742
34743
34744
34745
34746
34747
34748
34749
34750
34751
34752
34753
34754
34755
34756
34757
34758
34759
34760
34761
34762
34763
34764
34765
34766
34767
34768
34769
34770
34771
34772
34773
34774
34775
34776
34777
34778
34779
34780
34781
34782
34783
34784
34785
34786
34787
34788
34789
34790
34791
34792
34793
34794
34795
34796
34797
34798
34799
34800
34801
34802
34803
34804
34805
34806
34807
34808
34809
34810
34811
34812
34813
34814
34815
34816
34817
34818
34819
34820
34821
34822
34823
34824
34825
34826
34827
34828
34829
34830
34831
34832
34833
34834
34835
34836
34837
34838
34839
34840
34841
34842
34843
34844
34845
34846
34847
34848
34849
34850
34851
34852
34853
34854
34855
34856
34857
34858
34859
34860
34861
34862
34863
34864
34865
34866
34867
34868
34869
34870
34871
34872
34873
34874
34875
34876
34877
34878
34879
34880
34881
34882
34883
34884
34885
34886
34887
34888
34889
34890
34891
34892
34893
34894
34895
34896
34897
34898
34899
34900
34901
34902
34903
34904
34905
34906
34907
34908
34909
34910
34911
34912
34913
34914
34915
34916
34917
34918
34919
34920
34921
34922
34923
34924
34925
34926
34927
34928
34929
34930
34931
34932
34933
34934
34935
34936
34937
34938
34939
34940
34941
34942
34943
34944
34945
34946
34947
34948
34949
34950
34951
34952
34953
34954
34955
34956
34957
34958
34959
34960
34961
34962
34963
34964
34965
34966
34967
34968
34969
34970
34971
34972
34973
34974
34975
34976
34977
34978
34979
34980
34981
34982
34983
34984
34985
34986
34987
34988
34989
34990
34991
34992
34993
34994
34995
34996
34997
34998
34999
35000
35001
35002
35003
35004
35005
35006
35007
35008
35009
35010
35011
35012
35013
35014
35015
35016
35017
35018
35019
35020
35021
35022
35023
35024
35025
35026
35027
35028
35029
35030
35031
35032
35033
35034
35035
35036
35037
35038
35039
35040
35041
35042
35043
35044
35045
35046
35047
35048
35049
35050
35051
35052
35053
35054
35055
35056
35057
35058
35059
35060
35061
35062
35063
35064
35065
35066
35067
35068
35069
35070
35071
35072
35073
35074
35075
35076
35077
35078
35079
35080
35081
35082
35083
35084
35085
35086
35087
35088
35089
35090
35091
35092
35093
35094
35095
35096
35097
35098
35099
35100
35101
35102
35103
35104
35105
35106
35107
35108
35109
35110
35111
35112
35113
35114
35115
35116
35117
35118
35119
35120
35121
35122
35123
35124
35125
35126
35127
35128
35129
35130
35131
35132
35133
35134
35135
35136
35137
35138
35139
35140
35141
35142
35143
35144
35145
35146
35147
35148
35149
35150
35151
35152
35153
35154
35155
35156
35157
35158
35159
35160
35161
35162
35163
35164
35165
35166
35167
35168
35169
35170
35171
35172
35173
35174
35175
35176
35177
35178
35179
35180
35181
35182
35183
35184
35185
35186
35187
35188
35189
35190
35191
35192
35193
35194
35195
35196
35197
35198
35199
35200
35201
35202
35203
35204
35205
35206
35207
35208
35209
35210
35211
35212
35213
35214
35215
35216
35217
35218
35219
35220
35221
35222
35223
35224
35225
35226
35227
35228
35229
35230
35231
35232
35233
35234
35235
35236
35237
35238
35239
35240
35241
35242
35243
35244
35245
35246
35247
35248
35249
35250
35251
35252
35253
35254
35255
35256
35257
35258
35259
35260
35261
35262
35263
35264
35265
35266
35267
35268
35269
35270
35271
35272
35273
35274
35275
35276
35277
35278
35279
35280
35281
35282
35283
35284
35285
35286
35287
35288
35289
35290
35291
35292
35293
35294
35295
35296
35297
35298
35299
35300
35301
35302
35303
35304
35305
35306
35307
35308
35309
35310
35311
35312
35313
35314
35315
35316
35317
35318
35319
35320
35321
35322
35323
35324
35325
35326
35327
35328
35329
35330
35331
35332
35333
35334
35335
35336
35337
35338
35339
35340
35341
35342
35343
35344
35345
35346
35347
35348
35349
35350
35351
35352
35353
35354
35355
35356
35357
35358
35359
35360
35361
35362
35363
35364
35365
35366
35367
35368
35369
35370
35371
35372
35373
35374
35375
35376
35377
35378
35379
35380
35381
35382
35383
35384
35385
35386
35387
35388
35389
35390
35391
35392
35393
35394
35395
35396
35397
35398
35399
35400
35401
35402
35403
35404
35405
35406
35407
35408
35409
35410
35411
35412
35413
35414
35415
35416
35417
35418
35419
35420
35421
35422
35423
35424
35425
35426
35427
35428
35429
35430
35431
35432
35433
35434
35435
35436
35437
35438
35439
35440
35441
35442
35443
35444
35445
35446
35447
35448
35449
35450
35451
35452
35453
35454
35455
35456
35457
35458
35459
35460
35461
35462
35463
35464
35465
35466
35467
35468
35469
35470
35471
35472
35473
35474
35475
35476
35477
35478
35479
35480
35481
35482
35483
35484
35485
35486
35487
35488
35489
35490
35491
35492
35493
35494
35495
35496
35497
35498
35499
35500
35501
35502
35503
35504
35505
35506
35507
35508
35509
35510
35511
35512
35513
35514
35515
35516
35517
35518
35519
35520
35521
35522
35523
35524
35525
35526
35527
35528
35529
35530
35531
35532
35533
35534
35535
35536
35537
35538
35539
35540
35541
35542
35543
35544
35545
35546
35547
35548
35549
35550
35551
35552
35553
35554
35555
35556
35557
35558
35559
35560
35561
35562
35563
35564
35565
35566
35567
35568
35569
35570
35571
35572
35573
35574
35575
35576
35577
35578
35579
35580
35581
35582
35583
35584
35585
35586
35587
35588
35589
35590
35591
35592
35593
35594
35595
35596
35597
35598
35599
35600
35601
35602
35603
35604
35605
35606
35607
35608
35609
35610
35611
35612
35613
35614
35615
35616
35617
35618
35619
35620
35621
35622
35623
35624
35625
35626
35627
35628
35629
35630
35631
35632
35633
35634
35635
35636
35637
35638
35639
35640
35641
35642
35643
35644
35645
35646
35647
35648
35649
35650
35651
35652
35653
35654
35655
35656
35657
35658
35659
35660
35661
35662
35663
35664
35665
35666
35667
35668
35669
35670
35671
35672
35673
35674
35675
35676
35677
35678
35679
35680
35681
35682
35683
35684
35685
35686
35687
35688
35689
35690
35691
35692
35693
35694
35695
35696
35697
35698
35699
35700
35701
35702
35703
35704
35705
35706
35707
35708
35709
35710
35711
35712
35713
35714
35715
35716
35717
35718
35719
35720
35721
35722
35723
35724
35725
35726
35727
35728
35729
35730
35731
35732
35733
35734
35735
35736
35737
35738
35739
35740
35741
35742
35743
35744
35745
35746
35747
35748
35749
35750
35751
35752
35753
35754
35755
35756
35757
35758
35759
35760
35761
35762
35763
35764
35765
35766
35767
35768
35769
35770
35771
35772
35773
35774
# File 'lib/bel_parser/parsers/expression/observed_term.rb', line 32348

def each
  @buffers    = {}
  @incomplete = {}
  stack       = []
  data        = @content.unpack('C*')
  p           = 0
  pe          = data.length
  eof         = data.length

      # begin: ragel
  
begin
	p ||= 0
	pe ||= data.length
	cs = bel_start
	top = 0
end

  
begin
	testEof = false
	_slen, _trans, _keys, _inds, _acts, _nacts = nil
	_goto_level = 0
	_resume = 10
	_eof_trans = 15
	_again = 20
	_test_eof = 30
	_out = 40
	while true
	if _goto_level <= 0
	if p == pe
		_goto_level = _test_eof
		next
	end
	if cs == 0
		_goto_level = _out
		next
	end
	end
	if _goto_level <= _resume
	_keys = cs << 1
	_inds = _bel_index_offsets[cs]
	_slen = _bel_key_spans[cs]
	_wide = data[p].ord
	_trans = if (   _slen > 0 && 
			_bel_trans_keys[_keys] <= _wide && 
			_wide <= _bel_trans_keys[_keys + 1] 
		    ) then
			_bel_indicies[ _inds + _wide - _bel_trans_keys[_keys] ] 
		 else 
			_bel_indicies[ _inds + _slen ]
		 end
	cs = _bel_trans_targs[_trans]
	if _bel_trans_actions[_trans] != 0
	case _bel_trans_actions[_trans]
	when 8 then
		begin

    trace('FUNCTION start_function')
    @function_started = true
    p_start = p;
  		end
	when 3 then
		begin

    trace('FUNCTION end_function')
    p_end = p
    chars = data[p_start...p_end]
    completed = !chars.empty?
    ident_node = identifier(utf8_string(chars), complete: completed, character_range: [p_start, p_end])
    fx_node = function(ident_node, complete: ident_node.complete, character_range: ident_node.character_range)
    @buffers[:function] = fx_node
  		end
	when 37 then
		begin

    trace('FUNCTION function_node_err')
    if @function_started
      # hit invalid char, include it in the identifier that results
      p_end = p + 1
      chars = data[p_start...p_end]
      completed = !chars.empty?
      ident_node = identifier(utf8_string(chars), complete: completed, character_range: [p_start, p_end])
      fx_node = function(ident_node, complete: false, character_range: ident_node.character_range)
      @buffers[:function] = fx_node
      yield @buffers[:function]
    end
  		end
	when 11 then
		begin

    trace('IDENTIFIER start_identifier')
    @identifier_started = true
    id_start = p;
  		end
	when 25 then
		begin

    trace('IDENTIFIER end_identifier')
    id_end = p
    chars = data[id_start...id_end]
    completed = !chars.empty?
    ast_node = identifier(utf8_string(chars), complete: completed, character_range: [id_start, id_end])
    @buffers[:ident] = ast_node
  		end
	when 23 then
		begin

    trace('IDENTIFIER an_ident_err')
    id_end = p
    chars = data[id_start...id_end]
    ast_node = identifier(utf8_string(chars), complete: false, character_range: [id_start, id_end])
    @buffers[:ident] = ast_node
  		end
	when 80 then
		begin

    trace('IDENTIFIER ident_node_err')
    id_end = p
    chars = data[id_start...id_end]
    ast_node = identifier(utf8_string(chars), complete: false, character_range: [id_start, id_end])
    yield ast_node
  		end
	when 15 then
		begin

    trace('STRING start_string')
    @string_opened = true
    p_start = p
  		end
	when 13 then
		begin

    trace('STRING a_string_err')
    p_end = p
    chars = data[p_start...p_end]
    ast_node = string(utf8_string(chars), complete: false, character_range: [p_start, p_end])
    @buffers[:string] = ast_node
  		end
	when 39 then
		begin

    trace('STRING string_node_err')
    p_end = p
    chars = data[p_start...p_end]
    ast_node = string(utf8_string(chars), complete: false, character_range: [p_start, p_end])
    yield ast_node
  		end
	when 29 then
		begin

    trace('PARAMETER add_prefix')
    ident = @buffers.delete(:ident)
    prefix_node = prefix(ident, complete: ident.complete, character_range: ident.character_range)
    @buffers[:param_prefix] = prefix_node
  		end
	when 5 then
		begin

    trace('TERM term_fx')
    new_term = @buffers[:term_stack][-1] << @buffers[:function]
    @buffers[:term_stack][-1] = new_term
  		end
	when 52 then
		begin

    trace('TERM fxret')
    inner_term = @buffers[:term_stack].pop
    arg_node = argument(inner_term)
    new_term = @buffers[:term_stack][-1] << arg_node
    @buffers[:term_stack][-1] = new_term
    	begin
		top -= 1
		cs = stack[top]
		_goto_level = _again
		next
	end

  		end
	when 21 then
		begin

    trace('COMMENT start_comment')
    p_start = p;
  		end
	when 63 then
		begin

    @buffers[:comment] ||= comment(nil)
    comment = @buffers[:comment]
    term = @buffers[:term_stack][-1]
    subject_term = subject(term)
    rel = relationship(nil)
    obj = object(nil)
    stmt = observed_term(statement(subject_term, rel, obj, comment))
    stmt.complete = true
    yield stmt
  		end
	when 4 then
		begin

    trace('FUNCTION end_function')
    p_end = p
    chars = data[p_start...p_end]
    completed = !chars.empty?
    ident_node = identifier(utf8_string(chars), complete: completed, character_range: [p_start, p_end])
    fx_node = function(ident_node, complete: ident_node.complete, character_range: ident_node.character_range)
    @buffers[:function] = fx_node
  		end
		begin

    trace('TERM term_fx')
    new_term = @buffers[:term_stack][-1] << @buffers[:function]
    @buffers[:term_stack][-1] = new_term
  		end
	when 20 then
		begin

    trace('FUNCTION end_function')
    p_end = p
    chars = data[p_start...p_end]
    completed = !chars.empty?
    ident_node = identifier(utf8_string(chars), complete: completed, character_range: [p_start, p_end])
    fx_node = function(ident_node, complete: ident_node.complete, character_range: ident_node.character_range)
    @buffers[:function] = fx_node
  		end
		begin

    trace('TERM fxbt')
    function_string = @buffers[:function].identifier.string_literal
    p -= function_string.length + 1
    	begin
		stack[top] = cs
		top+= 1
		cs = 44
		_goto_level = _again
		next
	end

  		end
	when 9 then
		begin

    trace('IDENTIFIER start_identifier')
    @identifier_started = true
    id_start = p;
  		end
		begin

    trace('FUNCTION start_function')
    @function_started = true
    p_start = p;
  		end
	when 7 then
		begin

    trace('IDENTIFIER an_ident_err')
    id_end = p
    chars = data[id_start...id_end]
    ast_node = identifier(utf8_string(chars), complete: false, character_range: [id_start, id_end])
    @buffers[:ident] = ast_node
  		end
		begin

    trace('STRING a_string_err')
    p_end = p
    chars = data[p_start...p_end]
    ast_node = string(utf8_string(chars), complete: false, character_range: [p_start, p_end])
    @buffers[:string] = ast_node
  		end
	when 17 then
		begin

    trace('STRING stop_string')
    @string_closed = true
    p_end = p
  		end
		begin

    trace('STRING string_end')
    completed = @string_opened && @string_closed
    chars = data[p_start...p_end]
    ast_node = string(utf8_string(chars), complete: true, character_range: [p_start, p_end])
    @buffers[:string] = ast_node
  		end
	when 89 then
		begin

    trace('PARAMETER parameter_end')
    param_node = parameter()
    completed = true
    prefix_node = @buffers.delete(:param_prefix)
    if prefix_node
      param_node <<= prefix_node
      unless prefix_node.complete
        trace('PN incomplete')
        completed = false
      end
      param_start = prefix_node.range_start
    else
      prefix_node          = prefix(nil)
      prefix_node.complete = true

      trace('PN complete (no prefix)')
      param_node <<= prefix_node
      completed    = true
    end

    value_node = @buffers.delete(:param_value)
    unless value_node.nil?
      param_node <<= value_node
      unless value_node.complete
        trace('VN incomplete')
        completed = false
      end
      param_start ||= value_node.range_start
      param_node.character_range = [param_start, value_node.range_end]
    else
      completed = false
    end

    param_node.complete = completed
    @buffers[:parameter] = param_node
  		end
		begin

    trace('PARAMETER yield_parameter')
    yield @buffers[:parameter]
  		end
	when 32 then
		begin

    trace('PARAMETER parameter_end')
    param_node = parameter()
    completed = true
    prefix_node = @buffers.delete(:param_prefix)
    if prefix_node
      param_node <<= prefix_node
      unless prefix_node.complete
        trace('PN incomplete')
        completed = false
      end
      param_start = prefix_node.range_start
    else
      prefix_node          = prefix(nil)
      prefix_node.complete = true

      trace('PN complete (no prefix)')
      param_node <<= prefix_node
      completed    = true
    end

    value_node = @buffers.delete(:param_value)
    unless value_node.nil?
      param_node <<= value_node
      unless value_node.complete
        trace('VN incomplete')
        completed = false
      end
      param_start ||= value_node.range_start
      param_node.character_range = [param_start, value_node.range_end]
    else
      completed = false
    end

    param_node.complete = completed
    @buffers[:parameter] = param_node
  		end
		begin

    trace('TERM term_argument')
    arg_node = argument(@buffers[:parameter])
    new_term = @buffers[:term_stack][-1] << arg_node
    @buffers[:term_stack][-1] = new_term
    @buffers[:parameter] = nil
  		end
	when 30 then
		begin

    trace('PARAMETER add_prefix')
    ident = @buffers.delete(:ident)
    prefix_node = prefix(ident, complete: ident.complete, character_range: ident.character_range)
    @buffers[:param_prefix] = prefix_node
  		end
		begin

    trace('IDENTIFIER start_identifier')
    @identifier_started = true
    id_start = p;
  		end
	when 2 then
		begin

    trace('TERM term_init')
    @buffers[:term_stack] = [ term() ]
  		end
		begin

    trace('FUNCTION start_function')
    @function_started = true
    p_start = p;
  		end
	when 46 then
		begin

    trace('TERM inner_term_init')
    @buffers[:term_stack] << term()
  		end
		begin

    trace('FUNCTION start_function')
    @function_started = true
    p_start = p;
  		end
	when 91 then
		begin

    trace('TERM outer_term_end')
    term_stack = @buffers[:term_stack]
    term_stack.each { |term| term.complete = true }
  		end
		begin

    yield @buffers[:term_stack][-1]
  		end
	when 26 then
		begin

    trace('FUNCTION end_function')
    p_end = p
    chars = data[p_start...p_end]
    completed = !chars.empty?
    ident_node = identifier(utf8_string(chars), complete: completed, character_range: [p_start, p_end])
    fx_node = function(ident_node, complete: ident_node.complete, character_range: ident_node.character_range)
    @buffers[:function] = fx_node
  		end
		begin

    trace('TERM fxbt')
    function_string = @buffers[:function].identifier.string_literal
    p -= function_string.length + 1
    	begin
		stack[top] = cs
		top+= 1
		cs = 44
		_goto_level = _again
		next
	end

  		end
		begin

    trace('COMMENT start_comment')
    p_start = p;
  		end
	when 16 then
		begin

    trace('STRING start_string')
    @string_opened = true
    p_start = p
  		end
		begin

    trace('STRING stop_string')
    @string_closed = true
    p_end = p
  		end
		begin

    trace('STRING string_end')
    completed = @string_opened && @string_closed
    chars = data[p_start...p_end]
    ast_node = string(utf8_string(chars), complete: true, character_range: [p_start, p_end])
    @buffers[:string] = ast_node
  		end
	when 42 then
		begin

    trace('STRING stop_string')
    @string_closed = true
    p_end = p
  		end
		begin

    trace('STRING string_end')
    completed = @string_opened && @string_closed
    chars = data[p_start...p_end]
    ast_node = string(utf8_string(chars), complete: true, character_range: [p_start, p_end])
    @buffers[:string] = ast_node
  		end
		begin

    trace('STRING yield_string')
    yield @buffers[:string]
  		end
	when 82 then
		begin

    trace('PARAMETER add_string_param_value')
    string_node = @buffers.delete(:string)
    value_node = value(string_node, complete: string_node.complete, character_range: string_node.character_range)
    @buffers[:param_value] = value_node
  		end
		begin

    trace('PARAMETER parameter_end')
    param_node = parameter()
    completed = true
    prefix_node = @buffers.delete(:param_prefix)
    if prefix_node
      param_node <<= prefix_node
      unless prefix_node.complete
        trace('PN incomplete')
        completed = false
      end
      param_start = prefix_node.range_start
    else
      prefix_node          = prefix(nil)
      prefix_node.complete = true

      trace('PN complete (no prefix)')
      param_node <<= prefix_node
      completed    = true
    end

    value_node = @buffers.delete(:param_value)
    unless value_node.nil?
      param_node <<= value_node
      unless value_node.complete
        trace('VN incomplete')
        completed = false
      end
      param_start ||= value_node.range_start
      param_node.character_range = [param_start, value_node.range_end]
    else
      completed = false
    end

    param_node.complete = completed
    @buffers[:parameter] = param_node
  		end
		begin

    trace('PARAMETER yield_parameter')
    yield @buffers[:parameter]
  		end
	when 19 then
		begin

    trace('PARAMETER add_string_param_value')
    string_node = @buffers.delete(:string)
    value_node = value(string_node, complete: string_node.complete, character_range: string_node.character_range)
    @buffers[:param_value] = value_node
  		end
		begin

    trace('PARAMETER parameter_end')
    param_node = parameter()
    completed = true
    prefix_node = @buffers.delete(:param_prefix)
    if prefix_node
      param_node <<= prefix_node
      unless prefix_node.complete
        trace('PN incomplete')
        completed = false
      end
      param_start = prefix_node.range_start
    else
      prefix_node          = prefix(nil)
      prefix_node.complete = true

      trace('PN complete (no prefix)')
      param_node <<= prefix_node
      completed    = true
    end

    value_node = @buffers.delete(:param_value)
    unless value_node.nil?
      param_node <<= value_node
      unless value_node.complete
        trace('VN incomplete')
        completed = false
      end
      param_start ||= value_node.range_start
      param_node.character_range = [param_start, value_node.range_end]
    else
      completed = false
    end

    param_node.complete = completed
    @buffers[:parameter] = param_node
  		end
		begin

    trace('TERM term_argument')
    arg_node = argument(@buffers[:parameter])
    new_term = @buffers[:term_stack][-1] << arg_node
    @buffers[:term_stack][-1] = new_term
    @buffers[:parameter] = nil
  		end
	when 58 then
		begin

    trace('PARAMETER parameter_end')
    param_node = parameter()
    completed = true
    prefix_node = @buffers.delete(:param_prefix)
    if prefix_node
      param_node <<= prefix_node
      unless prefix_node.complete
        trace('PN incomplete')
        completed = false
      end
      param_start = prefix_node.range_start
    else
      prefix_node          = prefix(nil)
      prefix_node.complete = true

      trace('PN complete (no prefix)')
      param_node <<= prefix_node
      completed    = true
    end

    value_node = @buffers.delete(:param_value)
    unless value_node.nil?
      param_node <<= value_node
      unless value_node.complete
        trace('VN incomplete')
        completed = false
      end
      param_start ||= value_node.range_start
      param_node.character_range = [param_start, value_node.range_end]
    else
      completed = false
    end

    param_node.complete = completed
    @buffers[:parameter] = param_node
  		end
		begin

    trace('TERM term_argument')
    arg_node = argument(@buffers[:parameter])
    new_term = @buffers[:term_stack][-1] << arg_node
    @buffers[:term_stack][-1] = new_term
    @buffers[:parameter] = nil
  		end
		begin

    trace('TERM fxret')
    inner_term = @buffers[:term_stack].pop
    arg_node = argument(inner_term)
    new_term = @buffers[:term_stack][-1] << arg_node
    @buffers[:term_stack][-1] = new_term
    	begin
		top -= 1
		cs = stack[top]
		_goto_level = _again
		next
	end

  		end
	when 87 then
		begin

    trace('PARAMETER add_prefix')
    ident = @buffers.delete(:ident)
    prefix_node = prefix(ident, complete: ident.complete, character_range: ident.character_range)
    @buffers[:param_prefix] = prefix_node
  		end
		begin

    trace('PARAMETER parameter_end')
    param_node = parameter()
    completed = true
    prefix_node = @buffers.delete(:param_prefix)
    if prefix_node
      param_node <<= prefix_node
      unless prefix_node.complete
        trace('PN incomplete')
        completed = false
      end
      param_start = prefix_node.range_start
    else
      prefix_node          = prefix(nil)
      prefix_node.complete = true

      trace('PN complete (no prefix)')
      param_node <<= prefix_node
      completed    = true
    end

    value_node = @buffers.delete(:param_value)
    unless value_node.nil?
      param_node <<= value_node
      unless value_node.complete
        trace('VN incomplete')
        completed = false
      end
      param_start ||= value_node.range_start
      param_node.character_range = [param_start, value_node.range_end]
    else
      completed = false
    end

    param_node.complete = completed
    @buffers[:parameter] = param_node
  		end
		begin

    trace('PARAMETER yield_parameter')
    yield @buffers[:parameter]
  		end
	when 28 then
		begin

    trace('PARAMETER add_prefix')
    ident = @buffers.delete(:ident)
    prefix_node = prefix(ident, complete: ident.complete, character_range: ident.character_range)
    @buffers[:param_prefix] = prefix_node
  		end
		begin

    trace('PARAMETER parameter_end')
    param_node = parameter()
    completed = true
    prefix_node = @buffers.delete(:param_prefix)
    if prefix_node
      param_node <<= prefix_node
      unless prefix_node.complete
        trace('PN incomplete')
        completed = false
      end
      param_start = prefix_node.range_start
    else
      prefix_node          = prefix(nil)
      prefix_node.complete = true

      trace('PN complete (no prefix)')
      param_node <<= prefix_node
      completed    = true
    end

    value_node = @buffers.delete(:param_value)
    unless value_node.nil?
      param_node <<= value_node
      unless value_node.complete
        trace('VN incomplete')
        completed = false
      end
      param_start ||= value_node.range_start
      param_node.character_range = [param_start, value_node.range_end]
    else
      completed = false
    end

    param_node.complete = completed
    @buffers[:parameter] = param_node
  		end
		begin

    trace('TERM term_argument')
    arg_node = argument(@buffers[:parameter])
    new_term = @buffers[:term_stack][-1] << arg_node
    @buffers[:term_stack][-1] = new_term
    @buffers[:parameter] = nil
  		end
	when 93 then
		begin

    trace('COMMENT stop_comment')
    p_end = p;
  		end
		begin

    trace('COMMENT comment_end')
    p_end = p
    chars = data[p_start...p_end]
    completed = !chars.empty?
    ast_node = comment(utf8_string(chars), complete: completed)
    @buffers[:comment] = ast_node
  		end
		begin

    trace('COMMENT yield_comment')
    yield @buffers[:comment] || comment(nil)
  		end
	when 64 then
		begin

    trace('COMMENT stop_comment')
    p_end = p;
  		end
		begin

    trace('COMMENT comment_end')
    p_end = p
    chars = data[p_start...p_end]
    completed = !chars.empty?
    ast_node = comment(utf8_string(chars), complete: completed)
    @buffers[:comment] = ast_node
  		end
		begin

    @buffers[:comment] ||= comment(nil)
    comment = @buffers[:comment]
    term = @buffers[:term_stack][-1]
    subject_term = subject(term)
    rel = relationship(nil)
    obj = object(nil)
    stmt = observed_term(statement(subject_term, rel, obj, comment))
    stmt.complete = true
    yield stmt
  		end
	when 84 then
		begin

    trace('IDENTIFIER end_identifier')
    id_end = p
    chars = data[id_start...id_end]
    completed = !chars.empty?
    ast_node = identifier(utf8_string(chars), complete: completed, character_range: [id_start, id_end])
    @buffers[:ident] = ast_node
  		end
		begin

    trace('PARAMETER add_ident_param_value')
    ident = @buffers.delete(:ident)
    value_node = value(ident, complete: ident.complete, character_range: ident.character_range)
    @buffers[:param_value] = value_node
  		end
		begin

    trace('PARAMETER parameter_end')
    param_node = parameter()
    completed = true
    prefix_node = @buffers.delete(:param_prefix)
    if prefix_node
      param_node <<= prefix_node
      unless prefix_node.complete
        trace('PN incomplete')
        completed = false
      end
      param_start = prefix_node.range_start
    else
      prefix_node          = prefix(nil)
      prefix_node.complete = true

      trace('PN complete (no prefix)')
      param_node <<= prefix_node
      completed    = true
    end

    value_node = @buffers.delete(:param_value)
    unless value_node.nil?
      param_node <<= value_node
      unless value_node.complete
        trace('VN incomplete')
        completed = false
      end
      param_start ||= value_node.range_start
      param_node.character_range = [param_start, value_node.range_end]
    else
      completed = false
    end

    param_node.complete = completed
    @buffers[:parameter] = param_node
  		end
		begin

    trace('PARAMETER yield_parameter')
    yield @buffers[:parameter]
  		end
	when 24 then
		begin

    trace('IDENTIFIER end_identifier')
    id_end = p
    chars = data[id_start...id_end]
    completed = !chars.empty?
    ast_node = identifier(utf8_string(chars), complete: completed, character_range: [id_start, id_end])
    @buffers[:ident] = ast_node
  		end
		begin

    trace('PARAMETER add_ident_param_value')
    ident = @buffers.delete(:ident)
    value_node = value(ident, complete: ident.complete, character_range: ident.character_range)
    @buffers[:param_value] = value_node
  		end
		begin

    trace('PARAMETER parameter_end')
    param_node = parameter()
    completed = true
    prefix_node = @buffers.delete(:param_prefix)
    if prefix_node
      param_node <<= prefix_node
      unless prefix_node.complete
        trace('PN incomplete')
        completed = false
      end
      param_start = prefix_node.range_start
    else
      prefix_node          = prefix(nil)
      prefix_node.complete = true

      trace('PN complete (no prefix)')
      param_node <<= prefix_node
      completed    = true
    end

    value_node = @buffers.delete(:param_value)
    unless value_node.nil?
      param_node <<= value_node
      unless value_node.complete
        trace('VN incomplete')
        completed = false
      end
      param_start ||= value_node.range_start
      param_node.character_range = [param_start, value_node.range_end]
    else
      completed = false
    end

    param_node.complete = completed
    @buffers[:parameter] = param_node
  		end
		begin

    trace('TERM term_argument')
    arg_node = argument(@buffers[:parameter])
    new_term = @buffers[:term_stack][-1] << arg_node
    @buffers[:term_stack][-1] = new_term
    @buffers[:parameter] = nil
  		end
	when 41 then
		begin

    trace('STRING start_string')
    @string_opened = true
    p_start = p
  		end
		begin

    trace('STRING stop_string')
    @string_closed = true
    p_end = p
  		end
		begin

    trace('STRING string_end')
    completed = @string_opened && @string_closed
    chars = data[p_start...p_end]
    ast_node = string(utf8_string(chars), complete: true, character_range: [p_start, p_end])
    @buffers[:string] = ast_node
  		end
		begin

    trace('STRING yield_string')
    yield @buffers[:string]
  		end
	when 71 then
		begin

    trace('STRING start_string')
    @string_opened = true
    p_start = p
  		end
		begin

    trace('COMMENT stop_comment')
    p_end = p;
  		end
		begin

    trace('COMMENT comment_end')
    p_end = p
    chars = data[p_start...p_end]
    completed = !chars.empty?
    ast_node = comment(utf8_string(chars), complete: completed)
    @buffers[:comment] = ast_node
  		end
		begin

    @buffers[:comment] ||= comment(nil)
    comment = @buffers[:comment]
    term = @buffers[:term_stack][-1]
    subject_term = subject(term)
    rel = relationship(nil)
    obj = object(nil)
    stmt = observed_term(statement(subject_term, rel, obj, comment))
    stmt.complete = true
    yield stmt
  		end
	when 51 then
		begin

    trace('PARAMETER add_string_param_value')
    string_node = @buffers.delete(:string)
    value_node = value(string_node, complete: string_node.complete, character_range: string_node.character_range)
    @buffers[:param_value] = value_node
  		end
		begin

    trace('PARAMETER parameter_end')
    param_node = parameter()
    completed = true
    prefix_node = @buffers.delete(:param_prefix)
    if prefix_node
      param_node <<= prefix_node
      unless prefix_node.complete
        trace('PN incomplete')
        completed = false
      end
      param_start = prefix_node.range_start
    else
      prefix_node          = prefix(nil)
      prefix_node.complete = true

      trace('PN complete (no prefix)')
      param_node <<= prefix_node
      completed    = true
    end

    value_node = @buffers.delete(:param_value)
    unless value_node.nil?
      param_node <<= value_node
      unless value_node.complete
        trace('VN incomplete')
        completed = false
      end
      param_start ||= value_node.range_start
      param_node.character_range = [param_start, value_node.range_end]
    else
      completed = false
    end

    param_node.complete = completed
    @buffers[:parameter] = param_node
  		end
		begin

    trace('TERM term_argument')
    arg_node = argument(@buffers[:parameter])
    new_term = @buffers[:term_stack][-1] << arg_node
    @buffers[:term_stack][-1] = new_term
    @buffers[:parameter] = nil
  		end
		begin

    trace('TERM fxret')
    inner_term = @buffers[:term_stack].pop
    arg_node = argument(inner_term)
    new_term = @buffers[:term_stack][-1] << arg_node
    @buffers[:term_stack][-1] = new_term
    	begin
		top -= 1
		cs = stack[top]
		_goto_level = _again
		next
	end

  		end
	when 56 then
		begin

    trace('PARAMETER add_prefix')
    ident = @buffers.delete(:ident)
    prefix_node = prefix(ident, complete: ident.complete, character_range: ident.character_range)
    @buffers[:param_prefix] = prefix_node
  		end
		begin

    trace('PARAMETER parameter_end')
    param_node = parameter()
    completed = true
    prefix_node = @buffers.delete(:param_prefix)
    if prefix_node
      param_node <<= prefix_node
      unless prefix_node.complete
        trace('PN incomplete')
        completed = false
      end
      param_start = prefix_node.range_start
    else
      prefix_node          = prefix(nil)
      prefix_node.complete = true

      trace('PN complete (no prefix)')
      param_node <<= prefix_node
      completed    = true
    end

    value_node = @buffers.delete(:param_value)
    unless value_node.nil?
      param_node <<= value_node
      unless value_node.complete
        trace('VN incomplete')
        completed = false
      end
      param_start ||= value_node.range_start
      param_node.character_range = [param_start, value_node.range_end]
    else
      completed = false
    end

    param_node.complete = completed
    @buffers[:parameter] = param_node
  		end
		begin

    trace('TERM term_argument')
    arg_node = argument(@buffers[:parameter])
    new_term = @buffers[:term_stack][-1] << arg_node
    @buffers[:term_stack][-1] = new_term
    @buffers[:parameter] = nil
  		end
		begin

    trace('TERM fxret')
    inner_term = @buffers[:term_stack].pop
    arg_node = argument(inner_term)
    new_term = @buffers[:term_stack][-1] << arg_node
    @buffers[:term_stack][-1] = new_term
    	begin
		top -= 1
		cs = stack[top]
		_goto_level = _again
		next
	end

  		end
	when 75 then
		begin

    trace('PARAMETER add_prefix')
    ident = @buffers.delete(:ident)
    prefix_node = prefix(ident, complete: ident.complete, character_range: ident.character_range)
    @buffers[:param_prefix] = prefix_node
  		end
		begin

    trace('COMMENT stop_comment')
    p_end = p;
  		end
		begin

    trace('COMMENT comment_end')
    p_end = p
    chars = data[p_start...p_end]
    completed = !chars.empty?
    ast_node = comment(utf8_string(chars), complete: completed)
    @buffers[:comment] = ast_node
  		end
		begin

    @buffers[:comment] ||= comment(nil)
    comment = @buffers[:comment]
    term = @buffers[:term_stack][-1]
    subject_term = subject(term)
    rel = relationship(nil)
    obj = object(nil)
    stmt = observed_term(statement(subject_term, rel, obj, comment))
    stmt.complete = true
    yield stmt
  		end
	when 54 then
		begin

    trace('IDENTIFIER end_identifier')
    id_end = p
    chars = data[id_start...id_end]
    completed = !chars.empty?
    ast_node = identifier(utf8_string(chars), complete: completed, character_range: [id_start, id_end])
    @buffers[:ident] = ast_node
  		end
		begin

    trace('PARAMETER add_ident_param_value')
    ident = @buffers.delete(:ident)
    value_node = value(ident, complete: ident.complete, character_range: ident.character_range)
    @buffers[:param_value] = value_node
  		end
		begin

    trace('PARAMETER parameter_end')
    param_node = parameter()
    completed = true
    prefix_node = @buffers.delete(:param_prefix)
    if prefix_node
      param_node <<= prefix_node
      unless prefix_node.complete
        trace('PN incomplete')
        completed = false
      end
      param_start = prefix_node.range_start
    else
      prefix_node          = prefix(nil)
      prefix_node.complete = true

      trace('PN complete (no prefix)')
      param_node <<= prefix_node
      completed    = true
    end

    value_node = @buffers.delete(:param_value)
    unless value_node.nil?
      param_node <<= value_node
      unless value_node.complete
        trace('VN incomplete')
        completed = false
      end
      param_start ||= value_node.range_start
      param_node.character_range = [param_start, value_node.range_end]
    else
      completed = false
    end

    param_node.complete = completed
    @buffers[:parameter] = param_node
  		end
		begin

    trace('TERM term_argument')
    arg_node = argument(@buffers[:parameter])
    new_term = @buffers[:term_stack][-1] << arg_node
    @buffers[:term_stack][-1] = new_term
    @buffers[:parameter] = nil
  		end
		begin

    trace('TERM fxret')
    inner_term = @buffers[:term_stack].pop
    arg_node = argument(inner_term)
    new_term = @buffers[:term_stack][-1] << arg_node
    @buffers[:term_stack][-1] = new_term
    	begin
		top -= 1
		cs = stack[top]
		_goto_level = _again
		next
	end

  		end
	end
	end
	end
	if _goto_level <= _again
	if cs == 0
		_goto_level = _out
		next
	end
	p += 1
	if p != pe
		_goto_level = _resume
		next
	end
	end
	if _goto_level <= _test_eof
	if p == eof
	  case _bel_eof_actions[cs]
	when 1 then
		begin

    trace('FUNCTION a_function_eof')
    if @function_started
      p_end = p
      chars = data[p_start...p_end]
      completed = !chars.empty?
      ident_node = identifier(utf8_string(chars), complete: completed, character_range: [p_start, p_end])
      fx_node = function(ident_node, complete: ident_node.complete, character_range: ident_node.character_range)
      @buffers[:function] = fx_node
    end
  		end
	when 37 then
		begin

    trace('FUNCTION function_node_err')
    if @function_started
      # hit invalid char, include it in the identifier that results
      p_end = p + 1
      chars = data[p_start...p_end]
      completed = !chars.empty?
      ident_node = identifier(utf8_string(chars), complete: completed, character_range: [p_start, p_end])
      fx_node = function(ident_node, complete: false, character_range: ident_node.character_range)
      @buffers[:function] = fx_node
      yield @buffers[:function]
    end
  		end
	when 78 then
		begin

    trace('FUNCTION yield_function')
    yield @buffers[:function]
  		end
	when 81 then
		begin

    trace('IDENTIFIER yield_identifier')
    yield @buffers[:ident]
  		end
	when 13 then
		begin

    trace('STRING a_string_err')
    p_end = p
    chars = data[p_start...p_end]
    ast_node = string(utf8_string(chars), complete: false, character_range: [p_start, p_end])
    @buffers[:string] = ast_node
  		end
	when 90 then
		begin

    trace("PARAMETER parameter_node_eof")
    param_node = parameter()
    completed = true
    prefix_node = @buffers.delete(:param_prefix)
    unless prefix_node.nil?
      param_node <<= prefix_node
      unless prefix_node.complete
        completed = false
      end
    end

    string_value_node = @buffers.delete(:string)
    unless string_value_node.nil?
      param_node <<= string_value_node
      unless string_value_node.complete
        completed = false
      end
    else
      completed = false
    end

    param_node.complete = completed
    yield param_node
  		end
	when 63 then
		begin

    @buffers[:comment] ||= comment(nil)
    comment = @buffers[:comment]
    term = @buffers[:term_stack][-1]
    subject_term = subject(term)
    rel = relationship(nil)
    obj = object(nil)
    stmt = observed_term(statement(subject_term, rel, obj, comment))
    stmt.complete = true
    yield stmt
  		end
	when 77 then
		begin

    trace('FUNCTION end_function')
    p_end = p
    chars = data[p_start...p_end]
    completed = !chars.empty?
    ident_node = identifier(utf8_string(chars), complete: completed, character_range: [p_start, p_end])
    fx_node = function(ident_node, complete: ident_node.complete, character_range: ident_node.character_range)
    @buffers[:function] = fx_node
  		end
		begin

    trace('FUNCTION yield_function')
    yield @buffers[:function]
  		end
	when 65 then
		begin

    trace('FUNCTION a_function_eof')
    if @function_started
      p_end = p
      chars = data[p_start...p_end]
      completed = !chars.empty?
      ident_node = identifier(utf8_string(chars), complete: completed, character_range: [p_start, p_end])
      fx_node = function(ident_node, complete: ident_node.complete, character_range: ident_node.character_range)
      @buffers[:function] = fx_node
    end
  		end
		begin

    @buffers[:comment] ||= comment(nil)
    comment = @buffers[:comment]
    term = @buffers[:term_stack][-1]
    subject_term = subject(term)
    rel = relationship(nil)
    obj = object(nil)
    stmt = observed_term(statement(subject_term, rel, obj, comment))
    stmt.complete = true
    yield stmt
  		end
	when 79 then
		begin

    trace('IDENTIFIER end_identifier')
    id_end = p
    chars = data[id_start...id_end]
    completed = !chars.empty?
    ast_node = identifier(utf8_string(chars), complete: completed, character_range: [id_start, id_end])
    @buffers[:ident] = ast_node
  		end
		begin

    trace('IDENTIFIER yield_identifier')
    yield @buffers[:ident]
  		end
	when 59 then
		begin

    trace('IDENTIFIER an_ident_eof')
    if @identifier_started
      id_end = p
      chars = data[id_start...id_end]
      completed = !chars.empty?
      ast_node = identifier(utf8_string(chars), complete: completed, character_range: [id_start, id_end])
      @buffers[:ident] = ast_node
    end
  		end
		begin

    trace('IDENTIFIER an_ident_err')
    id_end = p
    chars = data[id_start...id_end]
    ast_node = identifier(utf8_string(chars), complete: false, character_range: [id_start, id_end])
    @buffers[:ident] = ast_node
  		end
	when 49 then
		begin

    trace('STRING a_string_err')
    p_end = p
    chars = data[p_start...p_end]
    ast_node = string(utf8_string(chars), complete: false, character_range: [p_start, p_end])
    @buffers[:string] = ast_node
  		end
		begin

    trace("PARAMETER a_parameter_eof")
    param_node = parameter()
    completed = true
    prefix_node = @buffers.delete(:param_prefix)
    unless prefix_node.nil?
      param_node <<= prefix_node
      unless prefix_node.complete
        completed = false
      end
    end

    string_value_node = @buffers.delete(:string)
    unless string_value_node.nil?
      param_node <<= string_value_node
      unless string_value_node.complete
        completed = false
      end
    else
      completed = false
    end

    param_node.complete = completed
    @buffers[:parameter] = param_node
  		end
	when 44 then
		begin

    trace('STRING a_string_err')
    p_end = p
    chars = data[p_start...p_end]
    ast_node = string(utf8_string(chars), complete: false, character_range: [p_start, p_end])
    @buffers[:string] = ast_node
  		end
		begin

    trace("PARAMETER parameter_node_eof")
    param_node = parameter()
    completed = true
    prefix_node = @buffers.delete(:param_prefix)
    unless prefix_node.nil?
      param_node <<= prefix_node
      unless prefix_node.complete
        completed = false
      end
    end

    string_value_node = @buffers.delete(:string)
    unless string_value_node.nil?
      param_node <<= string_value_node
      unless string_value_node.complete
        completed = false
      end
    else
      completed = false
    end

    param_node.complete = completed
    yield param_node
  		end
	when 18 then
		begin

    trace('STRING a_string_err')
    p_end = p
    chars = data[p_start...p_end]
    ast_node = string(utf8_string(chars), complete: false, character_range: [p_start, p_end])
    @buffers[:string] = ast_node
  		end
		begin

    trace('TERM eof_parameter_argument')
    @buffers[:term_stack][-1].complete = false
    yield @buffers[:term_stack][-1]
  		end
	when 38 then
		begin

    trace('STRING string_node_err')
    p_end = p
    chars = data[p_start...p_end]
    ast_node = string(utf8_string(chars), complete: false, character_range: [p_start, p_end])
    yield ast_node
  		end
		begin

    trace('STRING string_node_eof')
    yield @buffers[:string]
  		end
	when 68 then
		begin

    trace("PARAMETER a_parameter_eof")
    param_node = parameter()
    completed = true
    prefix_node = @buffers.delete(:param_prefix)
    unless prefix_node.nil?
      param_node <<= prefix_node
      unless prefix_node.complete
        completed = false
      end
    end

    string_value_node = @buffers.delete(:string)
    unless string_value_node.nil?
      param_node <<= string_value_node
      unless string_value_node.complete
        completed = false
      end
    else
      completed = false
    end

    param_node.complete = completed
    @buffers[:parameter] = param_node
  		end
		begin

    trace('TERM eof_parameter_argument')
    @buffers[:term_stack][-1].complete = false
    yield @buffers[:term_stack][-1]
  		end
	when 91 then
		begin

    trace('TERM outer_term_end')
    term_stack = @buffers[:term_stack]
    term_stack.each { |term| term.complete = true }
  		end
		begin

    yield @buffers[:term_stack][-1]
  		end
	when 61 then
		begin

    trace('FUNCTION a_function_eof')
    if @function_started
      p_end = p
      chars = data[p_start...p_end]
      completed = !chars.empty?
      ident_node = identifier(utf8_string(chars), complete: completed, character_range: [p_start, p_end])
      fx_node = function(ident_node, complete: ident_node.complete, character_range: ident_node.character_range)
      @buffers[:function] = fx_node
    end
  		end
		begin

    trace('IDENTIFIER an_ident_eof')
    if @identifier_started
      id_end = p
      chars = data[id_start...id_end]
      completed = !chars.empty?
      ast_node = identifier(utf8_string(chars), complete: completed, character_range: [id_start, id_end])
      @buffers[:ident] = ast_node
    end
  		end
		begin

    trace('IDENTIFIER an_ident_err')
    id_end = p
    chars = data[id_start...id_end]
    ast_node = identifier(utf8_string(chars), complete: false, character_range: [id_start, id_end])
    @buffers[:ident] = ast_node
  		end
	when 92 then
		begin

    trace('FUNCTION a_function_eof')
    if @function_started
      p_end = p
      chars = data[p_start...p_end]
      completed = !chars.empty?
      ident_node = identifier(utf8_string(chars), complete: completed, character_range: [p_start, p_end])
      fx_node = function(ident_node, complete: ident_node.complete, character_range: ident_node.character_range)
      @buffers[:function] = fx_node
    end
  		end
		begin

    trace('TERM outer_term_end')
    term_stack = @buffers[:term_stack]
    term_stack.each { |term| term.complete = true }
  		end
		begin

    yield @buffers[:term_stack][-1]
  		end
	when 53 then
		begin

    trace('IDENTIFIER an_ident_eof')
    if @identifier_started
      id_end = p
      chars = data[id_start...id_end]
      completed = !chars.empty?
      ast_node = identifier(utf8_string(chars), complete: completed, character_range: [id_start, id_end])
      @buffers[:ident] = ast_node
    end
  		end
		begin

    trace('IDENTIFIER an_ident_err')
    id_end = p
    chars = data[id_start...id_end]
    ast_node = identifier(utf8_string(chars), complete: false, character_range: [id_start, id_end])
    @buffers[:ident] = ast_node
  		end
		begin

    trace('FUNCTION a_function_eof')
    if @function_started
      p_end = p
      chars = data[p_start...p_end]
      completed = !chars.empty?
      ident_node = identifier(utf8_string(chars), complete: completed, character_range: [p_start, p_end])
      fx_node = function(ident_node, complete: ident_node.complete, character_range: ident_node.character_range)
      @buffers[:function] = fx_node
    end
  		end
	when 57 then
		begin

    trace('IDENTIFIER an_ident_eof')
    if @identifier_started
      id_end = p
      chars = data[id_start...id_end]
      completed = !chars.empty?
      ast_node = identifier(utf8_string(chars), complete: completed, character_range: [id_start, id_end])
      @buffers[:ident] = ast_node
    end
  		end
		begin

    trace('IDENTIFIER an_ident_err')
    id_end = p
    chars = data[id_start...id_end]
    ast_node = identifier(utf8_string(chars), complete: false, character_range: [id_start, id_end])
    @buffers[:ident] = ast_node
  		end
		begin

    trace('STRING a_string_err')
    p_end = p
    chars = data[p_start...p_end]
    ast_node = string(utf8_string(chars), complete: false, character_range: [p_start, p_end])
    @buffers[:string] = ast_node
  		end
	when 33 then
		begin

    trace('IDENTIFIER an_ident_eof')
    if @identifier_started
      id_end = p
      chars = data[id_start...id_end]
      completed = !chars.empty?
      ast_node = identifier(utf8_string(chars), complete: completed, character_range: [id_start, id_end])
      @buffers[:ident] = ast_node
    end
  		end
		begin

    trace('IDENTIFIER an_ident_err')
    id_end = p
    chars = data[id_start...id_end]
    ast_node = identifier(utf8_string(chars), complete: false, character_range: [id_start, id_end])
    @buffers[:ident] = ast_node
  		end
		begin

    trace('TERM eof_parameter_argument')
    @buffers[:term_stack][-1].complete = false
    yield @buffers[:term_stack][-1]
  		end
	when 88 then
		begin

    trace('IDENTIFIER an_ident_eof')
    if @identifier_started
      id_end = p
      chars = data[id_start...id_end]
      completed = !chars.empty?
      ast_node = identifier(utf8_string(chars), complete: completed, character_range: [id_start, id_end])
      @buffers[:ident] = ast_node
    end
  		end
		begin

    trace('PARAMETER parameter_end')
    param_node = parameter()
    completed = true
    prefix_node = @buffers.delete(:param_prefix)
    if prefix_node
      param_node <<= prefix_node
      unless prefix_node.complete
        trace('PN incomplete')
        completed = false
      end
      param_start = prefix_node.range_start
    else
      prefix_node          = prefix(nil)
      prefix_node.complete = true

      trace('PN complete (no prefix)')
      param_node <<= prefix_node
      completed    = true
    end

    value_node = @buffers.delete(:param_value)
    unless value_node.nil?
      param_node <<= value_node
      unless value_node.complete
        trace('VN incomplete')
        completed = false
      end
      param_start ||= value_node.range_start
      param_node.character_range = [param_start, value_node.range_end]
    else
      completed = false
    end

    param_node.complete = completed
    @buffers[:parameter] = param_node
  		end
		begin

    trace('PARAMETER yield_parameter')
    yield @buffers[:parameter]
  		end
	when 50 then
		begin

    trace('STRING eof_string')
    p_end = p
    chars = data[p_start...p_end]
    ast_node = string(utf8_string(chars), complete: false, character_range: [p_start, p_end])
    @buffers[:string] = ast_node
  		end
		begin

    trace('STRING a_string_err')
    p_end = p
    chars = data[p_start...p_end]
    ast_node = string(utf8_string(chars), complete: false, character_range: [p_start, p_end])
    @buffers[:string] = ast_node
  		end
		begin

    trace("PARAMETER a_parameter_eof")
    param_node = parameter()
    completed = true
    prefix_node = @buffers.delete(:param_prefix)
    unless prefix_node.nil?
      param_node <<= prefix_node
      unless prefix_node.complete
        completed = false
      end
    end

    string_value_node = @buffers.delete(:string)
    unless string_value_node.nil?
      param_node <<= string_value_node
      unless string_value_node.complete
        completed = false
      end
    else
      completed = false
    end

    param_node.complete = completed
    @buffers[:parameter] = param_node
  		end
	when 45 then
		begin

    trace('STRING eof_string')
    p_end = p
    chars = data[p_start...p_end]
    ast_node = string(utf8_string(chars), complete: false, character_range: [p_start, p_end])
    @buffers[:string] = ast_node
  		end
		begin

    trace('STRING a_string_err')
    p_end = p
    chars = data[p_start...p_end]
    ast_node = string(utf8_string(chars), complete: false, character_range: [p_start, p_end])
    @buffers[:string] = ast_node
  		end
		begin

    trace("PARAMETER parameter_node_eof")
    param_node = parameter()
    completed = true
    prefix_node = @buffers.delete(:param_prefix)
    unless prefix_node.nil?
      param_node <<= prefix_node
      unless prefix_node.complete
        completed = false
      end
    end

    string_value_node = @buffers.delete(:string)
    unless string_value_node.nil?
      param_node <<= string_value_node
      unless string_value_node.complete
        completed = false
      end
    else
      completed = false
    end

    param_node.complete = completed
    yield param_node
  		end
	when 40 then
		begin

    trace('STRING eof_string')
    p_end = p
    chars = data[p_start...p_end]
    ast_node = string(utf8_string(chars), complete: false, character_range: [p_start, p_end])
    @buffers[:string] = ast_node
  		end
		begin

    trace('STRING string_node_err')
    p_end = p
    chars = data[p_start...p_end]
    ast_node = string(utf8_string(chars), complete: false, character_range: [p_start, p_end])
    yield ast_node
  		end
		begin

    trace('STRING string_node_eof')
    yield @buffers[:string]
  		end
	when 72 then
		begin

    trace('STRING eof_string')
    p_end = p
    chars = data[p_start...p_end]
    ast_node = string(utf8_string(chars), complete: false, character_range: [p_start, p_end])
    @buffers[:string] = ast_node
  		end
		begin

    trace("PARAMETER a_parameter_eof")
    param_node = parameter()
    completed = true
    prefix_node = @buffers.delete(:param_prefix)
    unless prefix_node.nil?
      param_node <<= prefix_node
      unless prefix_node.complete
        completed = false
      end
    end

    string_value_node = @buffers.delete(:string)
    unless string_value_node.nil?
      param_node <<= string_value_node
      unless string_value_node.complete
        completed = false
      end
    else
      completed = false
    end

    param_node.complete = completed
    @buffers[:parameter] = param_node
  		end
		begin

    trace('TERM eof_parameter_argument')
    @buffers[:term_stack][-1].complete = false
    yield @buffers[:term_stack][-1]
  		end
	when 12 then
		begin

    trace('STRING a_string_err')
    p_end = p
    chars = data[p_start...p_end]
    ast_node = string(utf8_string(chars), complete: false, character_range: [p_start, p_end])
    @buffers[:string] = ast_node
  		end
		begin

    trace("PARAMETER a_parameter_eof")
    param_node = parameter()
    completed = true
    prefix_node = @buffers.delete(:param_prefix)
    unless prefix_node.nil?
      param_node <<= prefix_node
      unless prefix_node.complete
        completed = false
      end
    end

    string_value_node = @buffers.delete(:string)
    unless string_value_node.nil?
      param_node <<= string_value_node
      unless string_value_node.complete
        completed = false
      end
    else
      completed = false
    end

    param_node.complete = completed
    @buffers[:parameter] = param_node
  		end
		begin

    trace('TERM eof_parameter_argument')
    @buffers[:term_stack][-1].complete = false
    yield @buffers[:term_stack][-1]
  		end
	when 82 then
		begin

    trace('PARAMETER add_string_param_value')
    string_node = @buffers.delete(:string)
    value_node = value(string_node, complete: string_node.complete, character_range: string_node.character_range)
    @buffers[:param_value] = value_node
  		end
		begin

    trace('PARAMETER parameter_end')
    param_node = parameter()
    completed = true
    prefix_node = @buffers.delete(:param_prefix)
    if prefix_node
      param_node <<= prefix_node
      unless prefix_node.complete
        trace('PN incomplete')
        completed = false
      end
      param_start = prefix_node.range_start
    else
      prefix_node          = prefix(nil)
      prefix_node.complete = true

      trace('PN complete (no prefix)')
      param_node <<= prefix_node
      completed    = true
    end

    value_node = @buffers.delete(:param_value)
    unless value_node.nil?
      param_node <<= value_node
      unless value_node.complete
        trace('VN incomplete')
        completed = false
      end
      param_start ||= value_node.range_start
      param_node.character_range = [param_start, value_node.range_end]
    else
      completed = false
    end

    param_node.complete = completed
    @buffers[:parameter] = param_node
  		end
		begin

    trace('PARAMETER yield_parameter')
    yield @buffers[:parameter]
  		end
	when 93 then
		begin

    trace('COMMENT stop_comment')
    p_end = p;
  		end
		begin

    trace('COMMENT comment_end')
    p_end = p
    chars = data[p_start...p_end]
    completed = !chars.empty?
    ast_node = comment(utf8_string(chars), complete: completed)
    @buffers[:comment] = ast_node
  		end
		begin

    trace('COMMENT yield_comment')
    yield @buffers[:comment] || comment(nil)
  		end
	when 64 then
		begin

    trace('COMMENT stop_comment')
    p_end = p;
  		end
		begin

    trace('COMMENT comment_end')
    p_end = p
    chars = data[p_start...p_end]
    completed = !chars.empty?
    ast_node = comment(utf8_string(chars), complete: completed)
    @buffers[:comment] = ast_node
  		end
		begin

    @buffers[:comment] ||= comment(nil)
    comment = @buffers[:comment]
    term = @buffers[:term_stack][-1]
    subject_term = subject(term)
    rel = relationship(nil)
    obj = object(nil)
    stmt = observed_term(statement(subject_term, rel, obj, comment))
    stmt.complete = true
    yield stmt
  		end
	when 62 then
		begin

    trace('FUNCTION a_function_eof')
    if @function_started
      p_end = p
      chars = data[p_start...p_end]
      completed = !chars.empty?
      ident_node = identifier(utf8_string(chars), complete: completed, character_range: [p_start, p_end])
      fx_node = function(ident_node, complete: ident_node.complete, character_range: ident_node.character_range)
      @buffers[:function] = fx_node
    end
  		end
		begin

    trace('IDENTIFIER an_ident_eof')
    if @identifier_started
      id_end = p
      chars = data[id_start...id_end]
      completed = !chars.empty?
      ast_node = identifier(utf8_string(chars), complete: completed, character_range: [id_start, id_end])
      @buffers[:ident] = ast_node
    end
  		end
		begin

    trace('IDENTIFIER an_ident_err')
    id_end = p
    chars = data[id_start...id_end]
    ast_node = identifier(utf8_string(chars), complete: false, character_range: [id_start, id_end])
    @buffers[:ident] = ast_node
  		end
		begin

    trace('STRING a_string_err')
    p_end = p
    chars = data[p_start...p_end]
    ast_node = string(utf8_string(chars), complete: false, character_range: [p_start, p_end])
    @buffers[:string] = ast_node
  		end
	when 35 then
		begin

    trace('FUNCTION a_function_eof')
    if @function_started
      p_end = p
      chars = data[p_start...p_end]
      completed = !chars.empty?
      ident_node = identifier(utf8_string(chars), complete: completed, character_range: [p_start, p_end])
      fx_node = function(ident_node, complete: ident_node.complete, character_range: ident_node.character_range)
      @buffers[:function] = fx_node
    end
  		end
		begin

    trace('IDENTIFIER an_ident_eof')
    if @identifier_started
      id_end = p
      chars = data[id_start...id_end]
      completed = !chars.empty?
      ast_node = identifier(utf8_string(chars), complete: completed, character_range: [id_start, id_end])
      @buffers[:ident] = ast_node
    end
  		end
		begin

    trace('IDENTIFIER an_ident_err')
    id_end = p
    chars = data[id_start...id_end]
    ast_node = identifier(utf8_string(chars), complete: false, character_range: [id_start, id_end])
    @buffers[:ident] = ast_node
  		end
		begin

    trace('TERM eof_parameter_argument')
    @buffers[:term_stack][-1].complete = false
    yield @buffers[:term_stack][-1]
  		end
	when 66 then
		begin

    trace('FUNCTION a_function_eof')
    if @function_started
      p_end = p
      chars = data[p_start...p_end]
      completed = !chars.empty?
      ident_node = identifier(utf8_string(chars), complete: completed, character_range: [p_start, p_end])
      fx_node = function(ident_node, complete: ident_node.complete, character_range: ident_node.character_range)
      @buffers[:function] = fx_node
    end
  		end
		begin

    trace('COMMENT stop_comment')
    p_end = p;
  		end
		begin

    trace('COMMENT comment_end')
    p_end = p
    chars = data[p_start...p_end]
    completed = !chars.empty?
    ast_node = comment(utf8_string(chars), complete: completed)
    @buffers[:comment] = ast_node
  		end
		begin

    @buffers[:comment] ||= comment(nil)
    comment = @buffers[:comment]
    term = @buffers[:term_stack][-1]
    subject_term = subject(term)
    rel = relationship(nil)
    obj = object(nil)
    stmt = observed_term(statement(subject_term, rel, obj, comment))
    stmt.complete = true
    yield stmt
  		end
	when 55 then
		begin

    trace('IDENTIFIER an_ident_eof')
    if @identifier_started
      id_end = p
      chars = data[id_start...id_end]
      completed = !chars.empty?
      ast_node = identifier(utf8_string(chars), complete: completed, character_range: [id_start, id_end])
      @buffers[:ident] = ast_node
    end
  		end
		begin

    trace('IDENTIFIER an_ident_err')
    id_end = p
    chars = data[id_start...id_end]
    ast_node = identifier(utf8_string(chars), complete: false, character_range: [id_start, id_end])
    @buffers[:ident] = ast_node
  		end
		begin

    trace('STRING a_string_err')
    p_end = p
    chars = data[p_start...p_end]
    ast_node = string(utf8_string(chars), complete: false, character_range: [p_start, p_end])
    @buffers[:string] = ast_node
  		end
		begin

    trace('FUNCTION a_function_eof')
    if @function_started
      p_end = p
      chars = data[p_start...p_end]
      completed = !chars.empty?
      ident_node = identifier(utf8_string(chars), complete: completed, character_range: [p_start, p_end])
      fx_node = function(ident_node, complete: ident_node.complete, character_range: ident_node.character_range)
      @buffers[:function] = fx_node
    end
  		end
	when 48 then
		begin

    trace('IDENTIFIER an_ident_eof')
    if @identifier_started
      id_end = p
      chars = data[id_start...id_end]
      completed = !chars.empty?
      ast_node = identifier(utf8_string(chars), complete: completed, character_range: [id_start, id_end])
      @buffers[:ident] = ast_node
    end
  		end
		begin

    trace('IDENTIFIER an_ident_err')
    id_end = p
    chars = data[id_start...id_end]
    ast_node = identifier(utf8_string(chars), complete: false, character_range: [id_start, id_end])
    @buffers[:ident] = ast_node
  		end
		begin

    trace('STRING a_string_err')
    p_end = p
    chars = data[p_start...p_end]
    ast_node = string(utf8_string(chars), complete: false, character_range: [p_start, p_end])
    @buffers[:string] = ast_node
  		end
		begin

    trace("PARAMETER a_parameter_eof")
    param_node = parameter()
    completed = true
    prefix_node = @buffers.delete(:param_prefix)
    unless prefix_node.nil?
      param_node <<= prefix_node
      unless prefix_node.complete
        completed = false
      end
    end

    string_value_node = @buffers.delete(:string)
    unless string_value_node.nil?
      param_node <<= string_value_node
      unless string_value_node.complete
        completed = false
      end
    else
      completed = false
    end

    param_node.complete = completed
    @buffers[:parameter] = param_node
  		end
	when 43 then
		begin

    trace('IDENTIFIER an_ident_eof')
    if @identifier_started
      id_end = p
      chars = data[id_start...id_end]
      completed = !chars.empty?
      ast_node = identifier(utf8_string(chars), complete: completed, character_range: [id_start, id_end])
      @buffers[:ident] = ast_node
    end
  		end
		begin

    trace('IDENTIFIER an_ident_err')
    id_end = p
    chars = data[id_start...id_end]
    ast_node = identifier(utf8_string(chars), complete: false, character_range: [id_start, id_end])
    @buffers[:ident] = ast_node
  		end
		begin

    trace('STRING a_string_err')
    p_end = p
    chars = data[p_start...p_end]
    ast_node = string(utf8_string(chars), complete: false, character_range: [p_start, p_end])
    @buffers[:string] = ast_node
  		end
		begin

    trace("PARAMETER parameter_node_eof")
    param_node = parameter()
    completed = true
    prefix_node = @buffers.delete(:param_prefix)
    unless prefix_node.nil?
      param_node <<= prefix_node
      unless prefix_node.complete
        completed = false
      end
    end

    string_value_node = @buffers.delete(:string)
    unless string_value_node.nil?
      param_node <<= string_value_node
      unless string_value_node.complete
        completed = false
      end
    else
      completed = false
    end

    param_node.complete = completed
    yield param_node
  		end
	when 31 then
		begin

    trace('IDENTIFIER an_ident_eof')
    if @identifier_started
      id_end = p
      chars = data[id_start...id_end]
      completed = !chars.empty?
      ast_node = identifier(utf8_string(chars), complete: completed, character_range: [id_start, id_end])
      @buffers[:ident] = ast_node
    end
  		end
		begin

    trace('IDENTIFIER an_ident_err')
    id_end = p
    chars = data[id_start...id_end]
    ast_node = identifier(utf8_string(chars), complete: false, character_range: [id_start, id_end])
    @buffers[:ident] = ast_node
  		end
		begin

    trace('STRING a_string_err')
    p_end = p
    chars = data[p_start...p_end]
    ast_node = string(utf8_string(chars), complete: false, character_range: [p_start, p_end])
    @buffers[:string] = ast_node
  		end
		begin

    trace('TERM eof_parameter_argument')
    @buffers[:term_stack][-1].complete = false
    yield @buffers[:term_stack][-1]
  		end
	when 22 then
		begin

    trace('IDENTIFIER an_ident_eof')
    if @identifier_started
      id_end = p
      chars = data[id_start...id_end]
      completed = !chars.empty?
      ast_node = identifier(utf8_string(chars), complete: completed, character_range: [id_start, id_end])
      @buffers[:ident] = ast_node
    end
  		end
		begin

    trace('IDENTIFIER an_ident_err')
    id_end = p
    chars = data[id_start...id_end]
    ast_node = identifier(utf8_string(chars), complete: false, character_range: [id_start, id_end])
    @buffers[:ident] = ast_node
  		end
		begin

    trace('TERM eof_parameter_argument')
    @buffers[:term_stack][-1].complete = false
    yield @buffers[:term_stack][-1]
  		end
		begin

    trace('FUNCTION a_function_eof')
    if @function_started
      p_end = p
      chars = data[p_start...p_end]
      completed = !chars.empty?
      ident_node = identifier(utf8_string(chars), complete: completed, character_range: [p_start, p_end])
      fx_node = function(ident_node, complete: ident_node.complete, character_range: ident_node.character_range)
      @buffers[:function] = fx_node
    end
  		end
	when 86 then
		begin

    trace('IDENTIFIER an_ident_eof')
    if @identifier_started
      id_end = p
      chars = data[id_start...id_end]
      completed = !chars.empty?
      ast_node = identifier(utf8_string(chars), complete: completed, character_range: [id_start, id_end])
      @buffers[:ident] = ast_node
    end
  		end
		begin

    trace('PARAMETER add_prefix')
    ident = @buffers.delete(:ident)
    prefix_node = prefix(ident, complete: ident.complete, character_range: ident.character_range)
    @buffers[:param_prefix] = prefix_node
  		end
		begin

    trace('PARAMETER parameter_end')
    param_node = parameter()
    completed = true
    prefix_node = @buffers.delete(:param_prefix)
    if prefix_node
      param_node <<= prefix_node
      unless prefix_node.complete
        trace('PN incomplete')
        completed = false
      end
      param_start = prefix_node.range_start
    else
      prefix_node          = prefix(nil)
      prefix_node.complete = true

      trace('PN complete (no prefix)')
      param_node <<= prefix_node
      completed    = true
    end

    value_node = @buffers.delete(:param_value)
    unless value_node.nil?
      param_node <<= value_node
      unless value_node.complete
        trace('VN incomplete')
        completed = false
      end
      param_start ||= value_node.range_start
      param_node.character_range = [param_start, value_node.range_end]
    else
      completed = false
    end

    param_node.complete = completed
    @buffers[:parameter] = param_node
  		end
		begin

    trace('PARAMETER yield_parameter')
    yield @buffers[:parameter]
  		end
	when 14 then
		begin

    trace('STRING eof_string')
    p_end = p
    chars = data[p_start...p_end]
    ast_node = string(utf8_string(chars), complete: false, character_range: [p_start, p_end])
    @buffers[:string] = ast_node
  		end
		begin

    trace('STRING a_string_err')
    p_end = p
    chars = data[p_start...p_end]
    ast_node = string(utf8_string(chars), complete: false, character_range: [p_start, p_end])
    @buffers[:string] = ast_node
  		end
		begin

    trace("PARAMETER a_parameter_eof")
    param_node = parameter()
    completed = true
    prefix_node = @buffers.delete(:param_prefix)
    unless prefix_node.nil?
      param_node <<= prefix_node
      unless prefix_node.complete
        completed = false
      end
    end

    string_value_node = @buffers.delete(:string)
    unless string_value_node.nil?
      param_node <<= string_value_node
      unless string_value_node.complete
        completed = false
      end
    else
      completed = false
    end

    param_node.complete = completed
    @buffers[:parameter] = param_node
  		end
		begin

    trace('TERM eof_parameter_argument')
    @buffers[:term_stack][-1].complete = false
    yield @buffers[:term_stack][-1]
  		end
	when 73 then
		begin

    trace('TERM eof_parameter_argument')
    @buffers[:term_stack][-1].complete = false
    yield @buffers[:term_stack][-1]
  		end
		begin

    trace('COMMENT stop_comment')
    p_end = p;
  		end
		begin

    trace('COMMENT comment_end')
    p_end = p
    chars = data[p_start...p_end]
    completed = !chars.empty?
    ast_node = comment(utf8_string(chars), complete: completed)
    @buffers[:comment] = ast_node
  		end
		begin

    @buffers[:comment] ||= comment(nil)
    comment = @buffers[:comment]
    term = @buffers[:term_stack][-1]
    subject_term = subject(term)
    rel = relationship(nil)
    obj = object(nil)
    stmt = observed_term(statement(subject_term, rel, obj, comment))
    stmt.complete = true
    yield stmt
  		end
	when 60 then
		begin

    trace('FUNCTION a_function_eof')
    if @function_started
      p_end = p
      chars = data[p_start...p_end]
      completed = !chars.empty?
      ident_node = identifier(utf8_string(chars), complete: completed, character_range: [p_start, p_end])
      fx_node = function(ident_node, complete: ident_node.complete, character_range: ident_node.character_range)
      @buffers[:function] = fx_node
    end
  		end
		begin

    trace('IDENTIFIER an_ident_eof')
    if @identifier_started
      id_end = p
      chars = data[id_start...id_end]
      completed = !chars.empty?
      ast_node = identifier(utf8_string(chars), complete: completed, character_range: [id_start, id_end])
      @buffers[:ident] = ast_node
    end
  		end
		begin

    trace('IDENTIFIER an_ident_err')
    id_end = p
    chars = data[id_start...id_end]
    ast_node = identifier(utf8_string(chars), complete: false, character_range: [id_start, id_end])
    @buffers[:ident] = ast_node
  		end
		begin

    trace('STRING a_string_err')
    p_end = p
    chars = data[p_start...p_end]
    ast_node = string(utf8_string(chars), complete: false, character_range: [p_start, p_end])
    @buffers[:string] = ast_node
  		end
		begin

    trace("PARAMETER a_parameter_eof")
    param_node = parameter()
    completed = true
    prefix_node = @buffers.delete(:param_prefix)
    unless prefix_node.nil?
      param_node <<= prefix_node
      unless prefix_node.complete
        completed = false
      end
    end

    string_value_node = @buffers.delete(:string)
    unless string_value_node.nil?
      param_node <<= string_value_node
      unless string_value_node.complete
        completed = false
      end
    else
      completed = false
    end

    param_node.complete = completed
    @buffers[:parameter] = param_node
  		end
	when 36 then
		begin

    trace('FUNCTION a_function_eof')
    if @function_started
      p_end = p
      chars = data[p_start...p_end]
      completed = !chars.empty?
      ident_node = identifier(utf8_string(chars), complete: completed, character_range: [p_start, p_end])
      fx_node = function(ident_node, complete: ident_node.complete, character_range: ident_node.character_range)
      @buffers[:function] = fx_node
    end
  		end
		begin

    trace('IDENTIFIER an_ident_eof')
    if @identifier_started
      id_end = p
      chars = data[id_start...id_end]
      completed = !chars.empty?
      ast_node = identifier(utf8_string(chars), complete: completed, character_range: [id_start, id_end])
      @buffers[:ident] = ast_node
    end
  		end
		begin

    trace('IDENTIFIER an_ident_err')
    id_end = p
    chars = data[id_start...id_end]
    ast_node = identifier(utf8_string(chars), complete: false, character_range: [id_start, id_end])
    @buffers[:ident] = ast_node
  		end
		begin

    trace('STRING a_string_err')
    p_end = p
    chars = data[p_start...p_end]
    ast_node = string(utf8_string(chars), complete: false, character_range: [p_start, p_end])
    @buffers[:string] = ast_node
  		end
		begin

    trace('TERM eof_parameter_argument')
    @buffers[:term_stack][-1].complete = false
    yield @buffers[:term_stack][-1]
  		end
	when 83 then
		begin

    trace('IDENTIFIER end_identifier')
    id_end = p
    chars = data[id_start...id_end]
    completed = !chars.empty?
    ast_node = identifier(utf8_string(chars), complete: completed, character_range: [id_start, id_end])
    @buffers[:ident] = ast_node
  		end
		begin

    trace('IDENTIFIER an_ident_eof')
    if @identifier_started
      id_end = p
      chars = data[id_start...id_end]
      completed = !chars.empty?
      ast_node = identifier(utf8_string(chars), complete: completed, character_range: [id_start, id_end])
      @buffers[:ident] = ast_node
    end
  		end
		begin

    trace('PARAMETER add_ident_param_value')
    ident = @buffers.delete(:ident)
    value_node = value(ident, complete: ident.complete, character_range: ident.character_range)
    @buffers[:param_value] = value_node
  		end
		begin

    trace('PARAMETER parameter_end')
    param_node = parameter()
    completed = true
    prefix_node = @buffers.delete(:param_prefix)
    if prefix_node
      param_node <<= prefix_node
      unless prefix_node.complete
        trace('PN incomplete')
        completed = false
      end
      param_start = prefix_node.range_start
    else
      prefix_node          = prefix(nil)
      prefix_node.complete = true

      trace('PN complete (no prefix)')
      param_node <<= prefix_node
      completed    = true
    end

    value_node = @buffers.delete(:param_value)
    unless value_node.nil?
      param_node <<= value_node
      unless value_node.complete
        trace('VN incomplete')
        completed = false
      end
      param_start ||= value_node.range_start
      param_node.character_range = [param_start, value_node.range_end]
    else
      completed = false
    end

    param_node.complete = completed
    @buffers[:parameter] = param_node
  		end
		begin

    trace('PARAMETER yield_parameter')
    yield @buffers[:parameter]
  		end
	when 85 then
		begin

    trace('IDENTIFIER an_ident_eof')
    if @identifier_started
      id_end = p
      chars = data[id_start...id_end]
      completed = !chars.empty?
      ast_node = identifier(utf8_string(chars), complete: completed, character_range: [id_start, id_end])
      @buffers[:ident] = ast_node
    end
  		end
		begin

    trace('IDENTIFIER end_identifier')
    id_end = p
    chars = data[id_start...id_end]
    completed = !chars.empty?
    ast_node = identifier(utf8_string(chars), complete: completed, character_range: [id_start, id_end])
    @buffers[:ident] = ast_node
  		end
		begin

    trace('PARAMETER add_ident_param_value')
    ident = @buffers.delete(:ident)
    value_node = value(ident, complete: ident.complete, character_range: ident.character_range)
    @buffers[:param_value] = value_node
  		end
		begin

    trace('PARAMETER parameter_end')
    param_node = parameter()
    completed = true
    prefix_node = @buffers.delete(:param_prefix)
    if prefix_node
      param_node <<= prefix_node
      unless prefix_node.complete
        trace('PN incomplete')
        completed = false
      end
      param_start = prefix_node.range_start
    else
      prefix_node          = prefix(nil)
      prefix_node.complete = true

      trace('PN complete (no prefix)')
      param_node <<= prefix_node
      completed    = true
    end

    value_node = @buffers.delete(:param_value)
    unless value_node.nil?
      param_node <<= value_node
      unless value_node.complete
        trace('VN incomplete')
        completed = false
      end
      param_start ||= value_node.range_start
      param_node.character_range = [param_start, value_node.range_end]
    else
      completed = false
    end

    param_node.complete = completed
    @buffers[:parameter] = param_node
  		end
		begin

    trace('PARAMETER yield_parameter')
    yield @buffers[:parameter]
  		end
	when 47 then
		begin

    trace('IDENTIFIER an_ident_eof')
    if @identifier_started
      id_end = p
      chars = data[id_start...id_end]
      completed = !chars.empty?
      ast_node = identifier(utf8_string(chars), complete: completed, character_range: [id_start, id_end])
      @buffers[:ident] = ast_node
    end
  		end
		begin

    trace('IDENTIFIER an_ident_err')
    id_end = p
    chars = data[id_start...id_end]
    ast_node = identifier(utf8_string(chars), complete: false, character_range: [id_start, id_end])
    @buffers[:ident] = ast_node
  		end
		begin

    trace('STRING a_string_err')
    p_end = p
    chars = data[p_start...p_end]
    ast_node = string(utf8_string(chars), complete: false, character_range: [p_start, p_end])
    @buffers[:string] = ast_node
  		end
		begin

    trace("PARAMETER a_parameter_eof")
    param_node = parameter()
    completed = true
    prefix_node = @buffers.delete(:param_prefix)
    unless prefix_node.nil?
      param_node <<= prefix_node
      unless prefix_node.complete
        completed = false
      end
    end

    string_value_node = @buffers.delete(:string)
    unless string_value_node.nil?
      param_node <<= string_value_node
      unless string_value_node.complete
        completed = false
      end
    else
      completed = false
    end

    param_node.complete = completed
    @buffers[:parameter] = param_node
  		end
		begin

    trace('FUNCTION a_function_eof')
    if @function_started
      p_end = p
      chars = data[p_start...p_end]
      completed = !chars.empty?
      ident_node = identifier(utf8_string(chars), complete: completed, character_range: [p_start, p_end])
      fx_node = function(ident_node, complete: ident_node.complete, character_range: ident_node.character_range)
      @buffers[:function] = fx_node
    end
  		end
	when 10 then
		begin

    trace('IDENTIFIER an_ident_eof')
    if @identifier_started
      id_end = p
      chars = data[id_start...id_end]
      completed = !chars.empty?
      ast_node = identifier(utf8_string(chars), complete: completed, character_range: [id_start, id_end])
      @buffers[:ident] = ast_node
    end
  		end
		begin

    trace('IDENTIFIER an_ident_err')
    id_end = p
    chars = data[id_start...id_end]
    ast_node = identifier(utf8_string(chars), complete: false, character_range: [id_start, id_end])
    @buffers[:ident] = ast_node
  		end
		begin

    trace('STRING a_string_err')
    p_end = p
    chars = data[p_start...p_end]
    ast_node = string(utf8_string(chars), complete: false, character_range: [p_start, p_end])
    @buffers[:string] = ast_node
  		end
		begin

    trace("PARAMETER a_parameter_eof")
    param_node = parameter()
    completed = true
    prefix_node = @buffers.delete(:param_prefix)
    unless prefix_node.nil?
      param_node <<= prefix_node
      unless prefix_node.complete
        completed = false
      end
    end

    string_value_node = @buffers.delete(:string)
    unless string_value_node.nil?
      param_node <<= string_value_node
      unless string_value_node.complete
        completed = false
      end
    else
      completed = false
    end

    param_node.complete = completed
    @buffers[:parameter] = param_node
  		end
		begin

    trace('TERM eof_parameter_argument')
    @buffers[:term_stack][-1].complete = false
    yield @buffers[:term_stack][-1]
  		end
	when 27 then
		begin

    trace('IDENTIFIER an_ident_eof')
    if @identifier_started
      id_end = p
      chars = data[id_start...id_end]
      completed = !chars.empty?
      ast_node = identifier(utf8_string(chars), complete: completed, character_range: [id_start, id_end])
      @buffers[:ident] = ast_node
    end
  		end
		begin

    trace('IDENTIFIER an_ident_err')
    id_end = p
    chars = data[id_start...id_end]
    ast_node = identifier(utf8_string(chars), complete: false, character_range: [id_start, id_end])
    @buffers[:ident] = ast_node
  		end
		begin

    trace('STRING a_string_err')
    p_end = p
    chars = data[p_start...p_end]
    ast_node = string(utf8_string(chars), complete: false, character_range: [p_start, p_end])
    @buffers[:string] = ast_node
  		end
		begin

    trace('TERM eof_parameter_argument')
    @buffers[:term_stack][-1].complete = false
    yield @buffers[:term_stack][-1]
  		end
		begin

    trace('FUNCTION a_function_eof')
    if @function_started
      p_end = p
      chars = data[p_start...p_end]
      completed = !chars.empty?
      ident_node = identifier(utf8_string(chars), complete: completed, character_range: [p_start, p_end])
      fx_node = function(ident_node, complete: ident_node.complete, character_range: ident_node.character_range)
      @buffers[:function] = fx_node
    end
  		end
	when 76 then
		begin

    trace('IDENTIFIER an_ident_eof')
    if @identifier_started
      id_end = p
      chars = data[id_start...id_end]
      completed = !chars.empty?
      ast_node = identifier(utf8_string(chars), complete: completed, character_range: [id_start, id_end])
      @buffers[:ident] = ast_node
    end
  		end
		begin

    trace('TERM eof_parameter_argument')
    @buffers[:term_stack][-1].complete = false
    yield @buffers[:term_stack][-1]
  		end
		begin

    trace('COMMENT stop_comment')
    p_end = p;
  		end
		begin

    trace('COMMENT comment_end')
    p_end = p
    chars = data[p_start...p_end]
    completed = !chars.empty?
    ast_node = comment(utf8_string(chars), complete: completed)
    @buffers[:comment] = ast_node
  		end
		begin

    @buffers[:comment] ||= comment(nil)
    comment = @buffers[:comment]
    term = @buffers[:term_stack][-1]
    subject_term = subject(term)
    rel = relationship(nil)
    obj = object(nil)
    stmt = observed_term(statement(subject_term, rel, obj, comment))
    stmt.complete = true
    yield stmt
  		end
	when 69 then
		begin

    trace("PARAMETER a_parameter_eof")
    param_node = parameter()
    completed = true
    prefix_node = @buffers.delete(:param_prefix)
    unless prefix_node.nil?
      param_node <<= prefix_node
      unless prefix_node.complete
        completed = false
      end
    end

    string_value_node = @buffers.delete(:string)
    unless string_value_node.nil?
      param_node <<= string_value_node
      unless string_value_node.complete
        completed = false
      end
    else
      completed = false
    end

    param_node.complete = completed
    @buffers[:parameter] = param_node
  		end
		begin

    trace('TERM eof_parameter_argument')
    @buffers[:term_stack][-1].complete = false
    yield @buffers[:term_stack][-1]
  		end
		begin

    trace('COMMENT stop_comment')
    p_end = p;
  		end
		begin

    trace('COMMENT comment_end')
    p_end = p
    chars = data[p_start...p_end]
    completed = !chars.empty?
    ast_node = comment(utf8_string(chars), complete: completed)
    @buffers[:comment] = ast_node
  		end
		begin

    @buffers[:comment] ||= comment(nil)
    comment = @buffers[:comment]
    term = @buffers[:term_stack][-1]
    subject_term = subject(term)
    rel = relationship(nil)
    obj = object(nil)
    stmt = observed_term(statement(subject_term, rel, obj, comment))
    stmt.complete = true
    yield stmt
  		end
	when 34 then
		begin

    trace('FUNCTION a_function_eof')
    if @function_started
      p_end = p
      chars = data[p_start...p_end]
      completed = !chars.empty?
      ident_node = identifier(utf8_string(chars), complete: completed, character_range: [p_start, p_end])
      fx_node = function(ident_node, complete: ident_node.complete, character_range: ident_node.character_range)
      @buffers[:function] = fx_node
    end
  		end
		begin

    trace('IDENTIFIER an_ident_eof')
    if @identifier_started
      id_end = p
      chars = data[id_start...id_end]
      completed = !chars.empty?
      ast_node = identifier(utf8_string(chars), complete: completed, character_range: [id_start, id_end])
      @buffers[:ident] = ast_node
    end
  		end
		begin

    trace('IDENTIFIER an_ident_err')
    id_end = p
    chars = data[id_start...id_end]
    ast_node = identifier(utf8_string(chars), complete: false, character_range: [id_start, id_end])
    @buffers[:ident] = ast_node
  		end
		begin

    trace('STRING a_string_err')
    p_end = p
    chars = data[p_start...p_end]
    ast_node = string(utf8_string(chars), complete: false, character_range: [p_start, p_end])
    @buffers[:string] = ast_node
  		end
		begin

    trace("PARAMETER a_parameter_eof")
    param_node = parameter()
    completed = true
    prefix_node = @buffers.delete(:param_prefix)
    unless prefix_node.nil?
      param_node <<= prefix_node
      unless prefix_node.complete
        completed = false
      end
    end

    string_value_node = @buffers.delete(:string)
    unless string_value_node.nil?
      param_node <<= string_value_node
      unless string_value_node.complete
        completed = false
      end
    else
      completed = false
    end

    param_node.complete = completed
    @buffers[:parameter] = param_node
  		end
		begin

    trace('TERM eof_parameter_argument')
    @buffers[:term_stack][-1].complete = false
    yield @buffers[:term_stack][-1]
  		end
	when 6 then
		begin

    trace('IDENTIFIER an_ident_eof')
    if @identifier_started
      id_end = p
      chars = data[id_start...id_end]
      completed = !chars.empty?
      ast_node = identifier(utf8_string(chars), complete: completed, character_range: [id_start, id_end])
      @buffers[:ident] = ast_node
    end
  		end
		begin

    trace('IDENTIFIER an_ident_err')
    id_end = p
    chars = data[id_start...id_end]
    ast_node = identifier(utf8_string(chars), complete: false, character_range: [id_start, id_end])
    @buffers[:ident] = ast_node
  		end
		begin

    trace('STRING a_string_err')
    p_end = p
    chars = data[p_start...p_end]
    ast_node = string(utf8_string(chars), complete: false, character_range: [p_start, p_end])
    @buffers[:string] = ast_node
  		end
		begin

    trace("PARAMETER a_parameter_eof")
    param_node = parameter()
    completed = true
    prefix_node = @buffers.delete(:param_prefix)
    unless prefix_node.nil?
      param_node <<= prefix_node
      unless prefix_node.complete
        completed = false
      end
    end

    string_value_node = @buffers.delete(:string)
    unless string_value_node.nil?
      param_node <<= string_value_node
      unless string_value_node.complete
        completed = false
      end
    else
      completed = false
    end

    param_node.complete = completed
    @buffers[:parameter] = param_node
  		end
		begin

    trace('TERM eof_parameter_argument')
    @buffers[:term_stack][-1].complete = false
    yield @buffers[:term_stack][-1]
  		end
		begin

    trace('FUNCTION a_function_eof')
    if @function_started
      p_end = p
      chars = data[p_start...p_end]
      completed = !chars.empty?
      ident_node = identifier(utf8_string(chars), complete: completed, character_range: [p_start, p_end])
      fx_node = function(ident_node, complete: ident_node.complete, character_range: ident_node.character_range)
      @buffers[:function] = fx_node
    end
  		end
	when 74 then
		begin

    trace('IDENTIFIER an_ident_eof')
    if @identifier_started
      id_end = p
      chars = data[id_start...id_end]
      completed = !chars.empty?
      ast_node = identifier(utf8_string(chars), complete: completed, character_range: [id_start, id_end])
      @buffers[:ident] = ast_node
    end
  		end
		begin

    trace('TERM eof_parameter_argument')
    @buffers[:term_stack][-1].complete = false
    yield @buffers[:term_stack][-1]
  		end
		begin

    trace('FUNCTION a_function_eof')
    if @function_started
      p_end = p
      chars = data[p_start...p_end]
      completed = !chars.empty?
      ident_node = identifier(utf8_string(chars), complete: completed, character_range: [p_start, p_end])
      fx_node = function(ident_node, complete: ident_node.complete, character_range: ident_node.character_range)
      @buffers[:function] = fx_node
    end
  		end
		begin

    trace('COMMENT stop_comment')
    p_end = p;
  		end
		begin

    trace('COMMENT comment_end')
    p_end = p
    chars = data[p_start...p_end]
    completed = !chars.empty?
    ast_node = comment(utf8_string(chars), complete: completed)
    @buffers[:comment] = ast_node
  		end
		begin

    @buffers[:comment] ||= comment(nil)
    comment = @buffers[:comment]
    term = @buffers[:term_stack][-1]
    subject_term = subject(term)
    rel = relationship(nil)
    obj = object(nil)
    stmt = observed_term(statement(subject_term, rel, obj, comment))
    stmt.complete = true
    yield stmt
  		end
	when 70 then
		begin

    trace('STRING eof_string')
    p_end = p
    chars = data[p_start...p_end]
    ast_node = string(utf8_string(chars), complete: false, character_range: [p_start, p_end])
    @buffers[:string] = ast_node
  		end
		begin

    trace("PARAMETER a_parameter_eof")
    param_node = parameter()
    completed = true
    prefix_node = @buffers.delete(:param_prefix)
    unless prefix_node.nil?
      param_node <<= prefix_node
      unless prefix_node.complete
        completed = false
      end
    end

    string_value_node = @buffers.delete(:string)
    unless string_value_node.nil?
      param_node <<= string_value_node
      unless string_value_node.complete
        completed = false
      end
    else
      completed = false
    end

    param_node.complete = completed
    @buffers[:parameter] = param_node
  		end
		begin

    trace('TERM eof_parameter_argument')
    @buffers[:term_stack][-1].complete = false
    yield @buffers[:term_stack][-1]
  		end
		begin

    trace('COMMENT stop_comment')
    p_end = p;
  		end
		begin

    trace('COMMENT comment_end')
    p_end = p
    chars = data[p_start...p_end]
    completed = !chars.empty?
    ast_node = comment(utf8_string(chars), complete: completed)
    @buffers[:comment] = ast_node
  		end
		begin

    @buffers[:comment] ||= comment(nil)
    comment = @buffers[:comment]
    term = @buffers[:term_stack][-1]
    subject_term = subject(term)
    rel = relationship(nil)
    obj = object(nil)
    stmt = observed_term(statement(subject_term, rel, obj, comment))
    stmt.complete = true
    yield stmt
  		end
	when 67 then
		begin

    trace('IDENTIFIER an_ident_eof')
    if @identifier_started
      id_end = p
      chars = data[id_start...id_end]
      completed = !chars.empty?
      ast_node = identifier(utf8_string(chars), complete: completed, character_range: [id_start, id_end])
      @buffers[:ident] = ast_node
    end
  		end
		begin

    trace("PARAMETER a_parameter_eof")
    param_node = parameter()
    completed = true
    prefix_node = @buffers.delete(:param_prefix)
    unless prefix_node.nil?
      param_node <<= prefix_node
      unless prefix_node.complete
        completed = false
      end
    end

    string_value_node = @buffers.delete(:string)
    unless string_value_node.nil?
      param_node <<= string_value_node
      unless string_value_node.complete
        completed = false
      end
    else
      completed = false
    end

    param_node.complete = completed
    @buffers[:parameter] = param_node
  		end
		begin

    trace('TERM eof_parameter_argument')
    @buffers[:term_stack][-1].complete = false
    yield @buffers[:term_stack][-1]
  		end
		begin

    trace('FUNCTION a_function_eof')
    if @function_started
      p_end = p
      chars = data[p_start...p_end]
      completed = !chars.empty?
      ident_node = identifier(utf8_string(chars), complete: completed, character_range: [p_start, p_end])
      fx_node = function(ident_node, complete: ident_node.complete, character_range: ident_node.character_range)
      @buffers[:function] = fx_node
    end
  		end
		begin

    trace('COMMENT stop_comment')
    p_end = p;
  		end
		begin

    trace('COMMENT comment_end')
    p_end = p
    chars = data[p_start...p_end]
    completed = !chars.empty?
    ast_node = comment(utf8_string(chars), complete: completed)
    @buffers[:comment] = ast_node
  		end
		begin

    @buffers[:comment] ||= comment(nil)
    comment = @buffers[:comment]
    term = @buffers[:term_stack][-1]
    subject_term = subject(term)
    rel = relationship(nil)
    obj = object(nil)
    stmt = observed_term(statement(subject_term, rel, obj, comment))
    stmt.complete = true
    yield stmt
  		end
	  end
	end

	end
	if _goto_level <= _out
		break
	end
end
	end

      # end: ragel
end