lib/graphql/language/lexer.rb



# line 1 "lib/graphql/language/lexer.rl"

# line 98 "lib/graphql/language/lexer.rl"



module GraphQL
  module Language
    module Lexer
      def self.tokenize(query_string)
        run_lexer(query_string)
      end

      # Replace any escaped unicode or whitespace with the _actual_ characters
      # To avoid allocating more strings, this modifies the string passed into it
      def self.replace_escaped_characters_in_place(raw_string)
        raw_string.gsub!(ESCAPES, ESCAPES_REPLACE)
        raw_string.gsub!(UTF_8, &UTF_8_REPLACE)
        nil
      end

      private

      
# line 27 "lib/graphql/language/lexer.rb"
class << self
	attr_accessor :_graphql_lexer_actions
	private :_graphql_lexer_actions, :_graphql_lexer_actions=
end
self._graphql_lexer_actions = [
	0, 1, 0, 1, 1, 1, 2, 1, 
	25, 1, 26, 1, 27, 1, 28, 1, 
	29, 1, 30, 1, 31, 1, 32, 1, 
	33, 1, 34, 1, 35, 1, 36, 1, 
	37, 1, 38, 1, 39, 1, 40, 1, 
	41, 1, 42, 1, 43, 1, 44, 1, 
	45, 1, 46, 1, 47, 1, 48, 1, 
	49, 2, 2, 3, 2, 2, 4, 2, 
	2, 5, 2, 2, 6, 2, 2, 7, 
	2, 2, 8, 2, 2, 9, 2, 2, 
	10, 2, 2, 11, 2, 2, 12, 2, 
	2, 13, 2, 2, 14, 2, 2, 15, 
	2, 2, 16, 2, 2, 17, 2, 2, 
	18, 2, 2, 19, 2, 2, 20, 2, 
	2, 21, 2, 2, 22, 2, 2, 23, 
	2, 2, 24
]

class << self
	attr_accessor :_graphql_lexer_key_offsets
	private :_graphql_lexer_key_offsets, :_graphql_lexer_key_offsets=
end
self._graphql_lexer_key_offsets = [
	0, 2, 4, 6, 8, 12, 13, 53, 
	56, 58, 60, 63, 70, 72, 78, 85, 
	86, 93, 101, 109, 117, 125, 133, 141, 
	149, 157, 165, 173, 181, 190, 198, 206, 
	214, 222, 230, 238, 246, 254, 262, 271, 
	279, 287, 295, 303, 311, 319, 327, 335, 
	344, 352, 360, 368, 376, 384, 392, 400, 
	408, 416, 424, 432, 440, 448, 456, 464, 
	472, 480, 488, 496, 504, 512, 520, 528, 
	537, 546, 554, 562, 570, 578, 586, 594, 
	602, 610, 618, 626, 634, 642, 650, 658, 
	666, 674, 683, 691, 699, 707, 715, 723, 
	731, 739
]

class << self
	attr_accessor :_graphql_lexer_trans_keys
	private :_graphql_lexer_trans_keys, :_graphql_lexer_trans_keys=
end
self._graphql_lexer_trans_keys = [
	34, 92, 34, 92, 48, 57, 48, 57, 
	43, 45, 48, 57, 46, 9, 10, 13, 
	32, 33, 34, 35, 36, 40, 41, 44, 
	45, 46, 48, 58, 61, 64, 91, 93, 
	95, 100, 101, 102, 105, 109, 110, 111, 
	113, 115, 116, 117, 123, 124, 125, 49, 
	57, 65, 90, 97, 122, 9, 32, 44, 
	34, 92, 10, 13, 48, 49, 57, 43, 
	45, 46, 69, 101, 48, 57, 48, 57, 
	43, 45, 69, 101, 48, 57, 43, 45, 
	46, 69, 101, 48, 57, 46, 95, 48, 
	57, 65, 90, 97, 122, 95, 105, 48, 
	57, 65, 90, 97, 122, 95, 114, 48, 
	57, 65, 90, 97, 122, 95, 101, 48, 
	57, 65, 90, 97, 122, 95, 99, 48, 
	57, 65, 90, 97, 122, 95, 116, 48, 
	57, 65, 90, 97, 122, 95, 105, 48, 
	57, 65, 90, 97, 122, 95, 118, 48, 
	57, 65, 90, 97, 122, 95, 101, 48, 
	57, 65, 90, 97, 122, 95, 110, 48, 
	57, 65, 90, 97, 122, 95, 117, 48, 
	57, 65, 90, 97, 122, 95, 109, 48, 
	57, 65, 90, 97, 122, 95, 97, 114, 
	48, 57, 65, 90, 98, 122, 95, 108, 
	48, 57, 65, 90, 97, 122, 95, 115, 
	48, 57, 65, 90, 97, 122, 95, 101, 
	48, 57, 65, 90, 97, 122, 95, 97, 
	48, 57, 65, 90, 98, 122, 95, 103, 
	48, 57, 65, 90, 97, 122, 95, 109, 
	48, 57, 65, 90, 97, 122, 95, 101, 
	48, 57, 65, 90, 97, 122, 95, 110, 
	48, 57, 65, 90, 97, 122, 95, 116, 
	48, 57, 65, 90, 97, 122, 95, 109, 
	110, 48, 57, 65, 90, 97, 122, 95, 
	112, 48, 57, 65, 90, 97, 122, 95, 
	108, 48, 57, 65, 90, 97, 122, 95, 
	101, 48, 57, 65, 90, 97, 122, 95, 
	109, 48, 57, 65, 90, 97, 122, 95, 
	101, 48, 57, 65, 90, 97, 122, 95, 
	110, 48, 57, 65, 90, 97, 122, 95, 
	116, 48, 57, 65, 90, 97, 122, 95, 
	115, 48, 57, 65, 90, 97, 122, 95, 
	112, 116, 48, 57, 65, 90, 97, 122, 
	95, 117, 48, 57, 65, 90, 97, 122, 
	95, 116, 48, 57, 65, 90, 97, 122, 
	95, 101, 48, 57, 65, 90, 97, 122, 
	95, 114, 48, 57, 65, 90, 97, 122, 
	95, 102, 48, 57, 65, 90, 97, 122, 
	95, 97, 48, 57, 65, 90, 98, 122, 
	95, 99, 48, 57, 65, 90, 97, 122, 
	95, 101, 48, 57, 65, 90, 97, 122, 
	95, 117, 48, 57, 65, 90, 97, 122, 
	95, 116, 48, 57, 65, 90, 97, 122, 
	95, 97, 48, 57, 65, 90, 98, 122, 
	95, 116, 48, 57, 65, 90, 97, 122, 
	95, 105, 48, 57, 65, 90, 97, 122, 
	95, 111, 48, 57, 65, 90, 97, 122, 
	95, 110, 48, 57, 65, 90, 97, 122, 
	95, 117, 48, 57, 65, 90, 97, 122, 
	95, 108, 48, 57, 65, 90, 97, 122, 
	95, 108, 48, 57, 65, 90, 97, 122, 
	95, 110, 48, 57, 65, 90, 97, 122, 
	95, 117, 48, 57, 65, 90, 97, 122, 
	95, 101, 48, 57, 65, 90, 97, 122, 
	95, 114, 48, 57, 65, 90, 97, 122, 
	95, 121, 48, 57, 65, 90, 97, 122, 
	95, 99, 117, 48, 57, 65, 90, 97, 
	122, 95, 97, 104, 48, 57, 65, 90, 
	98, 122, 95, 108, 48, 57, 65, 90, 
	97, 122, 95, 97, 48, 57, 65, 90, 
	98, 122, 95, 114, 48, 57, 65, 90, 
	97, 122, 95, 101, 48, 57, 65, 90, 
	97, 122, 95, 109, 48, 57, 65, 90, 
	97, 122, 95, 97, 48, 57, 65, 90, 
	98, 122, 95, 98, 48, 57, 65, 90, 
	97, 122, 95, 115, 48, 57, 65, 90, 
	97, 122, 95, 99, 48, 57, 65, 90, 
	97, 122, 95, 114, 48, 57, 65, 90, 
	97, 122, 95, 105, 48, 57, 65, 90, 
	97, 122, 95, 112, 48, 57, 65, 90, 
	97, 122, 95, 116, 48, 57, 65, 90, 
	97, 122, 95, 105, 48, 57, 65, 90, 
	97, 122, 95, 111, 48, 57, 65, 90, 
	97, 122, 95, 110, 48, 57, 65, 90, 
	97, 122, 95, 114, 121, 48, 57, 65, 
	90, 97, 122, 95, 117, 48, 57, 65, 
	90, 97, 122, 95, 101, 48, 57, 65, 
	90, 97, 122, 95, 112, 48, 57, 65, 
	90, 97, 122, 95, 101, 48, 57, 65, 
	90, 97, 122, 95, 110, 48, 57, 65, 
	90, 97, 122, 95, 105, 48, 57, 65, 
	90, 97, 122, 95, 111, 48, 57, 65, 
	90, 97, 122, 95, 110, 48, 57, 65, 
	90, 97, 122, 0
]

class << self
	attr_accessor :_graphql_lexer_single_lengths
	private :_graphql_lexer_single_lengths, :_graphql_lexer_single_lengths=
end
self._graphql_lexer_single_lengths = [
	2, 2, 0, 0, 2, 1, 34, 3, 
	2, 2, 1, 5, 0, 4, 5, 1, 
	1, 2, 2, 2, 2, 2, 2, 2, 
	2, 2, 2, 2, 3, 2, 2, 2, 
	2, 2, 2, 2, 2, 2, 3, 2, 
	2, 2, 2, 2, 2, 2, 2, 3, 
	2, 2, 2, 2, 2, 2, 2, 2, 
	2, 2, 2, 2, 2, 2, 2, 2, 
	2, 2, 2, 2, 2, 2, 2, 3, 
	3, 2, 2, 2, 2, 2, 2, 2, 
	2, 2, 2, 2, 2, 2, 2, 2, 
	2, 3, 2, 2, 2, 2, 2, 2, 
	2, 2
]

class << self
	attr_accessor :_graphql_lexer_range_lengths
	private :_graphql_lexer_range_lengths, :_graphql_lexer_range_lengths=
end
self._graphql_lexer_range_lengths = [
	0, 0, 1, 1, 1, 0, 3, 0, 
	0, 0, 1, 1, 1, 1, 1, 0, 
	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
]

class << self
	attr_accessor :_graphql_lexer_index_offsets
	private :_graphql_lexer_index_offsets, :_graphql_lexer_index_offsets=
end
self._graphql_lexer_index_offsets = [
	0, 3, 6, 8, 10, 14, 16, 54, 
	58, 61, 64, 67, 74, 76, 82, 89, 
	91, 96, 102, 108, 114, 120, 126, 132, 
	138, 144, 150, 156, 162, 169, 175, 181, 
	187, 193, 199, 205, 211, 217, 223, 230, 
	236, 242, 248, 254, 260, 266, 272, 278, 
	285, 291, 297, 303, 309, 315, 321, 327, 
	333, 339, 345, 351, 357, 363, 369, 375, 
	381, 387, 393, 399, 405, 411, 417, 423, 
	430, 437, 443, 449, 455, 461, 467, 473, 
	479, 485, 491, 497, 503, 509, 515, 521, 
	527, 533, 540, 546, 552, 558, 564, 570, 
	576, 582
]

class << self
	attr_accessor :_graphql_lexer_trans_targs
	private :_graphql_lexer_trans_targs, :_graphql_lexer_trans_targs=
end
self._graphql_lexer_trans_targs = [
	6, 1, 0, 8, 1, 0, 12, 6, 
	13, 6, 2, 2, 12, 6, 6, 6, 
	7, 6, 6, 7, 6, 8, 9, 6, 
	6, 6, 7, 10, 15, 11, 6, 6, 
	6, 6, 6, 16, 17, 25, 28, 38, 
	56, 63, 66, 67, 71, 89, 94, 6, 
	6, 6, 14, 16, 16, 6, 7, 7, 
	7, 6, 6, 1, 0, 6, 6, 9, 
	11, 14, 6, 2, 2, 3, 4, 4, 
	12, 6, 12, 6, 2, 2, 4, 4, 
	13, 6, 2, 2, 3, 4, 4, 14, 
	6, 5, 6, 16, 16, 16, 16, 6, 
	16, 18, 16, 16, 16, 6, 16, 19, 
	16, 16, 16, 6, 16, 20, 16, 16, 
	16, 6, 16, 21, 16, 16, 16, 6, 
	16, 22, 16, 16, 16, 6, 16, 23, 
	16, 16, 16, 6, 16, 24, 16, 16, 
	16, 6, 16, 16, 16, 16, 16, 6, 
	16, 26, 16, 16, 16, 6, 16, 27, 
	16, 16, 16, 6, 16, 16, 16, 16, 
	16, 6, 16, 29, 32, 16, 16, 16, 
	6, 16, 30, 16, 16, 16, 6, 16, 
	31, 16, 16, 16, 6, 16, 16, 16, 
	16, 16, 6, 16, 33, 16, 16, 16, 
	6, 16, 34, 16, 16, 16, 6, 16, 
	35, 16, 16, 16, 6, 16, 36, 16, 
	16, 16, 6, 16, 37, 16, 16, 16, 
	6, 16, 16, 16, 16, 16, 6, 16, 
	39, 47, 16, 16, 16, 6, 16, 40, 
	16, 16, 16, 6, 16, 41, 16, 16, 
	16, 6, 16, 42, 16, 16, 16, 6, 
	16, 43, 16, 16, 16, 6, 16, 44, 
	16, 16, 16, 6, 16, 45, 16, 16, 
	16, 6, 16, 46, 16, 16, 16, 6, 
	16, 16, 16, 16, 16, 6, 16, 48, 
	50, 16, 16, 16, 6, 16, 49, 16, 
	16, 16, 6, 16, 16, 16, 16, 16, 
	6, 16, 51, 16, 16, 16, 6, 16, 
	52, 16, 16, 16, 6, 16, 53, 16, 
	16, 16, 6, 16, 54, 16, 16, 16, 
	6, 16, 55, 16, 16, 16, 6, 16, 
	16, 16, 16, 16, 6, 16, 57, 16, 
	16, 16, 6, 16, 58, 16, 16, 16, 
	6, 16, 59, 16, 16, 16, 6, 16, 
	60, 16, 16, 16, 6, 16, 61, 16, 
	16, 16, 6, 16, 62, 16, 16, 16, 
	6, 16, 16, 16, 16, 16, 6, 16, 
	64, 16, 16, 16, 6, 16, 65, 16, 
	16, 16, 6, 16, 16, 16, 16, 16, 
	6, 16, 16, 16, 16, 16, 6, 16, 
	68, 16, 16, 16, 6, 16, 69, 16, 
	16, 16, 6, 16, 70, 16, 16, 16, 
	6, 16, 16, 16, 16, 16, 6, 16, 
	72, 79, 16, 16, 16, 6, 16, 73, 
	76, 16, 16, 16, 6, 16, 74, 16, 
	16, 16, 6, 16, 75, 16, 16, 16, 
	6, 16, 16, 16, 16, 16, 6, 16, 
	77, 16, 16, 16, 6, 16, 78, 16, 
	16, 16, 6, 16, 16, 16, 16, 16, 
	6, 16, 80, 16, 16, 16, 6, 16, 
	81, 16, 16, 16, 6, 16, 82, 16, 
	16, 16, 6, 16, 83, 16, 16, 16, 
	6, 16, 84, 16, 16, 16, 6, 16, 
	85, 16, 16, 16, 6, 16, 86, 16, 
	16, 16, 6, 16, 87, 16, 16, 16, 
	6, 16, 88, 16, 16, 16, 6, 16, 
	16, 16, 16, 16, 6, 16, 90, 92, 
	16, 16, 16, 6, 16, 91, 16, 16, 
	16, 6, 16, 16, 16, 16, 16, 6, 
	16, 93, 16, 16, 16, 6, 16, 16, 
	16, 16, 16, 6, 16, 95, 16, 16, 
	16, 6, 16, 96, 16, 16, 16, 6, 
	16, 97, 16, 16, 16, 6, 16, 16, 
	16, 16, 16, 6, 6, 6, 6, 6, 
	6, 6, 6, 6, 6, 6, 6, 6, 
	6, 6, 6, 6, 6, 6, 6, 6, 
	6, 6, 6, 6, 6, 6, 6, 6, 
	6, 6, 6, 6, 6, 6, 6, 6, 
	6, 6, 6, 6, 6, 6, 6, 6, 
	6, 6, 6, 6, 6, 6, 6, 6, 
	6, 6, 6, 6, 6, 6, 6, 6, 
	6, 6, 6, 6, 6, 6, 6, 6, 
	6, 6, 6, 6, 6, 6, 6, 6, 
	6, 6, 6, 6, 6, 6, 6, 6, 
	6, 6, 6, 6, 6, 6, 6, 6, 
	6, 6, 6, 6, 6, 0
]

class << self
	attr_accessor :_graphql_lexer_trans_actions
	private :_graphql_lexer_trans_actions, :_graphql_lexer_trans_actions=
end
self._graphql_lexer_trans_actions = [
	21, 0, 0, 114, 0, 0, 0, 55, 
	60, 51, 0, 0, 0, 55, 27, 53, 
	0, 35, 35, 0, 31, 120, 0, 23, 
	13, 11, 0, 0, 5, 57, 19, 29, 
	25, 17, 15, 117, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 9, 
	33, 7, 57, 117, 117, 37, 0, 0, 
	0, 47, 21, 0, 0, 45, 45, 0, 
	57, 57, 49, 0, 0, 0, 0, 0, 
	0, 39, 0, 41, 0, 0, 0, 0, 
	60, 41, 0, 0, 0, 0, 0, 57, 
	39, 0, 49, 117, 117, 117, 117, 55, 
	117, 0, 117, 117, 117, 43, 117, 0, 
	117, 117, 117, 43, 117, 0, 117, 117, 
	117, 43, 117, 0, 117, 117, 117, 43, 
	117, 0, 117, 117, 117, 43, 117, 0, 
	117, 117, 117, 43, 117, 0, 117, 117, 
	117, 43, 117, 111, 117, 117, 117, 43, 
	117, 0, 117, 117, 117, 43, 117, 0, 
	117, 117, 117, 43, 117, 105, 117, 117, 
	117, 43, 117, 0, 0, 117, 117, 117, 
	43, 117, 0, 117, 117, 117, 43, 117, 
	0, 117, 117, 117, 43, 117, 72, 117, 
	117, 117, 43, 117, 0, 117, 117, 117, 
	43, 117, 0, 117, 117, 117, 43, 117, 
	0, 117, 117, 117, 43, 117, 0, 117, 
	117, 117, 43, 117, 0, 117, 117, 117, 
	43, 117, 66, 117, 117, 117, 43, 117, 
	0, 0, 117, 117, 117, 43, 117, 0, 
	117, 117, 117, 43, 117, 0, 117, 117, 
	117, 43, 117, 0, 117, 117, 117, 43, 
	117, 0, 117, 117, 117, 43, 117, 0, 
	117, 117, 117, 43, 117, 0, 117, 117, 
	117, 43, 117, 0, 117, 117, 117, 43, 
	117, 96, 117, 117, 117, 43, 117, 0, 
	0, 117, 117, 117, 43, 117, 0, 117, 
	117, 117, 43, 117, 108, 117, 117, 117, 
	43, 117, 0, 117, 117, 117, 43, 117, 
	0, 117, 117, 117, 43, 117, 0, 117, 
	117, 117, 43, 117, 0, 117, 117, 117, 
	43, 117, 0, 117, 117, 117, 43, 117, 
	99, 117, 117, 117, 43, 117, 0, 117, 
	117, 117, 43, 117, 0, 117, 117, 117, 
	43, 117, 0, 117, 117, 117, 43, 117, 
	0, 117, 117, 117, 43, 117, 0, 117, 
	117, 117, 43, 117, 0, 117, 117, 117, 
	43, 117, 81, 117, 117, 117, 43, 117, 
	0, 117, 117, 117, 43, 117, 0, 117, 
	117, 117, 43, 117, 75, 117, 117, 117, 
	43, 117, 63, 117, 117, 117, 43, 117, 
	0, 117, 117, 117, 43, 117, 0, 117, 
	117, 117, 43, 117, 0, 117, 117, 117, 
	43, 117, 78, 117, 117, 117, 43, 117, 
	0, 0, 117, 117, 117, 43, 117, 0, 
	0, 117, 117, 117, 43, 117, 0, 117, 
	117, 117, 43, 117, 0, 117, 117, 117, 
	43, 117, 90, 117, 117, 117, 43, 117, 
	0, 117, 117, 117, 43, 117, 0, 117, 
	117, 117, 43, 117, 87, 117, 117, 117, 
	43, 117, 0, 117, 117, 117, 43, 117, 
	0, 117, 117, 117, 43, 117, 0, 117, 
	117, 117, 43, 117, 0, 117, 117, 117, 
	43, 117, 0, 117, 117, 117, 43, 117, 
	0, 117, 117, 117, 43, 117, 0, 117, 
	117, 117, 43, 117, 0, 117, 117, 117, 
	43, 117, 0, 117, 117, 117, 43, 117, 
	84, 117, 117, 117, 43, 117, 0, 0, 
	117, 117, 117, 43, 117, 0, 117, 117, 
	117, 43, 117, 69, 117, 117, 117, 43, 
	117, 0, 117, 117, 117, 43, 117, 93, 
	117, 117, 117, 43, 117, 0, 117, 117, 
	117, 43, 117, 0, 117, 117, 117, 43, 
	117, 0, 117, 117, 117, 43, 117, 102, 
	117, 117, 117, 43, 55, 55, 55, 51, 
	55, 53, 47, 55, 45, 49, 39, 41, 
	41, 39, 49, 55, 43, 43, 43, 43, 
	43, 43, 43, 43, 43, 43, 43, 43, 
	43, 43, 43, 43, 43, 43, 43, 43, 
	43, 43, 43, 43, 43, 43, 43, 43, 
	43, 43, 43, 43, 43, 43, 43, 43, 
	43, 43, 43, 43, 43, 43, 43, 43, 
	43, 43, 43, 43, 43, 43, 43, 43, 
	43, 43, 43, 43, 43, 43, 43, 43, 
	43, 43, 43, 43, 43, 43, 43, 43, 
	43, 43, 43, 43, 43, 43, 43, 43, 
	43, 43, 43, 43, 43, 0
]

class << self
	attr_accessor :_graphql_lexer_to_state_actions
	private :_graphql_lexer_to_state_actions, :_graphql_lexer_to_state_actions=
end
self._graphql_lexer_to_state_actions = [
	0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 
	0, 0
]

class << self
	attr_accessor :_graphql_lexer_from_state_actions
	private :_graphql_lexer_from_state_actions, :_graphql_lexer_from_state_actions=
end
self._graphql_lexer_from_state_actions = [
	0, 0, 0, 0, 0, 0, 3, 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, 0, 0, 0, 
	0, 0
]

class << self
	attr_accessor :_graphql_lexer_eof_trans
	private :_graphql_lexer_eof_trans, :_graphql_lexer_eof_trans=
end
self._graphql_lexer_eof_trans = [
	604, 604, 604, 592, 604, 594, 0, 595, 
	604, 597, 603, 602, 601, 601, 602, 603, 
	604, 685, 685, 685, 685, 685, 685, 685, 
	685, 685, 685, 685, 685, 685, 685, 685, 
	685, 685, 685, 685, 685, 685, 685, 685, 
	685, 685, 685, 685, 685, 685, 685, 685, 
	685, 685, 685, 685, 685, 685, 685, 685, 
	685, 685, 685, 685, 685, 685, 685, 685, 
	685, 685, 685, 685, 685, 685, 685, 685, 
	685, 685, 685, 685, 685, 685, 685, 685, 
	685, 685, 685, 685, 685, 685, 685, 685, 
	685, 685, 685, 685, 685, 685, 685, 685, 
	685, 685
]

class << self
	attr_accessor :graphql_lexer_start
end
self.graphql_lexer_start = 6;
class << self
	attr_accessor :graphql_lexer_first_final
end
self.graphql_lexer_first_final = 6;
class << self
	attr_accessor :graphql_lexer_error
end
self.graphql_lexer_error = -1;

class << self
	attr_accessor :graphql_lexer_en_main
end
self.graphql_lexer_en_main = 6;


# line 119 "lib/graphql/language/lexer.rl"

      def self.run_lexer(query_string)
        data = query_string.unpack("c*")
        eof = data.length

        # Since `Lexer` is a module, store all lexer state
        # in this local variable:
        meta = {
          line: 1,
          col: 1,
          data: data,
          tokens: [],
          previous_token: nil,
        }

        
# line 514 "lib/graphql/language/lexer.rb"
begin
	p ||= 0
	pe ||= data.length
	cs = graphql_lexer_start
	ts = nil
	te = nil
	act = 0
end

# line 135 "lib/graphql/language/lexer.rl"

        emit_token = ->(name) {
          emit(name, ts, te, meta)
        }

        
# line 531 "lib/graphql/language/lexer.rb"
begin
	_klen, _trans, _keys, _acts, _nacts = nil
	_goto_level = 0
	_resume = 10
	_eof_trans = 15
	_again = 20
	_test_eof = 30
	_out = 40
	while true
	_trigger_goto = false
	if _goto_level <= 0
	if p == pe
		_goto_level = _test_eof
		next
	end
	end
	if _goto_level <= _resume
	_acts = _graphql_lexer_from_state_actions[cs]
	_nacts = _graphql_lexer_actions[_acts]
	_acts += 1
	while _nacts > 0
		_nacts -= 1
		_acts += 1
		case _graphql_lexer_actions[_acts - 1]
			when 1 then
# line 1 "NONE"
		begin
ts = p
		end
# line 561 "lib/graphql/language/lexer.rb"
		end # from state action switch
	end
	if _trigger_goto
		next
	end
	_keys = _graphql_lexer_key_offsets[cs]
	_trans = _graphql_lexer_index_offsets[cs]
	_klen = _graphql_lexer_single_lengths[cs]
	_break_match = false
	
	begin
	  if _klen > 0
	     _lower = _keys
	     _upper = _keys + _klen - 1

	     loop do
	        break if _upper < _lower
	        _mid = _lower + ( (_upper - _lower) >> 1 )

	        if data[p].ord < _graphql_lexer_trans_keys[_mid]
	           _upper = _mid - 1
	        elsif data[p].ord > _graphql_lexer_trans_keys[_mid]
	           _lower = _mid + 1
	        else
	           _trans += (_mid - _keys)
	           _break_match = true
	           break
	        end
	     end # loop
	     break if _break_match
	     _keys += _klen
	     _trans += _klen
	  end
	  _klen = _graphql_lexer_range_lengths[cs]
	  if _klen > 0
	     _lower = _keys
	     _upper = _keys + (_klen << 1) - 2
	     loop do
	        break if _upper < _lower
	        _mid = _lower + (((_upper-_lower) >> 1) & ~1)
	        if data[p].ord < _graphql_lexer_trans_keys[_mid]
	          _upper = _mid - 2
	        elsif data[p].ord > _graphql_lexer_trans_keys[_mid+1]
	          _lower = _mid + 2
	        else
	          _trans += ((_mid - _keys) >> 1)
	          _break_match = true
	          break
	        end
	     end # loop
	     break if _break_match
	     _trans += _klen
	  end
	end while false
	end
	if _goto_level <= _eof_trans
	cs = _graphql_lexer_trans_targs[_trans]
	if _graphql_lexer_trans_actions[_trans] != 0
		_acts = _graphql_lexer_trans_actions[_trans]
		_nacts = _graphql_lexer_actions[_acts]
		_acts += 1
		while _nacts > 0
			_nacts -= 1
			_acts += 1
			case _graphql_lexer_actions[_acts - 1]
when 2 then
# line 1 "NONE"
		begin
te = p+1
		end
when 3 then
# line 52 "lib/graphql/language/lexer.rl"
		begin
act = 1;		end
when 4 then
# line 53 "lib/graphql/language/lexer.rl"
		begin
act = 2;		end
when 5 then
# line 54 "lib/graphql/language/lexer.rl"
		begin
act = 3;		end
when 6 then
# line 55 "lib/graphql/language/lexer.rl"
		begin
act = 4;		end
when 7 then
# line 56 "lib/graphql/language/lexer.rl"
		begin
act = 5;		end
when 8 then
# line 57 "lib/graphql/language/lexer.rl"
		begin
act = 6;		end
when 9 then
# line 58 "lib/graphql/language/lexer.rl"
		begin
act = 7;		end
when 10 then
# line 59 "lib/graphql/language/lexer.rl"
		begin
act = 8;		end
when 11 then
# line 60 "lib/graphql/language/lexer.rl"
		begin
act = 9;		end
when 12 then
# line 61 "lib/graphql/language/lexer.rl"
		begin
act = 10;		end
when 13 then
# line 62 "lib/graphql/language/lexer.rl"
		begin
act = 11;		end
when 14 then
# line 63 "lib/graphql/language/lexer.rl"
		begin
act = 12;		end
when 15 then
# line 64 "lib/graphql/language/lexer.rl"
		begin
act = 13;		end
when 16 then
# line 65 "lib/graphql/language/lexer.rl"
		begin
act = 14;		end
when 17 then
# line 66 "lib/graphql/language/lexer.rl"
		begin
act = 15;		end
when 18 then
# line 67 "lib/graphql/language/lexer.rl"
		begin
act = 16;		end
when 19 then
# line 68 "lib/graphql/language/lexer.rl"
		begin
act = 17;		end
when 20 then
# line 69 "lib/graphql/language/lexer.rl"
		begin
act = 18;		end
when 21 then
# line 70 "lib/graphql/language/lexer.rl"
		begin
act = 19;		end
when 22 then
# line 78 "lib/graphql/language/lexer.rl"
		begin
act = 27;		end
when 23 then
# line 85 "lib/graphql/language/lexer.rl"
		begin
act = 34;		end
when 24 then
# line 95 "lib/graphql/language/lexer.rl"
		begin
act = 38;		end
when 25 then
# line 71 "lib/graphql/language/lexer.rl"
		begin
te = p+1
 begin  emit_token.call(:RCURLY)  end
		end
when 26 then
# line 72 "lib/graphql/language/lexer.rl"
		begin
te = p+1
 begin  emit_token.call(:LCURLY)  end
		end
when 27 then
# line 73 "lib/graphql/language/lexer.rl"
		begin
te = p+1
 begin  emit_token.call(:RPAREN)  end
		end
when 28 then
# line 74 "lib/graphql/language/lexer.rl"
		begin
te = p+1
 begin  emit_token.call(:LPAREN)  end
		end
when 29 then
# line 75 "lib/graphql/language/lexer.rl"
		begin
te = p+1
 begin  emit_token.call(:RBRACKET)  end
		end
when 30 then
# line 76 "lib/graphql/language/lexer.rl"
		begin
te = p+1
 begin  emit_token.call(:LBRACKET)  end
		end
when 31 then
# line 77 "lib/graphql/language/lexer.rl"
		begin
te = p+1
 begin  emit_token.call(:COLON)  end
		end
when 32 then
# line 78 "lib/graphql/language/lexer.rl"
		begin
te = p+1
 begin  emit_string(ts + 1, te - 1, meta)  end
		end
when 33 then
# line 79 "lib/graphql/language/lexer.rl"
		begin
te = p+1
 begin  emit_token.call(:VAR_SIGN)  end
		end
when 34 then
# line 80 "lib/graphql/language/lexer.rl"
		begin
te = p+1
 begin  emit_token.call(:DIR_SIGN)  end
		end
when 35 then
# line 81 "lib/graphql/language/lexer.rl"
		begin
te = p+1
 begin  emit_token.call(:ELLIPSIS)  end
		end
when 36 then
# line 82 "lib/graphql/language/lexer.rl"
		begin
te = p+1
 begin  emit_token.call(:EQUALS)  end
		end
when 37 then
# line 83 "lib/graphql/language/lexer.rl"
		begin
te = p+1
 begin  emit_token.call(:BANG)  end
		end
when 38 then
# line 84 "lib/graphql/language/lexer.rl"
		begin
te = p+1
 begin  emit_token.call(:PIPE)  end
		end
when 39 then
# line 88 "lib/graphql/language/lexer.rl"
		begin
te = p+1
 begin 
      meta[:line] += 1
      meta[:col] = 1
     end
		end
when 40 then
# line 95 "lib/graphql/language/lexer.rl"
		begin
te = p+1
 begin  emit_token.call(:UNKNOWN_CHAR)  end
		end
when 41 then
# line 52 "lib/graphql/language/lexer.rl"
		begin
te = p
p = p - 1; begin  emit_token.call(:INT)  end
		end
when 42 then
# line 53 "lib/graphql/language/lexer.rl"
		begin
te = p
p = p - 1; begin  emit_token.call(:FLOAT)  end
		end
when 43 then
# line 85 "lib/graphql/language/lexer.rl"
		begin
te = p
p = p - 1; begin  emit_token.call(:IDENTIFIER)  end
		end
when 44 then
# line 86 "lib/graphql/language/lexer.rl"
		begin
te = p
p = p - 1; begin  record_comment(ts, te, meta)  end
		end
when 45 then
# line 93 "lib/graphql/language/lexer.rl"
		begin
te = p
p = p - 1; begin  meta[:col] += te - ts  end
		end
when 46 then
# line 95 "lib/graphql/language/lexer.rl"
		begin
te = p
p = p - 1; begin  emit_token.call(:UNKNOWN_CHAR)  end
		end
when 47 then
# line 52 "lib/graphql/language/lexer.rl"
		begin
 begin p = ((te))-1; end
 begin  emit_token.call(:INT)  end
		end
when 48 then
# line 95 "lib/graphql/language/lexer.rl"
		begin
 begin p = ((te))-1; end
 begin  emit_token.call(:UNKNOWN_CHAR)  end
		end
when 49 then
# line 1 "NONE"
		begin
	case act
	when 1 then
	begin begin p = ((te))-1; end
 emit_token.call(:INT) end
	when 2 then
	begin begin p = ((te))-1; end
 emit_token.call(:FLOAT) end
	when 3 then
	begin begin p = ((te))-1; end
 emit_token.call(:ON) end
	when 4 then
	begin begin p = ((te))-1; end
 emit_token.call(:FRAGMENT) end
	when 5 then
	begin begin p = ((te))-1; end
 emit_token.call(:TRUE) end
	when 6 then
	begin begin p = ((te))-1; end
 emit_token.call(:FALSE) end
	when 7 then
	begin begin p = ((te))-1; end
 emit_token.call(:NULL) end
	when 8 then
	begin begin p = ((te))-1; end
 emit_token.call(:QUERY) end
	when 9 then
	begin begin p = ((te))-1; end
 emit_token.call(:MUTATION) end
	when 10 then
	begin begin p = ((te))-1; end
 emit_token.call(:SUBSCRIPTION) end
	when 11 then
	begin begin p = ((te))-1; end
 emit_token.call(:SCHEMA) end
	when 12 then
	begin begin p = ((te))-1; end
 emit_token.call(:SCALAR) end
	when 13 then
	begin begin p = ((te))-1; end
 emit_token.call(:TYPE) end
	when 14 then
	begin begin p = ((te))-1; end
 emit_token.call(:IMPLEMENTS) end
	when 15 then
	begin begin p = ((te))-1; end
 emit_token.call(:INTERFACE) end
	when 16 then
	begin begin p = ((te))-1; end
 emit_token.call(:UNION) end
	when 17 then
	begin begin p = ((te))-1; end
 emit_token.call(:ENUM) end
	when 18 then
	begin begin p = ((te))-1; end
 emit_token.call(:INPUT) end
	when 19 then
	begin begin p = ((te))-1; end
 emit_token.call(:DIRECTIVE) end
	when 27 then
	begin begin p = ((te))-1; end
 emit_string(ts + 1, te - 1, meta) end
	when 34 then
	begin begin p = ((te))-1; end
 emit_token.call(:IDENTIFIER) end
	when 38 then
	begin begin p = ((te))-1; end
 emit_token.call(:UNKNOWN_CHAR) end
end 
			end
# line 939 "lib/graphql/language/lexer.rb"
			end # action switch
		end
	end
	if _trigger_goto
		next
	end
	end
	if _goto_level <= _again
	_acts = _graphql_lexer_to_state_actions[cs]
	_nacts = _graphql_lexer_actions[_acts]
	_acts += 1
	while _nacts > 0
		_nacts -= 1
		_acts += 1
		case _graphql_lexer_actions[_acts - 1]
when 0 then
# line 1 "NONE"
		begin
ts = nil;		end
# line 959 "lib/graphql/language/lexer.rb"
		end # to state action switch
	end
	if _trigger_goto
		next
	end
	p += 1
	if p != pe
		_goto_level = _resume
		next
	end
	end
	if _goto_level <= _test_eof
	if p == eof
	if _graphql_lexer_eof_trans[cs] > 0
		_trans = _graphql_lexer_eof_trans[cs] - 1;
		_goto_level = _eof_trans
		next;
	end
end
	end
	if _goto_level <= _out
		break
	end
	end
	end

# line 141 "lib/graphql/language/lexer.rl"

        meta[:tokens]
      end

      def self.record_comment(ts, te, meta)
        token = GraphQL::Language::Token.new(
          name: :COMMENT,
          value: meta[:data][ts...te].pack(PACK_DIRECTIVE).force_encoding(UTF_8_ENCODING),
          line: meta[:line],
          col: meta[:col],
          prev_token: meta[:previous_token],
        )

        meta[:previous_token] = token

        meta[:col] += te - ts
      end

      def self.emit(token_name, ts, te, meta)
        meta[:tokens] << token = GraphQL::Language::Token.new(
          name: token_name,
          value: meta[:data][ts...te].pack(PACK_DIRECTIVE).force_encoding(UTF_8_ENCODING),
          line: meta[:line],
          col: meta[:col],
          prev_token: meta[:previous_token],
        )
        meta[:previous_token] = token
        # Bump the column counter for the next token
        meta[:col] += te - ts
      end

      ESCAPES = /\\["\\\/bfnrt]/
      ESCAPES_REPLACE = {
        '\\"' => '"',
        "\\\\" => "\\",
        "\\/" => '/',
        "\\b" => "\b",
        "\\f" => "\f",
        "\\n" => "\n",
        "\\r" => "\r",
        "\\t" => "\t",
      }

      UTF_8 = /\\u[\dAa-f]{4}/i
      UTF_8_REPLACE = ->(m) { [m[-4..-1].to_i(16)].pack('U'.freeze) }

      VALID_STRING = /\A(?:[^\\]|#{ESCAPES}|#{UTF_8})*\z/o

      PACK_DIRECTIVE = "c*"
      UTF_8_ENCODING = "UTF-8"

      def self.emit_string(ts, te, meta)
        value = meta[:data][ts...te].pack(PACK_DIRECTIVE).force_encoding(UTF_8_ENCODING)
        if value !~ VALID_STRING
          meta[:tokens] << token = GraphQL::Language::Token.new(
            name: :BAD_UNICODE_ESCAPE,
            value: value,
            line: meta[:line],
            col: meta[:col],
            prev_token: meta[:previous_token],
          )
        else
          replace_escaped_characters_in_place(value)

          meta[:tokens] << token = GraphQL::Language::Token.new(
            name: :STRING,
            value: value,
            line: meta[:line],
            col: meta[:col],
            prev_token: meta[:previous_token],
          )
        end

        meta[:previous_token] = token
        meta[:col] += te - ts
      end
    end
  end
end