From f00f5418341171212d2026ee2bb553959b8ae9c7 Mon Sep 17 00:00:00 2001 From: Josh Humphries Date: Thu, 1 Mar 2018 09:40:41 -0500 Subject: [PATCH] update grammar to allow trailing commas in a sequence of field values in aggregate literals --- desc/protoparse/proto.y | 12 +- desc/protoparse/proto.y.go | 914 +++++++++--------- ...esc_test_complex_source_info-default.proto | 46 + ...source_info-multiline-style-comments.proto | 46 + ...-sorted-AND-multiline-style-comments.proto | 44 + ...desc_test_complex_source_info-sorted.proto | 44 + internal/testprotos/desc_test1.pb.go | 2 + internal/testprotos/desc_test_complex.pb.go | 588 ++++++++--- internal/testprotos/desc_test_complex.proto | 38 +- .../testprotos/desc_test_complex.protoset | Bin 5164 -> 5843 bytes .../desc_test_complex_source_info.protoset | Bin 68025 -> 70220 bytes 11 files changed, 1135 insertions(+), 599 deletions(-) diff --git a/desc/protoparse/proto.y b/desc/protoparse/proto.y index 2548ed2a..a705932e 100644 --- a/desc/protoparse/proto.y +++ b/desc/protoparse/proto.y @@ -71,7 +71,7 @@ import ( %type intLit %type floatLit %type constantList -%type aggFields aggField +%type aggFields aggField aggFieldEntry %type field oneofField %type oneof %type group @@ -306,14 +306,16 @@ aggFields : aggField | aggFields aggField { $$ = append($1, $2...) } - | aggFields ',' aggField { - $$ = append($1, $3...) - } | { $$ = nil } -aggField : aggName ':' scalarConstant { +aggField : aggFieldEntry + | aggFieldEntry ',' { + $$ = $1 + } + +aggFieldEntry : aggName ':' scalarConstant { a := &aggregateEntryNode{name: $1, val: $3} a.setRange($1, $3) $$ = []*aggregateEntryNode{a} diff --git a/desc/protoparse/proto.y.go b/desc/protoparse/proto.y.go index 3983d7b8..249e42e7 100644 --- a/desc/protoparse/proto.y.go +++ b/desc/protoparse/proto.y.go @@ -193,7 +193,7 @@ const protoEofCode = 1 const protoErrCode = 2 const protoInitialStackSize = 16 -//line proto.y:849 +//line proto.y:851 //line yacctab:1 var protoExca = [...]int{ @@ -204,55 +204,54 @@ var protoExca = [...]int{ const protoPrivate = 57344 -const protoLast = 1909 +const protoLast = 1946 var protoAct = [...]int{ - 118, 8, 268, 8, 8, 361, 250, 79, 154, 111, - 251, 153, 257, 110, 178, 98, 97, 100, 101, 164, - 147, 142, 8, 27, 74, 28, 117, 112, 136, 286, - 96, 177, 286, 286, 286, 241, 352, 364, 252, 286, - 353, 339, 337, 76, 77, 286, 81, 335, 126, 286, - 286, 298, 286, 328, 209, 73, 354, 317, 316, 297, - 287, 342, 211, 307, 304, 301, 284, 266, 78, 210, - 264, 355, 295, 277, 105, 333, 343, 315, 308, 305, - 302, 285, 267, 109, 234, 265, 201, 196, 104, 181, - 228, 137, 227, 148, 166, 262, 198, 356, 229, 357, - 211, 309, 306, 303, 213, 4, 14, 92, 91, 15, - 16, 16, 90, 103, 89, 367, 140, 16, 144, 143, - 169, 16, 358, 344, 88, 349, 348, 347, 341, 332, - 156, 331, 312, 152, 232, 233, 137, 95, 94, 74, - 18, 17, 19, 20, 16, 151, 167, 148, 93, 13, - 150, 151, 176, 77, 76, 86, 150, 83, 180, 190, - 363, 140, 194, 189, 186, 199, 182, 191, 144, 143, - 73, 197, 170, 172, 174, 314, 288, 192, 78, 156, - 248, 247, 254, 363, 246, 200, 365, 245, 244, 243, - 208, 187, 87, 23, 318, 212, 202, 203, 204, 205, - 206, 207, 351, 5, 235, 230, 231, 22, 24, 263, - 240, 329, 238, 236, 258, 283, 25, 26, 74, 282, - 255, 156, 103, 281, 156, 22, 253, 215, 216, 217, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 161, - 162, 280, 14, 158, 159, 15, 16, 184, 179, 194, - 242, 275, 163, 279, 278, 161, 160, 258, 158, 179, - 249, 85, 261, 103, 84, 156, 156, 82, 273, 290, - 149, 146, 293, 74, 294, 74, 18, 17, 19, 20, - 12, 141, 138, 270, 194, 13, 299, 291, 3, 135, - 116, 21, 310, 74, 74, 121, 183, 311, 256, 120, - 156, 156, 119, 259, 272, 261, 102, 155, 194, 322, - 74, 292, 324, 74, 103, 326, 74, 323, 296, 313, - 325, 214, 165, 327, 103, 156, 360, 115, 11, 319, - 11, 11, 334, 169, 7, 169, 345, 169, 6, 2, - 1, 330, 0, 194, 0, 0, 156, 0, 0, 11, - 350, 74, 113, 10, 0, 10, 10, 0, 362, 0, - 156, 362, 359, 74, 0, 0, 366, 0, 0, 0, - 0, 0, 0, 0, 10, 0, 0, 99, 105, 108, - 30, 0, 270, 31, 32, 33, 34, 35, 36, 37, + 118, 8, 154, 8, 8, 361, 250, 79, 268, 153, + 111, 251, 257, 110, 179, 98, 97, 100, 101, 126, + 165, 147, 8, 27, 74, 28, 136, 117, 112, 96, + 178, 142, 252, 286, 286, 241, 352, 286, 295, 78, + 286, 364, 353, 76, 77, 339, 81, 286, 337, 73, + 286, 286, 286, 298, 286, 335, 210, 354, 328, 317, + 316, 297, 287, 342, 212, 307, 304, 301, 284, 266, + 264, 211, 355, 277, 105, 109, 167, 333, 343, 262, + 308, 305, 302, 285, 267, 265, 235, 202, 197, 104, + 182, 137, 315, 148, 229, 88, 228, 199, 196, 16, + 309, 356, 230, 357, 212, 306, 303, 214, 92, 16, + 91, 90, 89, 103, 367, 358, 140, 349, 16, 144, + 143, 170, 348, 213, 347, 341, 332, 331, 168, 312, + 157, 152, 95, 151, 233, 234, 137, 16, 150, 74, + 94, 191, 93, 171, 173, 175, 86, 148, 363, 78, + 83, 365, 177, 77, 76, 344, 195, 363, 181, 314, + 288, 140, 187, 248, 73, 183, 200, 247, 192, 144, + 143, 151, 198, 190, 246, 318, 150, 193, 245, 157, + 244, 243, 209, 188, 87, 23, 254, 201, 115, 11, + 5, 11, 11, 351, 22, 162, 163, 203, 204, 205, + 206, 207, 208, 185, 180, 329, 231, 232, 164, 240, + 11, 263, 22, 238, 236, 258, 4, 14, 283, 74, + 15, 16, 242, 103, 255, 157, 282, 253, 113, 10, + 281, 10, 10, 24, 261, 280, 114, 9, 279, 9, + 9, 25, 26, 195, 278, 162, 159, 160, 159, 275, + 10, 18, 17, 19, 20, 270, 180, 258, 9, 161, + 13, 249, 85, 103, 84, 157, 157, 273, 82, 290, + 149, 146, 293, 74, 294, 74, 261, 3, 195, 12, + 21, 141, 292, 138, 299, 135, 116, 291, 121, 296, + 184, 256, 310, 74, 74, 120, 119, 259, 311, 155, + 157, 157, 195, 272, 102, 156, 215, 166, 360, 322, + 74, 7, 324, 74, 103, 326, 74, 323, 313, 6, + 325, 2, 1, 327, 103, 157, 0, 0, 319, 0, + 334, 0, 0, 0, 170, 0, 170, 195, 170, 0, + 0, 330, 345, 0, 0, 0, 157, 0, 0, 0, + 350, 74, 0, 270, 0, 0, 0, 0, 362, 0, + 157, 362, 359, 74, 0, 0, 366, 99, 105, 108, + 30, 0, 0, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 0, 0, 114, 9, 104, - 9, 9, 0, 0, 0, 0, 0, 274, 106, 107, - 0, 0, 0, 271, 99, 105, 108, 30, 0, 9, + 68, 69, 70, 71, 72, 0, 0, 0, 0, 104, + 0, 0, 0, 0, 0, 0, 0, 274, 106, 107, + 0, 0, 0, 271, 99, 105, 108, 30, 0, 0, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, @@ -265,189 +264,194 @@ var protoAct = [...]int{ 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 0, 0, 0, 0, 104, 0, 0, 0, 0, 0, 0, 0, - 320, 106, 107, 30, 0, 0, 31, 32, 33, 34, + 320, 106, 107, 99, 105, 108, 30, 0, 0, 31, + 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, + 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, + 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, + 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, + 72, 0, 0, 0, 0, 104, 0, 0, 0, 0, + 0, 0, 0, 30, 106, 107, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 195, 346, - 0, 0, 0, 30, 0, 157, 31, 32, 33, 34, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 346, + 0, 0, 0, 30, 0, 158, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 195, 321, - 99, 105, 108, 30, 0, 157, 31, 32, 33, 34, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 321, + 0, 0, 0, 30, 0, 158, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 0, 0, - 0, 0, 104, 0, 0, 0, 0, 0, 0, 0, - 30, 106, 107, 31, 32, 33, 34, 35, 36, 37, - 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, - 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 195, 300, 0, 0, 0, - 30, 0, 157, 31, 32, 33, 34, 35, 36, 37, - 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, - 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 195, 276, 0, 0, 0, - 30, 0, 157, 31, 32, 33, 34, 35, 36, 37, - 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, - 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 0, 0, 0, 0, 0, - 193, 0, 0, 0, 0, 195, 0, 0, 0, 0, - 30, 0, 157, 31, 32, 33, 34, 35, 36, 37, - 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, - 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 30, 29, 157, 31, 32, 33, 34, 35, 36, 37, - 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, - 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 75, 30, 29, 80, 31, 32, 33, 34, 35, 131, - 37, 38, 39, 40, 125, 124, 123, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - 57, 58, 59, 132, 133, 130, 63, 64, 134, 127, - 128, 129, 69, 70, 71, 72, 0, 0, 122, 0, - 0, 340, 30, 29, 80, 31, 32, 33, 34, 35, - 131, 37, 38, 39, 40, 125, 124, 123, 44, 45, - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 132, 133, 130, 63, 64, 134, - 127, 128, 129, 69, 70, 71, 72, 0, 0, 122, - 0, 0, 338, 30, 29, 80, 31, 32, 33, 34, - 35, 131, 37, 38, 39, 40, 125, 124, 123, 44, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 300, + 0, 0, 0, 30, 0, 158, 31, 32, 33, 34, + 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, + 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, + 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, + 65, 66, 67, 68, 69, 70, 71, 72, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 276, + 0, 0, 0, 30, 0, 158, 31, 32, 33, 34, + 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, + 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, + 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, + 65, 66, 67, 68, 69, 70, 71, 72, 0, 0, + 0, 0, 0, 194, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 30, 0, 158, 31, 32, 33, 34, + 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, - 55, 56, 57, 58, 59, 132, 133, 130, 63, 64, - 134, 127, 128, 129, 69, 70, 71, 72, 0, 0, - 122, 0, 0, 336, 30, 29, 80, 31, 32, 33, - 34, 35, 131, 37, 38, 39, 40, 41, 42, 43, + 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, + 65, 66, 67, 68, 69, 70, 71, 72, 216, 217, + 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, + 0, 0, 0, 30, 29, 158, 31, 32, 33, 34, + 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, + 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, + 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, + 65, 66, 67, 68, 69, 70, 71, 72, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 75, 30, 29, 80, 31, 32, 33, + 34, 35, 131, 37, 38, 39, 40, 125, 124, 123, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, - 64, 65, 66, 67, 68, 69, 70, 71, 72, 0, - 0, 260, 0, 0, 289, 30, 29, 80, 31, 32, - 33, 34, 35, 36, 37, 38, 39, 40, 125, 124, + 54, 55, 56, 57, 58, 59, 132, 133, 130, 63, + 64, 134, 127, 128, 129, 69, 70, 71, 72, 0, + 0, 122, 0, 0, 340, 30, 29, 80, 31, 32, + 33, 34, 35, 131, 37, 38, 39, 40, 125, 124, 123, 44, 45, 46, 47, 48, 49, 50, 51, 52, - 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, - 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, - 0, 0, 145, 0, 0, 188, 30, 29, 80, 31, + 53, 54, 55, 56, 57, 58, 59, 132, 133, 130, + 63, 64, 134, 127, 128, 129, 69, 70, 71, 72, + 0, 0, 122, 0, 0, 338, 30, 29, 80, 31, 32, 33, 34, 35, 131, 37, 38, 39, 40, 125, 124, 123, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 132, 133, 130, 63, 64, 134, 127, 128, 129, 69, 70, 71, - 72, 0, 0, 122, 30, 0, 168, 31, 32, 33, - 34, 35, 131, 37, 38, 39, 40, 41, 42, 43, - 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, - 64, 65, 66, 67, 68, 69, 70, 71, 72, 0, - 0, 139, 0, 0, 185, 30, 29, 80, 31, 32, - 33, 34, 35, 131, 37, 38, 39, 40, 125, 124, - 123, 44, 45, 46, 47, 48, 49, 50, 51, 52, - 53, 54, 55, 56, 57, 58, 59, 132, 133, 130, - 63, 64, 134, 127, 128, 129, 69, 70, 71, 72, - 0, 0, 122, 30, 29, 80, 31, 32, 33, 34, - 35, 131, 37, 38, 39, 40, 41, 42, 43, 44, - 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, - 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 0, 0, - 260, 30, 29, 80, 31, 32, 33, 34, 35, 36, - 37, 38, 39, 40, 125, 124, 123, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 72, 30, 0, 145, 31, + 72, 0, 0, 122, 0, 0, 336, 30, 29, 80, + 31, 32, 33, 34, 35, 131, 37, 38, 39, 40, + 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, + 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, + 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, + 71, 72, 0, 0, 260, 0, 0, 289, 30, 29, + 80, 31, 32, 33, 34, 35, 36, 37, 38, 39, + 40, 125, 124, 123, 44, 45, 46, 47, 48, 49, + 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, + 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, + 70, 71, 72, 0, 0, 145, 0, 0, 189, 30, + 29, 80, 31, 32, 33, 34, 35, 131, 37, 38, + 39, 40, 125, 124, 123, 44, 45, 46, 47, 48, + 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, + 59, 132, 133, 130, 63, 64, 134, 127, 128, 129, + 69, 70, 71, 72, 0, 0, 122, 30, 0, 169, + 31, 32, 33, 34, 35, 131, 37, 38, 39, 40, + 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, + 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, + 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, + 71, 72, 0, 0, 139, 0, 0, 186, 30, 29, + 80, 31, 32, 33, 34, 35, 131, 37, 38, 39, + 40, 125, 124, 123, 44, 45, 46, 47, 48, 49, + 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, + 132, 133, 130, 63, 64, 134, 127, 128, 129, 69, + 70, 71, 72, 0, 0, 122, 30, 29, 80, 31, 32, 33, 34, 35, 131, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, - 72, 0, 0, 139, 30, 29, 80, 31, 32, 33, - 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, + 72, 0, 0, 260, 30, 29, 80, 31, 32, 33, + 34, 35, 36, 37, 38, 39, 40, 125, 124, 123, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, - 64, 65, 66, 67, 68, 69, 70, 269, 72, 30, - 29, 80, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, - 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, - 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 30, 29, 80, 31, 32, 33, - 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, - 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 175, 60, 61, 62, 63, - 64, 65, 66, 67, 68, 69, 70, 71, 72, 30, - 29, 80, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, - 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, - 173, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 30, 29, 80, 31, 32, 33, - 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, - 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 171, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 30, - 29, 0, 31, 32, 33, 34, 35, 36, 37, 38, + 0, 145, 31, 32, 33, 34, 35, 131, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 30, 0, 0, 31, 32, 33, - 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, - 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, - 64, 65, 66, 67, 68, 69, 70, 71, 72, + 69, 70, 71, 72, 0, 0, 139, 30, 29, 80, + 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, + 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, + 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, + 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, + 269, 72, 30, 29, 80, 31, 32, 33, 34, 35, + 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, + 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, + 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, + 66, 67, 68, 69, 70, 71, 72, 30, 29, 80, + 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, + 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, + 51, 52, 53, 54, 55, 56, 57, 58, 176, 60, + 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, + 71, 72, 30, 29, 80, 31, 32, 33, 34, 35, + 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, + 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, + 56, 57, 58, 174, 60, 61, 62, 63, 64, 65, + 66, 67, 68, 69, 70, 71, 72, 30, 29, 80, + 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, + 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, + 51, 52, 53, 54, 55, 56, 57, 58, 172, 60, + 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, + 71, 72, 30, 29, 0, 31, 32, 33, 34, 35, + 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, + 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, + 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, + 66, 67, 68, 69, 70, 71, 72, 30, 0, 0, + 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, + 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, + 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, + 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, + 71, 72, 14, 0, 0, 15, 16, 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, 18, 17, 19, 20, + 0, 0, 0, 0, 0, 13, } var protoPact = [...]int{ - 95, -1000, 231, 231, 140, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, 204, 1812, 983, 1857, 1857, 1632, - 1857, 231, -1000, 263, 103, 260, 257, 101, -1000, -1000, + 206, -1000, 1891, 1891, 132, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, 229, 1805, 976, 1850, 1850, 1625, + 1850, 1891, -1000, 264, 96, 260, 258, 92, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, 131, -1000, 1625, 56, 55, 54, -1000, + -1000, 52, 88, -1000, 86, 78, -1000, 559, 7, 1391, + 1532, 1487, 122, -1000, -1000, -1000, 77, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, 916, -1000, 241, 190, -1000, 67, + 1292, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, 1760, 1715, 1670, 1850, 1850, 1850, 1625, + 251, 976, 1850, 26, 199, 1340, -1000, -1000, -1000, -1000, + 130, 1241, -1000, -1000, -1000, -1000, 84, -1000, -1000, -1000, + -1000, 1850, -1000, 856, -1000, 36, 33, -1000, 1805, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, 67, -1000, 20, -1000, + -1000, 1850, 1850, 1850, 1850, 1850, 1850, 129, 2, -1000, + 81, 51, 943, 42, 40, -1000, -1000, -1000, 69, -1000, + -1000, -1000, -1000, 19, -1000, -1000, -1000, 430, -1000, 916, + -35, -1000, 1625, 128, 127, 125, 121, 114, 110, 256, + -1000, 976, 251, 181, 1439, 17, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, 139, -1000, 1632, 58, 56, 52, -1000, - -1000, 51, 94, -1000, 84, 83, -1000, 686, 15, 1398, - 1539, 1494, 96, -1000, -1000, -1000, 79, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, 923, -1000, 238, 234, -1000, 85, - 1299, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, 1767, 1722, 1677, 1857, 1857, 1857, 1632, - 254, 983, 1857, 25, 243, 1347, -1000, -1000, -1000, -1000, - 138, 1248, -1000, -1000, -1000, -1000, 102, -1000, -1000, -1000, - -1000, 1857, -1000, 863, -1000, 32, -1000, 1812, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, 85, -1000, 19, -1000, -1000, - 1857, 1857, 1857, 1857, 1857, 1857, 137, 0, -1000, 153, - 48, 202, 38, 36, -1000, -1000, -1000, 69, -1000, -1000, - -1000, -1000, 17, -1000, -1000, 923, 440, -1000, 923, -35, - -1000, 1632, 136, 135, 134, 131, 128, 127, 255, -1000, - 983, 254, 177, 1446, 33, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 205, - 16, 13, 253, 250, 1587, -1000, -1000, 373, -1000, 923, - 803, -1000, 5, 249, 248, 236, 218, 214, 210, 12, - -10, -1000, 123, -1000, -1000, -1000, 1197, -1000, -1000, -1000, - -1000, 1857, 1632, -1000, -1000, 983, -1000, 983, 4, 1632, - -1000, -1000, -11, -1000, 923, 743, -1000, -1000, 11, 47, - 10, 46, 9, 45, -1000, 983, 983, 78, 686, -1000, - -1000, 122, 14, -12, -13, 143, -1000, -1000, 506, 626, - -1000, -1000, 983, 1398, -1000, 983, 1398, -1000, 983, 1398, - -17, -1000, -1000, -1000, 206, 1857, 77, 75, 8, -1000, - 923, -1000, -23, 1146, -28, 1095, -29, 1044, 74, 7, - 70, -1000, -1000, 1587, 566, 73, -1000, 72, -1000, 71, - -1000, -1000, -1000, 983, 197, -32, -1000, -1000, -1000, -1000, - -30, 2, 43, 68, -1000, 983, -1000, 106, -1000, -33, - 129, -1000, -1000, -1000, 61, -1000, -1000, -1000, + 207, 16, 15, 243, 240, 1580, -1000, 363, -1000, 916, + 796, -1000, 5, 239, 233, 230, 225, 221, 213, 14, + -8, -1000, 107, -1000, -1000, -1000, 1190, -1000, -1000, -1000, + -1000, 1850, 1625, -1000, -1000, 976, -1000, 976, -30, 1625, + -1000, -1000, -9, -1000, 916, 736, -1000, -1000, 13, 50, + 12, 49, 11, 44, -1000, 976, 976, 75, 559, -1000, + -1000, 106, 29, -10, -11, 124, -1000, -1000, 496, 676, + -1000, -1000, 976, 1391, -1000, 976, 1391, -1000, 976, 1391, + -12, -1000, -1000, -1000, 200, 1850, 73, 72, 10, -1000, + 916, -1000, -15, 1139, -22, 1088, -25, 1037, 71, 9, + 102, -1000, -1000, 1580, 616, 70, -1000, 68, -1000, 63, + -1000, -1000, -1000, 976, 188, -32, -1000, -1000, -1000, -1000, + -28, 3, 47, 61, -1000, 976, -1000, 103, -1000, -29, + 94, -1000, -1000, -1000, 60, -1000, -1000, -1000, } var protoPgo = [...]int{ - 0, 340, 339, 203, 288, 338, 334, 0, 10, 6, - 5, 326, 38, 19, 322, 30, 16, 15, 25, 7, - 48, 321, 307, 18, 17, 306, 304, 11, 8, 27, - 303, 302, 26, 299, 427, 9, 13, 12, 298, 296, - 295, 14, 31, 290, 352, 28, 289, 282, 327, 21, - 281, 280, 20, 271, 270, 2, + 0, 322, 321, 190, 277, 319, 311, 0, 11, 6, + 5, 308, 32, 20, 307, 29, 16, 15, 25, 7, + 19, 306, 305, 18, 17, 304, 303, 9, 2, 299, + 28, 297, 296, 27, 295, 236, 10, 13, 12, 291, + 290, 288, 14, 30, 286, 228, 26, 285, 283, 188, + 31, 281, 279, 21, 271, 270, 8, } var protoR1 = [...]int{ @@ -455,23 +459,23 @@ var protoR1 = [...]int{ 3, 3, 3, 3, 3, 2, 5, 5, 5, 6, 19, 19, 7, 12, 12, 12, 13, 13, 14, 14, 15, 15, 16, 16, 16, 16, 16, 24, 24, 23, - 25, 25, 25, 25, 25, 17, 27, 27, 27, 27, - 28, 28, 28, 28, 28, 28, 28, 22, 22, 26, - 26, 26, 26, 20, 20, 29, 29, 29, 29, 29, - 29, 29, 29, 9, 9, 8, 32, 32, 32, 31, - 38, 38, 38, 37, 37, 37, 30, 30, 33, 33, - 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, - 21, 21, 43, 43, 42, 42, 41, 41, 41, 40, - 40, 39, 39, 44, 46, 46, 46, 45, 45, 45, - 47, 47, 47, 47, 34, 36, 36, 36, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 48, - 50, 50, 50, 49, 49, 49, 51, 53, 53, 53, - 52, 52, 52, 54, 54, 55, 55, 11, 11, 11, - 10, 10, 18, 18, 18, 18, 18, 18, 18, 18, + 25, 25, 25, 25, 25, 17, 27, 27, 27, 28, + 28, 29, 29, 29, 29, 29, 29, 29, 22, 22, + 26, 26, 26, 26, 20, 20, 30, 30, 30, 30, + 30, 30, 30, 30, 9, 9, 8, 33, 33, 33, + 32, 39, 39, 39, 38, 38, 38, 31, 31, 34, + 34, 21, 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 44, 44, 43, 43, 42, 42, 42, + 41, 41, 40, 40, 45, 47, 47, 47, 46, 46, + 46, 48, 48, 48, 48, 35, 37, 37, 37, 36, + 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, + 49, 51, 51, 51, 50, 50, 50, 52, 54, 54, + 54, 53, 53, 53, 55, 55, 56, 56, 11, 11, + 11, 10, 10, 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, } var protoR2 = [...]int{ @@ -479,28 +483,28 @@ var protoR2 = [...]int{ 1, 1, 1, 1, 1, 4, 3, 4, 4, 3, 1, 1, 5, 1, 3, 4, 1, 2, 1, 4, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, - 1, 2, 2, 2, 2, 3, 1, 2, 3, 0, - 3, 4, 5, 3, 2, 5, 4, 1, 3, 1, - 3, 3, 5, 1, 1, 6, 6, 6, 5, 9, - 9, 9, 8, 3, 1, 3, 8, 8, 8, 5, - 2, 1, 0, 1, 1, 1, 5, 8, 10, 13, + 1, 2, 2, 2, 2, 3, 1, 2, 0, 1, + 2, 3, 4, 5, 3, 2, 5, 4, 1, 3, + 1, 3, 3, 5, 1, 1, 6, 6, 6, 5, + 9, 9, 9, 8, 3, 1, 3, 8, 8, 8, + 5, 2, 1, 0, 1, 1, 1, 5, 8, 10, + 13, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 3, 6, 3, 1, 1, 3, 3, + 3, 3, 3, 1, 5, 2, 1, 0, 1, 1, + 1, 4, 7, 4, 7, 5, 2, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 3, 6, 3, 1, 1, 3, 3, 3, - 3, 3, 1, 5, 2, 1, 0, 1, 1, 1, - 4, 7, 4, 7, 5, 2, 1, 0, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 5, - 2, 1, 0, 1, 1, 1, 5, 2, 1, 0, - 1, 1, 1, 10, 12, 2, 1, 2, 1, 0, + 5, 2, 1, 0, 1, 1, 1, 5, 2, 1, + 0, 1, 1, 1, 10, 12, 2, 1, 2, 1, + 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, } var protoChk = [...]int{ - -1000, -1, -2, -4, 10, -3, -5, -6, -7, -34, - -44, -48, -51, 54, 11, 14, 15, 46, 45, 47, + -1000, -1, -2, -4, 10, -3, -5, -6, -7, -35, + -45, -49, -52, 54, 11, 14, 15, 46, 45, 47, 48, -4, -3, 53, 4, 12, 13, -19, -18, 8, 7, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, @@ -510,30 +514,30 @@ var protoChk = [...]int{ 9, -18, 4, 54, 4, 4, 54, 53, -20, 56, 56, 56, 56, 54, 54, 54, -15, -16, -17, 4, -24, -23, -25, -18, 56, 5, 65, 66, 6, 68, - -36, -35, -29, -44, -34, -48, -43, -32, -7, -31, - -33, -40, 54, 22, 21, 20, -20, 45, 46, 47, - 41, 15, 39, 40, 44, -46, -45, -7, -47, 54, - -18, -50, -49, -29, -32, 54, -53, -52, -7, -54, - 54, 49, 54, -27, -28, -22, -18, 69, 5, 6, - 18, 5, 6, 18, -13, -14, 9, 61, 57, -35, - -20, 38, -20, 38, -20, 38, -18, -42, -41, 5, - -18, 64, -42, -39, 4, 57, -45, 53, 57, -49, - 57, -52, -18, 57, -28, 62, 55, -17, 64, -19, - -13, 67, -18, -18, -18, -18, -18, -18, 53, 54, - 69, 62, 42, 56, -21, 25, 26, 27, 28, 29, - 30, 31, 32, 33, 34, 35, 36, 54, 54, 62, - -24, -23, 65, 66, 67, -28, -16, 69, -17, 64, + -37, -36, -30, -45, -35, -49, -44, -33, -7, -32, + -34, -41, 54, 22, 21, 20, -20, 45, 46, 47, + 41, 15, 39, 40, 44, -47, -46, -7, -48, 54, + -18, -51, -50, -30, -33, 54, -54, -53, -7, -55, + 54, 49, 54, -27, -28, -29, -22, -18, 69, 5, + 6, 18, 5, 6, 18, -13, -14, 9, 61, 57, + -36, -20, 38, -20, 38, -20, 38, -18, -43, -42, + 5, -18, 64, -43, -40, 4, 57, -46, 53, 57, + -50, 57, -53, -18, 57, -28, 62, 55, -17, 64, + -19, -13, 67, -18, -18, -18, -18, -18, -18, 53, + 54, 69, 62, 42, 56, -21, 25, 26, 27, 28, + 29, 30, 31, 32, 33, 34, 35, 36, 54, 54, + 62, -24, -23, 65, 66, 67, -16, 69, -17, 64, -27, 70, -20, 53, 53, 53, 53, 53, 53, 5, - -9, -8, -12, -41, 5, 43, -38, -37, -7, -30, - 54, -20, 62, 4, 54, 69, 54, 69, -55, 50, + -9, -8, -12, -42, 5, 43, -39, -38, -7, -31, + 54, -20, 62, 4, 54, 69, 54, 69, -56, 50, -20, 70, -26, -15, 64, -27, 63, 68, 5, 5, 5, 5, 5, 5, 54, 69, 62, 70, 53, 57, - -37, -18, -20, -9, -9, 68, -20, 70, 62, -27, + -38, -18, -20, -9, -9, 68, -20, 70, 62, -27, 63, 54, 69, 56, 54, 69, 56, 54, 69, 56, -9, -8, 54, -15, 53, 63, 70, 70, 51, -15, - 64, 63, -9, -36, -9, -36, -9, -36, 70, 5, + 64, 63, -9, -37, -9, -37, -9, -37, 70, 5, -18, 54, 54, 67, -27, 70, 57, 70, 57, 70, - 57, 54, 54, 69, 53, -55, 63, 54, 54, 54, + 57, 54, 54, 69, 53, -56, 63, 54, 54, 54, -9, 5, 68, 70, 54, 69, 54, 56, 54, -9, -11, -10, -7, 54, 70, 57, -10, 54, } @@ -542,40 +546,40 @@ var protoDef = [...]int{ 4, -2, 1, 2, 0, 6, 7, 8, 9, 10, 11, 12, 13, 14, 0, 0, 0, 0, 0, 0, 0, 3, 5, 0, 0, 0, 0, 0, 20, 21, - 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, - 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, - 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, - 202, 203, 204, 0, 23, 0, 0, 0, 0, 63, - 64, 0, 0, 16, 0, 0, 19, 0, 0, 127, - 116, 142, 149, 15, 17, 18, 0, 30, 31, 32, - 33, 34, 35, 36, 49, 37, 0, 0, 40, 24, - 0, 126, 128, 129, 130, 131, 132, 133, 134, 135, - 136, 137, 138, 0, 0, 0, 0, 0, 0, 0, - 194, 168, 0, 193, 197, 0, 115, 117, 118, 119, - 0, 0, 141, 143, 144, 145, 0, 148, 150, 151, - 152, 0, 22, 0, 46, 0, 57, 0, 38, 42, - 43, 39, 41, 44, 25, 26, 28, 0, 124, 125, - 0, 0, 0, 0, 0, 0, 0, 0, 105, 106, - 0, 0, 0, 0, 112, 113, 114, 0, 139, 140, - 146, 147, 0, 45, 47, 0, 0, 54, 49, 0, - 27, 0, 0, 0, 0, 0, 0, 0, 0, 102, - 0, 0, 0, 82, 0, 90, 91, 92, 93, 94, - 95, 96, 97, 98, 99, 100, 101, 109, 110, 0, - 0, 0, 0, 0, 0, 48, 50, 0, 53, 49, - 0, 58, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 74, 0, 104, 107, 108, 0, 81, 83, 84, - 85, 0, 0, 111, 120, 0, 122, 0, 0, 203, - 156, 51, 0, 59, 49, 0, 56, 29, 0, 0, - 0, 0, 0, 0, 68, 0, 0, 0, 0, 79, - 80, 0, 0, 0, 0, 0, 155, 52, 0, 0, - 55, 65, 0, 127, 66, 0, 127, 67, 0, 127, - 0, 73, 103, 75, 0, 0, 0, 0, 0, 60, - 49, 61, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 121, 123, 0, 0, 0, 76, 0, 77, 0, - 78, 72, 86, 0, 0, 0, 62, 69, 70, 71, - 0, 0, 0, 0, 88, 0, 153, 159, 87, 0, - 0, 158, 160, 161, 0, 154, 157, 89, + 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, + 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, + 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, + 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, + 203, 204, 205, 0, 23, 0, 0, 0, 0, 64, + 65, 0, 0, 16, 0, 0, 19, 0, 0, 128, + 117, 143, 150, 15, 17, 18, 0, 30, 31, 32, + 33, 34, 35, 36, 48, 37, 0, 0, 40, 24, + 0, 127, 129, 130, 131, 132, 133, 134, 135, 136, + 137, 138, 139, 0, 0, 0, 0, 0, 0, 0, + 195, 169, 0, 194, 198, 0, 116, 118, 119, 120, + 0, 0, 142, 144, 145, 146, 0, 149, 151, 152, + 153, 0, 22, 0, 46, 49, 0, 58, 0, 38, + 42, 43, 39, 41, 44, 25, 26, 28, 0, 125, + 126, 0, 0, 0, 0, 0, 0, 0, 0, 106, + 107, 0, 0, 0, 0, 113, 114, 115, 0, 140, + 141, 147, 148, 0, 45, 47, 50, 0, 55, 48, + 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, + 103, 0, 0, 0, 83, 0, 91, 92, 93, 94, + 95, 96, 97, 98, 99, 100, 101, 102, 110, 111, + 0, 0, 0, 0, 0, 0, 51, 0, 54, 48, + 0, 59, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 75, 0, 105, 108, 109, 0, 82, 84, 85, + 86, 0, 0, 112, 121, 0, 123, 0, 0, 204, + 157, 52, 0, 60, 48, 0, 57, 29, 0, 0, + 0, 0, 0, 0, 69, 0, 0, 0, 0, 80, + 81, 0, 0, 0, 0, 0, 156, 53, 0, 0, + 56, 66, 0, 128, 67, 0, 128, 68, 0, 128, + 0, 74, 104, 76, 0, 0, 0, 0, 0, 61, + 48, 62, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 122, 124, 0, 0, 0, 77, 0, 78, 0, + 79, 73, 87, 0, 0, 0, 63, 70, 71, 72, + 0, 0, 0, 0, 89, 0, 154, 160, 88, 0, + 0, 159, 161, 162, 0, 155, 158, 90, } var protoTok1 = [...]int{ @@ -1229,28 +1233,28 @@ protodefault: protoVAL.agg = append(protoDollar[1].agg, protoDollar[2].agg...) } case 48: - protoDollar = protoS[protopt-3 : protopt+1] - //line proto.y:309 - { - protoVAL.agg = append(protoDollar[1].agg, protoDollar[3].agg...) - } - case 49: protoDollar = protoS[protopt-0 : protopt+1] - //line proto.y:312 + //line proto.y:309 { protoVAL.agg = nil } case 50: + protoDollar = protoS[protopt-2 : protopt+1] + //line proto.y:314 + { + protoVAL.agg = protoDollar[1].agg + } + case 51: protoDollar = protoS[protopt-3 : protopt+1] - //line proto.y:316 + //line proto.y:318 { a := &aggregateEntryNode{name: protoDollar[1].aggName, val: protoDollar[3].v} a.setRange(protoDollar[1].aggName, protoDollar[3].v) protoVAL.agg = []*aggregateEntryNode{a} } - case 51: + case 52: protoDollar = protoS[protopt-4 : protopt+1] - //line proto.y:321 + //line proto.y:323 { s := &sliceLiteralNode{} s.setRange(protoDollar[3].b, protoDollar[4].b) @@ -1258,9 +1262,9 @@ protodefault: a.setRange(protoDollar[1].aggName, protoDollar[4].b) protoVAL.agg = []*aggregateEntryNode{a} } - case 52: + case 53: protoDollar = protoS[protopt-5 : protopt+1] - //line proto.y:328 + //line proto.y:330 { s := &sliceLiteralNode{elements: protoDollar[4].sl} s.setRange(protoDollar[3].b, protoDollar[5].b) @@ -1268,25 +1272,25 @@ protodefault: a.setRange(protoDollar[1].aggName, protoDollar[5].b) protoVAL.agg = []*aggregateEntryNode{a} } - case 53: + case 54: protoDollar = protoS[protopt-3 : protopt+1] - //line proto.y:335 + //line proto.y:337 { a := &aggregateEntryNode{name: protoDollar[1].aggName, val: protoDollar[3].v} a.setRange(protoDollar[1].aggName, protoDollar[3].v) protoVAL.agg = []*aggregateEntryNode{a} } - case 54: + case 55: protoDollar = protoS[protopt-2 : protopt+1] - //line proto.y:340 + //line proto.y:342 { a := &aggregateEntryNode{name: protoDollar[1].aggName, val: protoDollar[2].v} a.setRange(protoDollar[1].aggName, protoDollar[2].v) protoVAL.agg = []*aggregateEntryNode{a} } - case 55: + case 56: protoDollar = protoS[protopt-5 : protopt+1] - //line proto.y:345 + //line proto.y:347 { s := &aggregateLiteralNode{elements: protoDollar[4].agg} s.setRange(protoDollar[3].b, protoDollar[5].b) @@ -1294,9 +1298,9 @@ protodefault: a.setRange(protoDollar[1].aggName, protoDollar[5].b) protoVAL.agg = []*aggregateEntryNode{a} } - case 56: + case 57: protoDollar = protoS[protopt-4 : protopt+1] - //line proto.y:352 + //line proto.y:354 { s := &aggregateLiteralNode{elements: protoDollar[3].agg} s.setRange(protoDollar[2].b, protoDollar[4].b) @@ -1304,127 +1308,127 @@ protodefault: a.setRange(protoDollar[1].aggName, protoDollar[4].b) protoVAL.agg = []*aggregateEntryNode{a} } - case 57: + case 58: protoDollar = protoS[protopt-1 : protopt+1] - //line proto.y:360 + //line proto.y:362 { protoVAL.aggName = &aggregateNameNode{name: protoDollar[1].id} protoVAL.aggName.setRange(protoDollar[1].id, protoDollar[1].id) } - case 58: + case 59: protoDollar = protoS[protopt-3 : protopt+1] - //line proto.y:364 + //line proto.y:366 { protoVAL.aggName = &aggregateNameNode{name: protoDollar[2].id, isExtension: true} protoVAL.aggName.setRange(protoDollar[1].b, protoDollar[3].b) } - case 59: + case 60: protoDollar = protoS[protopt-1 : protopt+1] - //line proto.y:369 + //line proto.y:371 { protoVAL.sl = []valueNode{protoDollar[1].v} } - case 60: + case 61: protoDollar = protoS[protopt-3 : protopt+1] - //line proto.y:372 + //line proto.y:374 { protoVAL.sl = append(protoDollar[1].sl, protoDollar[3].v) } - case 61: + case 62: protoDollar = protoS[protopt-3 : protopt+1] - //line proto.y:375 + //line proto.y:377 { s := &aggregateLiteralNode{elements: protoDollar[2].agg} s.setRange(protoDollar[1].b, protoDollar[3].b) protoVAL.sl = []valueNode{s} } - case 62: + case 63: protoDollar = protoS[protopt-5 : protopt+1] - //line proto.y:380 + //line proto.y:382 { s := &aggregateLiteralNode{elements: protoDollar[4].agg} s.setRange(protoDollar[3].b, protoDollar[5].b) protoVAL.sl = append(protoDollar[1].sl, s) } - case 65: + case 66: protoDollar = protoS[protopt-6 : protopt+1] - //line proto.y:389 + //line proto.y:391 { checkTag(protolex, protoDollar[5].ui.start(), protoDollar[5].ui.val) lbl := &labelNode{basicNode: protoDollar[1].id.basicNode, required: true} protoVAL.fld = &fieldNode{label: lbl, fldType: protoDollar[2].id, name: protoDollar[3].id, tag: protoDollar[5].ui} protoVAL.fld.setRange(protoDollar[1].id, protoDollar[6].b) } - case 66: + case 67: protoDollar = protoS[protopt-6 : protopt+1] - //line proto.y:395 + //line proto.y:397 { checkTag(protolex, protoDollar[5].ui.start(), protoDollar[5].ui.val) lbl := &labelNode{basicNode: protoDollar[1].id.basicNode} protoVAL.fld = &fieldNode{label: lbl, fldType: protoDollar[2].id, name: protoDollar[3].id, tag: protoDollar[5].ui} protoVAL.fld.setRange(protoDollar[1].id, protoDollar[6].b) } - case 67: + case 68: protoDollar = protoS[protopt-6 : protopt+1] - //line proto.y:401 + //line proto.y:403 { checkTag(protolex, protoDollar[5].ui.start(), protoDollar[5].ui.val) lbl := &labelNode{basicNode: protoDollar[1].id.basicNode, repeated: true} protoVAL.fld = &fieldNode{label: lbl, fldType: protoDollar[2].id, name: protoDollar[3].id, tag: protoDollar[5].ui} protoVAL.fld.setRange(protoDollar[1].id, protoDollar[6].b) } - case 68: + case 69: protoDollar = protoS[protopt-5 : protopt+1] - //line proto.y:407 + //line proto.y:409 { checkTag(protolex, protoDollar[4].ui.start(), protoDollar[4].ui.val) protoVAL.fld = &fieldNode{fldType: protoDollar[1].id, name: protoDollar[2].id, tag: protoDollar[4].ui} protoVAL.fld.setRange(protoDollar[1].id, protoDollar[5].b) } - case 69: + case 70: protoDollar = protoS[protopt-9 : protopt+1] - //line proto.y:412 + //line proto.y:414 { checkTag(protolex, protoDollar[5].ui.start(), protoDollar[5].ui.val) lbl := &labelNode{basicNode: protoDollar[1].id.basicNode, required: true} protoVAL.fld = &fieldNode{label: lbl, fldType: protoDollar[2].id, name: protoDollar[3].id, tag: protoDollar[5].ui, options: protoDollar[7].opts} protoVAL.fld.setRange(protoDollar[1].id, protoDollar[9].b) } - case 70: + case 71: protoDollar = protoS[protopt-9 : protopt+1] - //line proto.y:418 + //line proto.y:420 { checkTag(protolex, protoDollar[5].ui.start(), protoDollar[5].ui.val) lbl := &labelNode{basicNode: protoDollar[1].id.basicNode} protoVAL.fld = &fieldNode{label: lbl, fldType: protoDollar[2].id, name: protoDollar[3].id, tag: protoDollar[5].ui, options: protoDollar[7].opts} protoVAL.fld.setRange(protoDollar[1].id, protoDollar[9].b) } - case 71: + case 72: protoDollar = protoS[protopt-9 : protopt+1] - //line proto.y:424 + //line proto.y:426 { checkTag(protolex, protoDollar[5].ui.start(), protoDollar[5].ui.val) lbl := &labelNode{basicNode: protoDollar[1].id.basicNode, repeated: true} protoVAL.fld = &fieldNode{label: lbl, fldType: protoDollar[2].id, name: protoDollar[3].id, tag: protoDollar[5].ui, options: protoDollar[7].opts} protoVAL.fld.setRange(protoDollar[1].id, protoDollar[9].b) } - case 72: + case 73: protoDollar = protoS[protopt-8 : protopt+1] - //line proto.y:430 + //line proto.y:432 { checkTag(protolex, protoDollar[4].ui.start(), protoDollar[4].ui.val) protoVAL.fld = &fieldNode{fldType: protoDollar[1].id, name: protoDollar[2].id, tag: protoDollar[4].ui, options: protoDollar[6].opts} protoVAL.fld.setRange(protoDollar[1].id, protoDollar[8].b) } - case 73: + case 74: protoDollar = protoS[protopt-3 : protopt+1] - //line proto.y:436 + //line proto.y:438 { protoVAL.opts = append(protoDollar[1].opts, protoDollar[3].opts...) } - case 75: + case 76: protoDollar = protoS[protopt-3 : protopt+1] - //line proto.y:441 + //line proto.y:443 { n := &optionNameNode{parts: protoDollar[1].optNm} n.setRange(protoDollar[1].optNm[0], protoDollar[1].optNm[len(protoDollar[1].optNm)-1]) @@ -1432,9 +1436,9 @@ protodefault: o.setRange(protoDollar[1].optNm[0], protoDollar[3].v) protoVAL.opts = []*optionNode{o} } - case 76: + case 77: protoDollar = protoS[protopt-8 : protopt+1] - //line proto.y:449 + //line proto.y:451 { checkTag(protolex, protoDollar[5].ui.start(), protoDollar[5].ui.val) if !unicode.IsUpper(rune(protoDollar[3].id.val[0])) { @@ -1444,9 +1448,9 @@ protodefault: protoVAL.grp = &groupNode{groupKeyword: protoDollar[2].id, label: lbl, name: protoDollar[3].id, tag: protoDollar[5].ui, decls: protoDollar[7].msgDecls} protoVAL.grp.setRange(protoDollar[1].id, protoDollar[8].b) } - case 77: + case 78: protoDollar = protoS[protopt-8 : protopt+1] - //line proto.y:458 + //line proto.y:460 { checkTag(protolex, protoDollar[5].ui.start(), protoDollar[5].ui.val) if !unicode.IsUpper(rune(protoDollar[3].id.val[0])) { @@ -1456,9 +1460,9 @@ protodefault: protoVAL.grp = &groupNode{groupKeyword: protoDollar[2].id, label: lbl, name: protoDollar[3].id, tag: protoDollar[5].ui, decls: protoDollar[7].msgDecls} protoVAL.grp.setRange(protoDollar[1].id, protoDollar[8].b) } - case 78: + case 79: protoDollar = protoS[protopt-8 : protopt+1] - //line proto.y:467 + //line proto.y:469 { checkTag(protolex, protoDollar[5].ui.start(), protoDollar[5].ui.val) if !unicode.IsUpper(rune(protoDollar[3].id.val[0])) { @@ -1468,9 +1472,9 @@ protodefault: protoVAL.grp = &groupNode{groupKeyword: protoDollar[2].id, label: lbl, name: protoDollar[3].id, tag: protoDollar[5].ui, decls: protoDollar[7].msgDecls} protoVAL.grp.setRange(protoDollar[1].id, protoDollar[8].b) } - case 79: + case 80: protoDollar = protoS[protopt-5 : protopt+1] - //line proto.y:477 + //line proto.y:479 { c := 0 for _, el := range protoDollar[4].ooDecls { @@ -1484,91 +1488,91 @@ protodefault: protoVAL.oo = &oneOfNode{name: protoDollar[2].id, decls: protoDollar[4].ooDecls} protoVAL.oo.setRange(protoDollar[1].id, protoDollar[5].b) } - case 80: + case 81: protoDollar = protoS[protopt-2 : protopt+1] - //line proto.y:491 + //line proto.y:493 { protoVAL.ooDecls = append(protoDollar[1].ooDecls, protoDollar[2].ooDecls...) } - case 82: + case 83: protoDollar = protoS[protopt-0 : protopt+1] - //line proto.y:495 + //line proto.y:497 { protoVAL.ooDecls = nil } - case 83: + case 84: protoDollar = protoS[protopt-1 : protopt+1] - //line proto.y:499 + //line proto.y:501 { protoVAL.ooDecls = []*oneOfElement{{option: protoDollar[1].opts[0]}} } - case 84: + case 85: protoDollar = protoS[protopt-1 : protopt+1] - //line proto.y:502 + //line proto.y:504 { protoVAL.ooDecls = []*oneOfElement{{field: protoDollar[1].fld}} } - case 85: + case 86: protoDollar = protoS[protopt-1 : protopt+1] - //line proto.y:505 + //line proto.y:507 { protoVAL.ooDecls = []*oneOfElement{{empty: protoDollar[1].b}} } - case 86: + case 87: protoDollar = protoS[protopt-5 : protopt+1] - //line proto.y:509 + //line proto.y:511 { checkTag(protolex, protoDollar[4].ui.start(), protoDollar[4].ui.val) protoVAL.fld = &fieldNode{fldType: protoDollar[1].id, name: protoDollar[2].id, tag: protoDollar[4].ui} protoVAL.fld.setRange(protoDollar[1].id, protoDollar[5].b) } - case 87: + case 88: protoDollar = protoS[protopt-8 : protopt+1] - //line proto.y:514 + //line proto.y:516 { checkTag(protolex, protoDollar[4].ui.start(), protoDollar[4].ui.val) protoVAL.fld = &fieldNode{fldType: protoDollar[1].id, name: protoDollar[2].id, tag: protoDollar[4].ui, options: protoDollar[6].opts} protoVAL.fld.setRange(protoDollar[1].id, protoDollar[8].b) } - case 88: + case 89: protoDollar = protoS[protopt-10 : protopt+1] - //line proto.y:520 + //line proto.y:522 { checkTag(protolex, protoDollar[9].ui.start(), protoDollar[9].ui.val) protoVAL.mapFld = &mapFieldNode{mapKeyword: protoDollar[1].id, keyType: protoDollar[3].id, valueType: protoDollar[5].id, name: protoDollar[7].id, tag: protoDollar[9].ui} protoVAL.mapFld.setRange(protoDollar[1].id, protoDollar[10].b) } - case 89: + case 90: protoDollar = protoS[protopt-13 : protopt+1] - //line proto.y:525 + //line proto.y:527 { checkTag(protolex, protoDollar[9].ui.start(), protoDollar[9].ui.val) protoVAL.mapFld = &mapFieldNode{mapKeyword: protoDollar[1].id, keyType: protoDollar[3].id, valueType: protoDollar[5].id, name: protoDollar[7].id, tag: protoDollar[9].ui, options: protoDollar[11].opts} protoVAL.mapFld.setRange(protoDollar[1].id, protoDollar[13].b) } - case 102: + case 103: protoDollar = protoS[protopt-3 : protopt+1] - //line proto.y:544 + //line proto.y:546 { protoVAL.ext = &extensionRangeNode{ranges: protoDollar[2].rngs} protoVAL.ext.setRange(protoDollar[1].id, protoDollar[3].b) } - case 103: + case 104: protoDollar = protoS[protopt-6 : protopt+1] - //line proto.y:548 + //line proto.y:550 { protoVAL.ext = &extensionRangeNode{ranges: protoDollar[2].rngs, options: protoDollar[4].opts} protoVAL.ext.setRange(protoDollar[1].id, protoDollar[6].b) } - case 104: + case 105: protoDollar = protoS[protopt-3 : protopt+1] - //line proto.y:553 + //line proto.y:555 { protoVAL.rngs = append(protoDollar[1].rngs, protoDollar[3].rngs...) } - case 106: + case 107: protoDollar = protoS[protopt-1 : protopt+1] - //line proto.y:558 + //line proto.y:560 { if protoDollar[1].ui.val > internal.MaxTag { lexError(protolex, protoDollar[1].ui.start(), fmt.Sprintf("range includes out-of-range tag: %d (should be between 0 and %d)", protoDollar[1].ui.val, internal.MaxTag)) @@ -1577,9 +1581,9 @@ protodefault: r.setRange(protoDollar[1].ui, protoDollar[1].ui) protoVAL.rngs = []*rangeNode{r} } - case 107: + case 108: protoDollar = protoS[protopt-3 : protopt+1] - //line proto.y:566 + //line proto.y:568 { if protoDollar[1].ui.val > internal.MaxTag { lexError(protolex, protoDollar[1].ui.start(), fmt.Sprintf("range start is out-of-range tag: %d (should be between 0 and %d)", protoDollar[1].ui.val, internal.MaxTag)) @@ -1594,9 +1598,9 @@ protodefault: r.setRange(protoDollar[1].ui, protoDollar[3].ui) protoVAL.rngs = []*rangeNode{r} } - case 108: + case 109: protoDollar = protoS[protopt-3 : protopt+1] - //line proto.y:580 + //line proto.y:582 { if protoDollar[1].ui.val > internal.MaxTag { lexError(protolex, protoDollar[1].ui.start(), fmt.Sprintf("range start is out-of-range tag: %d (should be between 0 and %d)", protoDollar[1].ui.val, internal.MaxTag)) @@ -1606,16 +1610,16 @@ protodefault: r.setRange(protoDollar[1].ui, protoDollar[3].id) protoVAL.rngs = []*rangeNode{r} } - case 109: + case 110: protoDollar = protoS[protopt-3 : protopt+1] - //line proto.y:590 + //line proto.y:592 { protoVAL.resvd = &reservedNode{ranges: protoDollar[2].rngs} protoVAL.resvd.setRange(protoDollar[1].id, protoDollar[3].b) } - case 110: + case 111: protoDollar = protoS[protopt-3 : protopt+1] - //line proto.y:594 + //line proto.y:596 { rsvd := map[string]struct{}{} for _, n := range protoDollar[2].names { @@ -1628,21 +1632,21 @@ protodefault: protoVAL.resvd = &reservedNode{names: protoDollar[2].names} protoVAL.resvd.setRange(protoDollar[1].id, protoDollar[3].b) } - case 111: + case 112: protoDollar = protoS[protopt-3 : protopt+1] - //line proto.y:607 + //line proto.y:609 { protoVAL.names = append(protoDollar[1].names, protoDollar[3].str) } - case 112: + case 113: protoDollar = protoS[protopt-1 : protopt+1] - //line proto.y:610 + //line proto.y:612 { protoVAL.names = []*stringLiteralNode{protoDollar[1].str} } - case 113: + case 114: protoDollar = protoS[protopt-5 : protopt+1] - //line proto.y:614 + //line proto.y:616 { c := 0 for _, el := range protoDollar[4].enDecls { @@ -1656,156 +1660,156 @@ protodefault: protoVAL.en = &enumNode{name: protoDollar[2].id, decls: protoDollar[4].enDecls} protoVAL.en.setRange(protoDollar[1].id, protoDollar[5].b) } - case 114: + case 115: protoDollar = protoS[protopt-2 : protopt+1] - //line proto.y:628 + //line proto.y:630 { protoVAL.enDecls = append(protoDollar[1].enDecls, protoDollar[2].enDecls...) } - case 116: + case 117: protoDollar = protoS[protopt-0 : protopt+1] - //line proto.y:632 + //line proto.y:634 { protoVAL.enDecls = nil } - case 117: + case 118: protoDollar = protoS[protopt-1 : protopt+1] - //line proto.y:636 + //line proto.y:638 { protoVAL.enDecls = []*enumElement{{option: protoDollar[1].opts[0]}} } - case 118: + case 119: protoDollar = protoS[protopt-1 : protopt+1] - //line proto.y:639 + //line proto.y:641 { protoVAL.enDecls = []*enumElement{{value: protoDollar[1].env}} } - case 119: + case 120: protoDollar = protoS[protopt-1 : protopt+1] - //line proto.y:642 + //line proto.y:644 { protoVAL.enDecls = []*enumElement{{empty: protoDollar[1].b}} } - case 120: + case 121: protoDollar = protoS[protopt-4 : protopt+1] - //line proto.y:646 + //line proto.y:648 { checkUint64InInt32Range(protolex, protoDollar[3].ui.start(), protoDollar[3].ui.val) protoVAL.env = &enumValueNode{name: protoDollar[1].id, number: protoDollar[3].ui} protoVAL.env.setRange(protoDollar[1].id, protoDollar[4].b) } - case 121: + case 122: protoDollar = protoS[protopt-7 : protopt+1] - //line proto.y:651 + //line proto.y:653 { checkUint64InInt32Range(protolex, protoDollar[3].ui.start(), protoDollar[3].ui.val) protoVAL.env = &enumValueNode{name: protoDollar[1].id, number: protoDollar[3].ui, options: protoDollar[5].opts} protoVAL.env.setRange(protoDollar[1].id, protoDollar[7].b) } - case 122: + case 123: protoDollar = protoS[protopt-4 : protopt+1] - //line proto.y:656 + //line proto.y:658 { checkInt64InInt32Range(protolex, protoDollar[3].i.start(), protoDollar[3].i.val) protoVAL.env = &enumValueNode{name: protoDollar[1].id, numberN: protoDollar[3].i} protoVAL.env.setRange(protoDollar[1].id, protoDollar[4].b) } - case 123: + case 124: protoDollar = protoS[protopt-7 : protopt+1] - //line proto.y:661 + //line proto.y:663 { checkInt64InInt32Range(protolex, protoDollar[3].i.start(), protoDollar[3].i.val) protoVAL.env = &enumValueNode{name: protoDollar[1].id, numberN: protoDollar[3].i, options: protoDollar[5].opts} protoVAL.env.setRange(protoDollar[1].id, protoDollar[7].b) } - case 124: + case 125: protoDollar = protoS[protopt-5 : protopt+1] - //line proto.y:667 + //line proto.y:669 { protoVAL.msg = &messageNode{name: protoDollar[2].id, decls: protoDollar[4].msgDecls} protoVAL.msg.setRange(protoDollar[1].id, protoDollar[5].b) } - case 125: + case 126: protoDollar = protoS[protopt-2 : protopt+1] - //line proto.y:672 + //line proto.y:674 { protoVAL.msgDecls = append(protoDollar[1].msgDecls, protoDollar[2].msgDecls...) } - case 127: + case 128: protoDollar = protoS[protopt-0 : protopt+1] - //line proto.y:676 + //line proto.y:678 { protoVAL.msgDecls = nil } - case 128: + case 129: protoDollar = protoS[protopt-1 : protopt+1] - //line proto.y:680 + //line proto.y:682 { protoVAL.msgDecls = []*messageElement{{field: protoDollar[1].fld}} } - case 129: + case 130: protoDollar = protoS[protopt-1 : protopt+1] - //line proto.y:683 + //line proto.y:685 { protoVAL.msgDecls = []*messageElement{{enum: protoDollar[1].en}} } - case 130: + case 131: protoDollar = protoS[protopt-1 : protopt+1] - //line proto.y:686 + //line proto.y:688 { protoVAL.msgDecls = []*messageElement{{nested: protoDollar[1].msg}} } - case 131: + case 132: protoDollar = protoS[protopt-1 : protopt+1] - //line proto.y:689 + //line proto.y:691 { protoVAL.msgDecls = []*messageElement{{extend: protoDollar[1].extend}} } - case 132: + case 133: protoDollar = protoS[protopt-1 : protopt+1] - //line proto.y:692 + //line proto.y:694 { protoVAL.msgDecls = []*messageElement{{extensionRange: protoDollar[1].ext}} } - case 133: + case 134: protoDollar = protoS[protopt-1 : protopt+1] - //line proto.y:695 + //line proto.y:697 { protoVAL.msgDecls = []*messageElement{{group: protoDollar[1].grp}} } - case 134: + case 135: protoDollar = protoS[protopt-1 : protopt+1] - //line proto.y:698 + //line proto.y:700 { protoVAL.msgDecls = []*messageElement{{option: protoDollar[1].opts[0]}} } - case 135: + case 136: protoDollar = protoS[protopt-1 : protopt+1] - //line proto.y:701 + //line proto.y:703 { protoVAL.msgDecls = []*messageElement{{oneOf: protoDollar[1].oo}} } - case 136: + case 137: protoDollar = protoS[protopt-1 : protopt+1] - //line proto.y:704 + //line proto.y:706 { protoVAL.msgDecls = []*messageElement{{mapField: protoDollar[1].mapFld}} } - case 137: + case 138: protoDollar = protoS[protopt-1 : protopt+1] - //line proto.y:707 + //line proto.y:709 { protoVAL.msgDecls = []*messageElement{{reserved: protoDollar[1].resvd}} } - case 138: + case 139: protoDollar = protoS[protopt-1 : protopt+1] - //line proto.y:710 + //line proto.y:712 { protoVAL.msgDecls = []*messageElement{{empty: protoDollar[1].b}} } - case 139: + case 140: protoDollar = protoS[protopt-5 : protopt+1] - //line proto.y:714 + //line proto.y:716 { c := 0 for _, el := range protoDollar[4].extDecls { @@ -1819,122 +1823,122 @@ protodefault: protoVAL.extend = &extendNode{extendee: protoDollar[2].id, decls: protoDollar[4].extDecls} protoVAL.extend.setRange(protoDollar[1].id, protoDollar[5].b) } - case 140: + case 141: protoDollar = protoS[protopt-2 : protopt+1] - //line proto.y:728 + //line proto.y:730 { protoVAL.extDecls = append(protoDollar[1].extDecls, protoDollar[2].extDecls...) } - case 142: + case 143: protoDollar = protoS[protopt-0 : protopt+1] - //line proto.y:732 + //line proto.y:734 { protoVAL.extDecls = nil } - case 143: + case 144: protoDollar = protoS[protopt-1 : protopt+1] - //line proto.y:736 + //line proto.y:738 { protoVAL.extDecls = []*extendElement{{field: protoDollar[1].fld}} } - case 144: + case 145: protoDollar = protoS[protopt-1 : protopt+1] - //line proto.y:739 + //line proto.y:741 { protoVAL.extDecls = []*extendElement{{group: protoDollar[1].grp}} } - case 145: + case 146: protoDollar = protoS[protopt-1 : protopt+1] - //line proto.y:742 + //line proto.y:744 { protoVAL.extDecls = []*extendElement{{empty: protoDollar[1].b}} } - case 146: + case 147: protoDollar = protoS[protopt-5 : protopt+1] - //line proto.y:746 + //line proto.y:748 { protoVAL.svc = &serviceNode{name: protoDollar[2].id, decls: protoDollar[4].svcDecls} protoVAL.svc.setRange(protoDollar[1].id, protoDollar[5].b) } - case 147: + case 148: protoDollar = protoS[protopt-2 : protopt+1] - //line proto.y:751 + //line proto.y:753 { protoVAL.svcDecls = append(protoDollar[1].svcDecls, protoDollar[2].svcDecls...) } - case 149: + case 150: protoDollar = protoS[protopt-0 : protopt+1] - //line proto.y:755 + //line proto.y:757 { protoVAL.svcDecls = nil } - case 150: + case 151: protoDollar = protoS[protopt-1 : protopt+1] - //line proto.y:762 + //line proto.y:764 { protoVAL.svcDecls = []*serviceElement{{option: protoDollar[1].opts[0]}} } - case 151: + case 152: protoDollar = protoS[protopt-1 : protopt+1] - //line proto.y:765 + //line proto.y:767 { protoVAL.svcDecls = []*serviceElement{{rpc: protoDollar[1].mtd}} } - case 152: + case 153: protoDollar = protoS[protopt-1 : protopt+1] - //line proto.y:768 + //line proto.y:770 { protoVAL.svcDecls = []*serviceElement{{empty: protoDollar[1].b}} } - case 153: + case 154: protoDollar = protoS[protopt-10 : protopt+1] - //line proto.y:772 + //line proto.y:774 { protoVAL.mtd = &methodNode{name: protoDollar[2].id, input: protoDollar[4].rpcType, output: protoDollar[8].rpcType} protoVAL.mtd.setRange(protoDollar[1].id, protoDollar[10].b) } - case 154: + case 155: protoDollar = protoS[protopt-12 : protopt+1] - //line proto.y:776 + //line proto.y:778 { protoVAL.mtd = &methodNode{name: protoDollar[2].id, input: protoDollar[4].rpcType, output: protoDollar[8].rpcType, options: protoDollar[11].opts} protoVAL.mtd.setRange(protoDollar[1].id, protoDollar[12].b) } - case 155: + case 156: protoDollar = protoS[protopt-2 : protopt+1] - //line proto.y:781 + //line proto.y:783 { protoVAL.rpcType = &rpcTypeNode{msgType: protoDollar[2].id, streamKeyword: protoDollar[1].id} protoVAL.rpcType.setRange(protoDollar[1].id, protoDollar[2].id) } - case 156: + case 157: protoDollar = protoS[protopt-1 : protopt+1] - //line proto.y:785 + //line proto.y:787 { protoVAL.rpcType = &rpcTypeNode{msgType: protoDollar[1].id} protoVAL.rpcType.setRange(protoDollar[1].id, protoDollar[1].id) } - case 157: + case 158: protoDollar = protoS[protopt-2 : protopt+1] - //line proto.y:790 + //line proto.y:792 { protoVAL.opts = append(protoDollar[1].opts, protoDollar[2].opts...) } - case 159: + case 160: protoDollar = protoS[protopt-0 : protopt+1] - //line proto.y:794 + //line proto.y:796 { protoVAL.opts = nil } - case 160: + case 161: protoDollar = protoS[protopt-1 : protopt+1] - //line proto.y:798 + //line proto.y:800 { protoVAL.opts = protoDollar[1].opts } - case 161: + case 162: protoDollar = protoS[protopt-1 : protopt+1] - //line proto.y:801 + //line proto.y:803 { protoVAL.opts = nil } diff --git a/desc/protoprint/testfiles/desc_test_complex_source_info-default.proto b/desc/protoprint/testfiles/desc_test_complex_source_info-default.proto index 7eaee81e..a3460ab7 100644 --- a/desc/protoprint/testfiles/desc_test_complex_source_info-default.proto +++ b/desc/protoprint/testfiles/desc_test_complex_source_info-default.proto @@ -128,6 +128,52 @@ service TestTestService { } } +message Rule { + message StringRule { + optional string pattern = 1; + + optional bool allow_empty = 2; + + optional int32 min_len = 3; + + optional int32 max_len = 4; + } + + message IntRule { + optional int64 min_val = 1; + + optional uint64 max_val = 2; + } + + message RepeatedRule { + optional bool allow_empty = 1; + + optional int32 min_items = 2; + + optional int32 max_items = 3; + + optional Rule items = 4; + } + + oneof rule { + StringRule string = 1; + + RepeatedRule repeated = 2; + + IntRule int = 3; + } + + +} + +extend google.protobuf.FieldOptions { + optional Rule rules = 1234; +} + +message IsAuthorizedReq { + repeated string subjects = 1 [(foo.bar.rules) = { repeated:>> }]; +} + // tests cases where field names collide with keywords message KeywordCollisions { diff --git a/desc/protoprint/testfiles/desc_test_complex_source_info-multiline-style-comments.proto b/desc/protoprint/testfiles/desc_test_complex_source_info-multiline-style-comments.proto index 66eaa1f1..950a6f8d 100644 --- a/desc/protoprint/testfiles/desc_test_complex_source_info-multiline-style-comments.proto +++ b/desc/protoprint/testfiles/desc_test_complex_source_info-multiline-style-comments.proto @@ -128,6 +128,52 @@ service TestTestService { } } +message Rule { + message StringRule { + optional string pattern = 1; + + optional bool allow_empty = 2; + + optional int32 min_len = 3; + + optional int32 max_len = 4; + } + + message IntRule { + optional int64 min_val = 1; + + optional uint64 max_val = 2; + } + + message RepeatedRule { + optional bool allow_empty = 1; + + optional int32 min_items = 2; + + optional int32 max_items = 3; + + optional Rule items = 4; + } + + oneof rule { + StringRule string = 1; + + RepeatedRule repeated = 2; + + IntRule int = 3; + } + + +} + +extend google.protobuf.FieldOptions { + optional Rule rules = 1234; +} + +message IsAuthorizedReq { + repeated string subjects = 1 [(foo.bar.rules) = { repeated:>> }]; +} + /* tests cases where field names collide with keywords */ message KeywordCollisions { diff --git a/desc/protoprint/testfiles/desc_test_complex_source_info-sorted-AND-multiline-style-comments.proto b/desc/protoprint/testfiles/desc_test_complex_source_info-sorted-AND-multiline-style-comments.proto index df415f4d..6005e2b8 100644 --- a/desc/protoprint/testfiles/desc_test_complex_source_info-sorted-AND-multiline-style-comments.proto +++ b/desc/protoprint/testfiles/desc_test_complex_source_info-sorted-AND-multiline-style-comments.proto @@ -20,6 +20,10 @@ message Another { optional Test.Nested._NestedNested.EEE fff = 2 [default = V1]; } +message IsAuthorizedReq { + repeated string subjects = 1 [(foo.bar.rules) = { repeated:>> }]; +} + message KeywordCollisionOptions { optional uint64 id = 1 [(foo.bar.bool) = true, (foo.bar.bytes) = "bytes", (foo.bar.default) = 222, (foo.bar.double) = 3.141590, (foo.bar.enum) = true, (foo.bar.extend) = true, (foo.bar.extensions) = true, (foo.bar.false) = -111, (foo.bar.fixed32) = 3232, (foo.bar.fixed64) = 6464, (foo.bar.float) = 3.140000, (foo.bar.import) = true, (foo.bar.int32) = 32, (foo.bar.int64) = 64, (foo.bar.message) = true, (foo.bar.option) = true, (foo.bar.optional) = true, (foo.bar.package) = true, (foo.bar.public) = true, (foo.bar.repeated) = true, (foo.bar.required) = true, (foo.bar.reserved) = true, (foo.bar.rpc) = true, (foo.bar.service) = true, (foo.bar.sfixed32) = -3232, (foo.bar.sfixed64) = -6464, (foo.bar.sint32) = -32, (foo.bar.sint64) = -64, (foo.bar.string) = "string", (foo.bar.syntax) = true, (foo.bar.to) = true, (foo.bar.true) = 111, (foo.bar.uint32) = 3200, (foo.bar.uint64) = 6400, (foo.bar.weak) = true]; @@ -100,6 +104,44 @@ message KeywordCollisions { optional int32 default = 35; } +message Rule { + oneof rule { + StringRule string = 1; + + RepeatedRule repeated = 2; + + IntRule int = 3; + } + + + + message IntRule { + optional int64 min_val = 1; + + optional uint64 max_val = 2; + } + + message RepeatedRule { + optional bool allow_empty = 1; + + optional int32 min_items = 2; + + optional int32 max_items = 3; + + optional Rule items = 4; + } + + message StringRule { + optional string pattern = 1; + + optional bool allow_empty = 2; + + optional int32 min_len = 3; + + optional int32 max_len = 4; + } +} + message Simple { optional string name = 1; @@ -197,6 +239,8 @@ extend google.protobuf.ExtensionRangeOptions { } extend google.protobuf.FieldOptions { + optional Rule rules = 1234; + optional bool syntax = 20001; optional bool import = 20002; diff --git a/desc/protoprint/testfiles/desc_test_complex_source_info-sorted.proto b/desc/protoprint/testfiles/desc_test_complex_source_info-sorted.proto index 5d3bc0a9..74754547 100644 --- a/desc/protoprint/testfiles/desc_test_complex_source_info-sorted.proto +++ b/desc/protoprint/testfiles/desc_test_complex_source_info-sorted.proto @@ -20,6 +20,10 @@ message Another { optional Test.Nested._NestedNested.EEE fff = 2 [default = V1]; } +message IsAuthorizedReq { + repeated string subjects = 1 [(foo.bar.rules) = { repeated:>> }]; +} + message KeywordCollisionOptions { optional uint64 id = 1 [(foo.bar.bool) = true, (foo.bar.bytes) = "bytes", (foo.bar.default) = 222, (foo.bar.double) = 3.141590, (foo.bar.enum) = true, (foo.bar.extend) = true, (foo.bar.extensions) = true, (foo.bar.false) = -111, (foo.bar.fixed32) = 3232, (foo.bar.fixed64) = 6464, (foo.bar.float) = 3.140000, (foo.bar.import) = true, (foo.bar.int32) = 32, (foo.bar.int64) = 64, (foo.bar.message) = true, (foo.bar.option) = true, (foo.bar.optional) = true, (foo.bar.package) = true, (foo.bar.public) = true, (foo.bar.repeated) = true, (foo.bar.required) = true, (foo.bar.reserved) = true, (foo.bar.rpc) = true, (foo.bar.service) = true, (foo.bar.sfixed32) = -3232, (foo.bar.sfixed64) = -6464, (foo.bar.sint32) = -32, (foo.bar.sint64) = -64, (foo.bar.string) = "string", (foo.bar.syntax) = true, (foo.bar.to) = true, (foo.bar.true) = 111, (foo.bar.uint32) = 3200, (foo.bar.uint64) = 6400, (foo.bar.weak) = true]; @@ -98,6 +102,44 @@ message KeywordCollisions { optional int32 default = 35; } +message Rule { + oneof rule { + StringRule string = 1; + + RepeatedRule repeated = 2; + + IntRule int = 3; + } + + + + message IntRule { + optional int64 min_val = 1; + + optional uint64 max_val = 2; + } + + message RepeatedRule { + optional bool allow_empty = 1; + + optional int32 min_items = 2; + + optional int32 max_items = 3; + + optional Rule items = 4; + } + + message StringRule { + optional string pattern = 1; + + optional bool allow_empty = 2; + + optional int32 min_len = 3; + + optional int32 max_len = 4; + } +} + message Simple { optional string name = 1; @@ -195,6 +237,8 @@ extend google.protobuf.ExtensionRangeOptions { } extend google.protobuf.FieldOptions { + optional Rule rules = 1234; + optional bool syntax = 20001; optional bool import = 20002; diff --git a/internal/testprotos/desc_test1.pb.go b/internal/testprotos/desc_test1.pb.go index 5096e2b9..edc1c408 100644 --- a/internal/testprotos/desc_test1.pb.go +++ b/internal/testprotos/desc_test1.pb.go @@ -27,6 +27,8 @@ It has these top-level messages: Test Another Validator + Rule + IsAuthorizedReq KeywordCollisions KeywordCollisionOptions PrimitiveDefaults diff --git a/internal/testprotos/desc_test_complex.pb.go b/internal/testprotos/desc_test_complex.pb.go index 64b08c17..6e37da86 100644 --- a/internal/testprotos/desc_test_complex.pb.go +++ b/internal/testprotos/desc_test_complex.pb.go @@ -337,6 +337,283 @@ func (m *Validator_Permission) GetEntity() string { return "" } +type Rule struct { + // Types that are valid to be assigned to Rule: + // *Rule_String_ + // *Rule_Repeated + // *Rule_Int + Rule isRule_Rule `protobuf_oneof:"rule"` + XXX_unrecognized []byte `json:"-"` +} + +func (m *Rule) Reset() { *m = Rule{} } +func (m *Rule) String() string { return proto.CompactTextString(m) } +func (*Rule) ProtoMessage() {} +func (*Rule) Descriptor() ([]byte, []int) { return fileDescriptor3, []int{4} } + +type isRule_Rule interface { + isRule_Rule() +} + +type Rule_String_ struct { + String_ *Rule_StringRule `protobuf:"bytes,1,opt,name=string,oneof"` +} +type Rule_Repeated struct { + Repeated *Rule_RepeatedRule `protobuf:"bytes,2,opt,name=repeated,oneof"` +} +type Rule_Int struct { + Int *Rule_IntRule `protobuf:"bytes,3,opt,name=int,oneof"` +} + +func (*Rule_String_) isRule_Rule() {} +func (*Rule_Repeated) isRule_Rule() {} +func (*Rule_Int) isRule_Rule() {} + +func (m *Rule) GetRule() isRule_Rule { + if m != nil { + return m.Rule + } + return nil +} + +func (m *Rule) GetString_() *Rule_StringRule { + if x, ok := m.GetRule().(*Rule_String_); ok { + return x.String_ + } + return nil +} + +func (m *Rule) GetRepeated() *Rule_RepeatedRule { + if x, ok := m.GetRule().(*Rule_Repeated); ok { + return x.Repeated + } + return nil +} + +func (m *Rule) GetInt() *Rule_IntRule { + if x, ok := m.GetRule().(*Rule_Int); ok { + return x.Int + } + return nil +} + +// XXX_OneofFuncs is for the internal use of the proto package. +func (*Rule) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { + return _Rule_OneofMarshaler, _Rule_OneofUnmarshaler, _Rule_OneofSizer, []interface{}{ + (*Rule_String_)(nil), + (*Rule_Repeated)(nil), + (*Rule_Int)(nil), + } +} + +func _Rule_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { + m := msg.(*Rule) + // rule + switch x := m.Rule.(type) { + case *Rule_String_: + b.EncodeVarint(1<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.String_); err != nil { + return err + } + case *Rule_Repeated: + b.EncodeVarint(2<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.Repeated); err != nil { + return err + } + case *Rule_Int: + b.EncodeVarint(3<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.Int); err != nil { + return err + } + case nil: + default: + return fmt.Errorf("Rule.Rule has unexpected type %T", x) + } + return nil +} + +func _Rule_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { + m := msg.(*Rule) + switch tag { + case 1: // rule.string + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(Rule_StringRule) + err := b.DecodeMessage(msg) + m.Rule = &Rule_String_{msg} + return true, err + case 2: // rule.repeated + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(Rule_RepeatedRule) + err := b.DecodeMessage(msg) + m.Rule = &Rule_Repeated{msg} + return true, err + case 3: // rule.int + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(Rule_IntRule) + err := b.DecodeMessage(msg) + m.Rule = &Rule_Int{msg} + return true, err + default: + return false, nil + } +} + +func _Rule_OneofSizer(msg proto.Message) (n int) { + m := msg.(*Rule) + // rule + switch x := m.Rule.(type) { + case *Rule_String_: + s := proto.Size(x.String_) + n += proto.SizeVarint(1<<3 | proto.WireBytes) + n += proto.SizeVarint(uint64(s)) + n += s + case *Rule_Repeated: + s := proto.Size(x.Repeated) + n += proto.SizeVarint(2<<3 | proto.WireBytes) + n += proto.SizeVarint(uint64(s)) + n += s + case *Rule_Int: + s := proto.Size(x.Int) + n += proto.SizeVarint(3<<3 | proto.WireBytes) + n += proto.SizeVarint(uint64(s)) + n += s + case nil: + default: + panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) + } + return n +} + +type Rule_StringRule struct { + Pattern *string `protobuf:"bytes,1,opt,name=pattern" json:"pattern,omitempty"` + AllowEmpty *bool `protobuf:"varint,2,opt,name=allow_empty,json=allowEmpty" json:"allow_empty,omitempty"` + MinLen *int32 `protobuf:"varint,3,opt,name=min_len,json=minLen" json:"min_len,omitempty"` + MaxLen *int32 `protobuf:"varint,4,opt,name=max_len,json=maxLen" json:"max_len,omitempty"` + XXX_unrecognized []byte `json:"-"` +} + +func (m *Rule_StringRule) Reset() { *m = Rule_StringRule{} } +func (m *Rule_StringRule) String() string { return proto.CompactTextString(m) } +func (*Rule_StringRule) ProtoMessage() {} +func (*Rule_StringRule) Descriptor() ([]byte, []int) { return fileDescriptor3, []int{4, 0} } + +func (m *Rule_StringRule) GetPattern() string { + if m != nil && m.Pattern != nil { + return *m.Pattern + } + return "" +} + +func (m *Rule_StringRule) GetAllowEmpty() bool { + if m != nil && m.AllowEmpty != nil { + return *m.AllowEmpty + } + return false +} + +func (m *Rule_StringRule) GetMinLen() int32 { + if m != nil && m.MinLen != nil { + return *m.MinLen + } + return 0 +} + +func (m *Rule_StringRule) GetMaxLen() int32 { + if m != nil && m.MaxLen != nil { + return *m.MaxLen + } + return 0 +} + +type Rule_IntRule struct { + MinVal *int64 `protobuf:"varint,1,opt,name=min_val,json=minVal" json:"min_val,omitempty"` + MaxVal *uint64 `protobuf:"varint,2,opt,name=max_val,json=maxVal" json:"max_val,omitempty"` + XXX_unrecognized []byte `json:"-"` +} + +func (m *Rule_IntRule) Reset() { *m = Rule_IntRule{} } +func (m *Rule_IntRule) String() string { return proto.CompactTextString(m) } +func (*Rule_IntRule) ProtoMessage() {} +func (*Rule_IntRule) Descriptor() ([]byte, []int) { return fileDescriptor3, []int{4, 1} } + +func (m *Rule_IntRule) GetMinVal() int64 { + if m != nil && m.MinVal != nil { + return *m.MinVal + } + return 0 +} + +func (m *Rule_IntRule) GetMaxVal() uint64 { + if m != nil && m.MaxVal != nil { + return *m.MaxVal + } + return 0 +} + +type Rule_RepeatedRule struct { + AllowEmpty *bool `protobuf:"varint,1,opt,name=allow_empty,json=allowEmpty" json:"allow_empty,omitempty"` + MinItems *int32 `protobuf:"varint,2,opt,name=min_items,json=minItems" json:"min_items,omitempty"` + MaxItems *int32 `protobuf:"varint,3,opt,name=max_items,json=maxItems" json:"max_items,omitempty"` + Items *Rule `protobuf:"bytes,4,opt,name=items" json:"items,omitempty"` + XXX_unrecognized []byte `json:"-"` +} + +func (m *Rule_RepeatedRule) Reset() { *m = Rule_RepeatedRule{} } +func (m *Rule_RepeatedRule) String() string { return proto.CompactTextString(m) } +func (*Rule_RepeatedRule) ProtoMessage() {} +func (*Rule_RepeatedRule) Descriptor() ([]byte, []int) { return fileDescriptor3, []int{4, 2} } + +func (m *Rule_RepeatedRule) GetAllowEmpty() bool { + if m != nil && m.AllowEmpty != nil { + return *m.AllowEmpty + } + return false +} + +func (m *Rule_RepeatedRule) GetMinItems() int32 { + if m != nil && m.MinItems != nil { + return *m.MinItems + } + return 0 +} + +func (m *Rule_RepeatedRule) GetMaxItems() int32 { + if m != nil && m.MaxItems != nil { + return *m.MaxItems + } + return 0 +} + +func (m *Rule_RepeatedRule) GetItems() *Rule { + if m != nil { + return m.Items + } + return nil +} + +type IsAuthorizedReq struct { + Subjects []string `protobuf:"bytes,1,rep,name=subjects" json:"subjects,omitempty"` + XXX_unrecognized []byte `json:"-"` +} + +func (m *IsAuthorizedReq) Reset() { *m = IsAuthorizedReq{} } +func (m *IsAuthorizedReq) String() string { return proto.CompactTextString(m) } +func (*IsAuthorizedReq) ProtoMessage() {} +func (*IsAuthorizedReq) Descriptor() ([]byte, []int) { return fileDescriptor3, []int{5} } + +func (m *IsAuthorizedReq) GetSubjects() []string { + if m != nil { + return m.Subjects + } + return nil +} + type KeywordCollisions struct { Syntax *bool `protobuf:"varint,1,opt,name=syntax" json:"syntax,omitempty"` Import *bool `protobuf:"varint,2,opt,name=import" json:"import,omitempty"` @@ -379,7 +656,7 @@ type KeywordCollisions struct { func (m *KeywordCollisions) Reset() { *m = KeywordCollisions{} } func (m *KeywordCollisions) String() string { return proto.CompactTextString(m) } func (*KeywordCollisions) ProtoMessage() {} -func (*KeywordCollisions) Descriptor() ([]byte, []int) { return fileDescriptor3, []int{4} } +func (*KeywordCollisions) Descriptor() ([]byte, []int) { return fileDescriptor3, []int{6} } func (m *KeywordCollisions) GetSyntax() bool { if m != nil && m.Syntax != nil { @@ -635,7 +912,7 @@ type KeywordCollisionOptions struct { func (m *KeywordCollisionOptions) Reset() { *m = KeywordCollisionOptions{} } func (m *KeywordCollisionOptions) String() string { return proto.CompactTextString(m) } func (*KeywordCollisionOptions) ProtoMessage() {} -func (*KeywordCollisionOptions) Descriptor() ([]byte, []int) { return fileDescriptor3, []int{5} } +func (*KeywordCollisionOptions) Descriptor() ([]byte, []int) { return fileDescriptor3, []int{7} } func (m *KeywordCollisionOptions) GetId() uint64 { if m != nil && m.Id != nil { @@ -696,6 +973,15 @@ var E_Validator = &proto.ExtensionDesc{ Filename: "desc_test_complex.proto", } +var E_Rules = &proto.ExtensionDesc{ + ExtendedType: (*google_protobuf1.FieldOptions)(nil), + ExtensionType: (*Rule)(nil), + Field: 1234, + Name: "foo.bar.rules", + Tag: "bytes,1234,opt,name=rules", + Filename: "desc_test_complex.proto", +} + var E_Syntax = &proto.ExtensionDesc{ ExtendedType: (*google_protobuf1.FieldOptions)(nil), ExtensionType: (*bool)(nil), @@ -1029,6 +1315,11 @@ func init() { proto.RegisterType((*Another)(nil), "foo.bar.Another") proto.RegisterType((*Validator)(nil), "foo.bar.Validator") proto.RegisterType((*Validator_Permission)(nil), "foo.bar.Validator.Permission") + proto.RegisterType((*Rule)(nil), "foo.bar.Rule") + proto.RegisterType((*Rule_StringRule)(nil), "foo.bar.Rule.StringRule") + proto.RegisterType((*Rule_IntRule)(nil), "foo.bar.Rule.IntRule") + proto.RegisterType((*Rule_RepeatedRule)(nil), "foo.bar.Rule.RepeatedRule") + proto.RegisterType((*IsAuthorizedReq)(nil), "foo.bar.IsAuthorizedReq") proto.RegisterType((*KeywordCollisions)(nil), "foo.bar.KeywordCollisions") proto.RegisterType((*KeywordCollisionOptions)(nil), "foo.bar.KeywordCollisionOptions") proto.RegisterEnum("foo.bar.Test_Nested__NestedNested_EEE", Test_Nested__NestedNested_EEE_name, Test_Nested__NestedNested_EEE_value) @@ -1040,6 +1331,7 @@ func init() { proto.RegisterExtension(E_Eee) proto.RegisterExtension(E_A) proto.RegisterExtension(E_Validator) + proto.RegisterExtension(E_Rules) proto.RegisterExtension(E_Syntax) proto.RegisterExtension(E_Import) proto.RegisterExtension(E_Public) @@ -1186,140 +1478,160 @@ var _TestTestService_serviceDesc = grpc.ServiceDesc{ func init() { proto.RegisterFile("desc_test_complex.proto", fileDescriptor3) } var fileDescriptor3 = []byte{ - // 2154 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x98, 0x5d, 0x8c, 0xd4, 0xd6, - 0x15, 0xc7, 0xf7, 0xd8, 0x33, 0xb3, 0xbe, 0x97, 0x2f, 0xe3, 0x90, 0x60, 0x26, 0x05, 0xcc, 0xa4, - 0x42, 0x23, 0x54, 0xcd, 0xce, 0xce, 0x0e, 0x9b, 0xd6, 0x49, 0xca, 0x42, 0x33, 0x25, 0x28, 0x0d, - 0xa4, 0x4e, 0x4a, 0xaa, 0x76, 0x25, 0xf0, 0xcc, 0xdc, 0xd9, 0x75, 0xf0, 0x8c, 0xa7, 0xb6, 0x87, - 0xb0, 0x34, 0x52, 0x56, 0x45, 0x8d, 0xe8, 0x53, 0x29, 0xea, 0x03, 0xaa, 0x36, 0x12, 0x6c, 0xda, - 0x86, 0x34, 0x69, 0x4b, 0xd3, 0x2f, 0x92, 0x7e, 0x41, 0xd3, 0x07, 0x1a, 0x29, 0x12, 0xea, 0x13, - 0x7d, 0x49, 0x90, 0xbd, 0xaa, 0x78, 0x44, 0x4a, 0x91, 0x92, 0x27, 0xaa, 0xfb, 0x61, 0xcf, 0x2e, - 0x50, 0x39, 0x59, 0x89, 0xb5, 0xcf, 0xbd, 0xe7, 0x77, 0x3f, 0x8f, 0xcf, 0xf9, 0xb3, 0x78, 0x63, - 0x9b, 0x04, 0xad, 0x43, 0x21, 0x09, 0xc2, 0x43, 0x2d, 0xaf, 0xdb, 0x77, 0xc9, 0xb1, 0x4a, 0xdf, - 0xf7, 0x42, 0x4f, 0x1b, 0xed, 0x78, 0x5e, 0xa5, 0x69, 0xfb, 0x45, 0x63, 0xc6, 0xf3, 0x66, 0x5c, - 0x32, 0xc6, 0x9a, 0x9b, 0x83, 0xce, 0x18, 0x25, 0x7c, 0xa7, 0x1f, 0x7a, 0x3e, 0x77, 0x2d, 0x7d, - 0x01, 0x17, 0x9e, 0x71, 0x28, 0xab, 0x69, 0x38, 0xd7, 0xb3, 0xbb, 0x44, 0x07, 0x03, 0xca, 0xc8, - 0x62, 0xef, 0xda, 0x5a, 0x2c, 0x39, 0x6d, 0x5d, 0x32, 0xa0, 0x9c, 0xb3, 0x24, 0xa7, 0x5d, 0x7a, - 0x3f, 0x87, 0x73, 0xcf, 0x92, 0x20, 0xd4, 0x34, 0x2c, 0x77, 0x3c, 0x4f, 0xf8, 0xe6, 0x5f, 0xec, - 0x78, 0xde, 0x8b, 0xda, 0x06, 0x9c, 0xb7, 0x7d, 0xdf, 0x9e, 0xd3, 0x25, 0x43, 0x2e, 0xe7, 0x2d, - 0x6e, 0x68, 0x9b, 0x31, 0x04, 0xba, 0x6c, 0x40, 0x79, 0x55, 0x6d, 0x5d, 0x45, 0xac, 0xab, 0xc2, - 0xa7, 0xb4, 0x20, 0xa0, 0xdd, 0xbe, 0x9e, 0x33, 0xe4, 0x7b, 0x76, 0xfb, 0x5a, 0x09, 0x43, 0x57, - 0xcf, 0xb3, 0xee, 0x0d, 0x69, 0x37, 0x5d, 0x41, 0xe5, 0xa9, 0x46, 0x2f, 0xf4, 0xe7, 0x2c, 0xe8, - 0x6a, 0x75, 0x0c, 0x4d, 0xbd, 0x60, 0x40, 0x79, 0xb5, 0xb9, 0x7d, 0xba, 0x5a, 0xad, 0x4e, 0x57, - 0xab, 0xe3, 0xd3, 0xd5, 0x6a, 0x6d, 0xba, 0x5a, 0x9d, 0x98, 0xae, 0x56, 0xeb, 0xd3, 0xd5, 0xea, - 0xce, 0xe9, 0x6a, 0x75, 0x72, 0xba, 0x5a, 0x7d, 0xb8, 0x33, 0x68, 0xda, 0xfe, 0x36, 0x0b, 0x9a, - 0xc5, 0x3a, 0x2e, 0xf0, 0x21, 0x34, 0x15, 0xcb, 0x47, 0xc8, 0x9c, 0xd8, 0x0b, 0x7d, 0xa5, 0x3b, - 0x39, 0x6a, 0xbb, 0x03, 0xc2, 0x76, 0x9e, 0xb7, 0xb8, 0x61, 0x4a, 0x5f, 0x84, 0xe2, 0x39, 0x09, - 0x17, 0xf6, 0x93, 0x20, 0x24, 0xed, 0xe2, 0xbf, 0x01, 0xaf, 0x39, 0xc4, 0xdf, 0x45, 0xcb, 0x3e, - 0xac, 0x2d, 0xb7, 0xf9, 0x6f, 0x6d, 0x1b, 0x3f, 0x32, 0x36, 0xfe, 0xaa, 0xda, 0x9a, 0x15, 0xbb, - 0xb0, 0x58, 0x97, 0xa9, 0x9e, 0x8e, 0xd0, 0x6a, 0x2c, 0xcf, 0x7a, 0xde, 0x62, 0x21, 0x17, 0xf4, - 0x3d, 0xaf, 0xf4, 0x18, 0x96, 0x1b, 0x8d, 0x86, 0x56, 0xc0, 0xd2, 0x81, 0x27, 0xd5, 0x11, 0xfa, - 0x3c, 0x38, 0xae, 0x02, 0x7b, 0xd6, 0x54, 0x89, 0x3d, 0x27, 0x54, 0x99, 0x3d, 0xeb, 0x6a, 0x8e, - 0x3d, 0x77, 0xaa, 0x79, 0xf6, 0x9c, 0x54, 0x0b, 0xb5, 0x32, 0x56, 0x0e, 0xcd, 0xd8, 0x7e, 0xd3, - 0x25, 0xc7, 0xb5, 0x95, 0x33, 0xea, 0x6d, 0xb6, 0xcd, 0xd1, 0xbd, 0xbc, 0xd7, 0xdc, 0x70, 0x3a, - 0x42, 0xab, 0xb0, 0x3c, 0x43, 0xa7, 0x96, 0x9b, 0x9e, 0x77, 0x26, 0x42, 0xb7, 0xf6, 0xd7, 0x1e, - 0xc1, 0x34, 0x84, 0x18, 0xbe, 0xb5, 0xc2, 0x63, 0xa8, 0x92, 0xc4, 0x50, 0xe5, 0x29, 0x12, 0x04, - 0xf6, 0x0c, 0x39, 0xd0, 0x0f, 0x1d, 0xaf, 0x17, 0xe8, 0xaf, 0x2e, 0x00, 0x3b, 0xa5, 0x84, 0xd8, - 0x91, 0x57, 0xda, 0xea, 0x3f, 0x61, 0x87, 0xaa, 0xbc, 0x29, 0xa9, 0x1f, 0x4a, 0x45, 0xe5, 0x7b, - 0x11, 0xca, 0x3d, 0x6f, 0x1f, 0x3f, 0xbe, 0x43, 0x55, 0xfe, 0x2b, 0xab, 0xaf, 0xe5, 0x86, 0x2d, - 0xa5, 0x33, 0x12, 0x1e, 0xdd, 0xdd, 0xf3, 0xc2, 0x59, 0xe2, 0xd3, 0x73, 0x0a, 0xff, 0xff, 0x39, - 0xd1, 0x2e, 0xed, 0x51, 0x2c, 0x77, 0x3a, 0x1d, 0x76, 0x2b, 0x6b, 0x6b, 0xdb, 0x57, 0xc6, 0x03, - 0x3f, 0xed, 0xca, 0x8a, 0x1b, 0xa9, 0x34, 0x1a, 0x0d, 0x53, 0x3a, 0x38, 0x6e, 0x51, 0xcc, 0x7c, - 0x03, 0x4e, 0x47, 0xe8, 0x21, 0x2c, 0xdb, 0xcd, 0x96, 0x0a, 0xaa, 0xa4, 0xca, 0xc5, 0x51, 0x16, - 0xc5, 0xea, 0x77, 0x4b, 0x32, 0x86, 0x0e, 0xfd, 0x15, 0x94, 0x64, 0xf5, 0x8a, 0x7c, 0x3a, 0x42, - 0x5b, 0xb1, 0xdc, 0x26, 0x1d, 0x55, 0x56, 0x25, 0x15, 0x8a, 0x0a, 0x96, 0x9b, 0xb6, 0xaf, 0x5e, - 0x96, 0xa8, 0xcb, 0x0c, 0xf3, 0x3b, 0x1d, 0xa1, 0x3c, 0x73, 0xb9, 0x1a, 0x21, 0x58, 0x8c, 0x91, - 0xa4, 0x8e, 0x2c, 0xc6, 0xe8, 0x7e, 0x7c, 0xdf, 0x0e, 0x31, 0x66, 0x7b, 0x87, 0xa0, 0xae, 0xd0, - 0xee, 0x51, 0x9c, 0xc7, 0x72, 0x77, 0x7b, 0x77, 0x31, 0x46, 0x18, 0x2b, 0xc5, 0x02, 0xce, 0xcd, - 0x79, 0xae, 0xb7, 0x18, 0x23, 0x05, 0x17, 0x8a, 0x39, 0xf5, 0xfd, 0x13, 0x85, 0xc5, 0x18, 0xe5, - 0xb0, 0xa4, 0x82, 0x78, 0x4a, 0xa5, 0x8f, 0x00, 0xa3, 0x83, 0xb6, 0xeb, 0xb4, 0xed, 0xd0, 0xf3, - 0xb5, 0xcf, 0xe3, 0x35, 0xf6, 0x20, 0x9c, 0x25, 0xbd, 0xd0, 0x69, 0xd9, 0x21, 0x69, 0xb3, 0x53, - 0x52, 0xac, 0x95, 0x8d, 0xda, 0x63, 0x18, 0xf7, 0x89, 0xdf, 0x75, 0x82, 0xc0, 0xf1, 0x7a, 0xec, - 0x33, 0x5c, 0x55, 0xdb, 0x9c, 0x1e, 0x53, 0x3a, 0x5a, 0xe5, 0xe9, 0xd4, 0xc9, 0x5a, 0x06, 0x14, - 0x9f, 0xc3, 0x78, 0xd8, 0xa3, 0x8d, 0xe3, 0x82, 0xdd, 0xa2, 0x57, 0xcc, 0xe6, 0x5a, 0x5b, 0xdb, - 0x74, 0x8f, 0x81, 0x76, 0x33, 0x07, 0x4b, 0x38, 0x6a, 0x0f, 0xe0, 0x02, 0x5d, 0x4c, 0x38, 0xc7, - 0xae, 0x08, 0x59, 0xc2, 0x2a, 0x95, 0x71, 0x81, 0x7b, 0x6a, 0x08, 0xe7, 0xbf, 0x76, 0x60, 0xef, - 0xbe, 0xfd, 0xea, 0x88, 0xa6, 0xe0, 0x9c, 0xd5, 0xd8, 0xfd, 0xb8, 0x0a, 0xb4, 0xf1, 0x39, 0x6b, - 0xdf, 0xb3, 0x0d, 0x55, 0x2a, 0x7d, 0x58, 0xc0, 0xeb, 0x9f, 0x24, 0x73, 0x2f, 0x78, 0x7e, 0xfb, - 0x2b, 0x9e, 0xeb, 0x3a, 0x74, 0x25, 0x01, 0x1d, 0x37, 0x98, 0xeb, 0x85, 0xf6, 0x31, 0xb1, 0x6d, - 0x61, 0xd1, 0x76, 0xa7, 0xdb, 0xf7, 0xfc, 0x90, 0xcd, 0xa7, 0x58, 0xc2, 0xa2, 0xed, 0xfd, 0x41, - 0xd3, 0x75, 0x5a, 0x2c, 0xf1, 0x28, 0x96, 0xb0, 0x68, 0x8a, 0x7b, 0x81, 0xd8, 0x47, 0xf4, 0x1c, - 0x6b, 0x65, 0xef, 0x9a, 0x8e, 0x47, 0xfb, 0x76, 0xeb, 0x88, 0x3d, 0x43, 0xf4, 0x3c, 0x6b, 0x4e, - 0x4c, 0x36, 0x6b, 0xe8, 0x3b, 0xbd, 0x19, 0x96, 0x5c, 0x90, 0x25, 0x2c, 0x9a, 0x1d, 0x9a, 0x73, - 0x21, 0x09, 0xf4, 0x51, 0x9a, 0x73, 0x2c, 0x6e, 0xd0, 0x56, 0xa7, 0x17, 0x4e, 0xd4, 0x74, 0x85, - 0xe7, 0x0c, 0x66, 0x88, 0xd6, 0xc9, 0xba, 0x8e, 0x0c, 0x28, 0xcb, 0x16, 0x37, 0xe8, 0xc8, 0x03, - 0xee, 0x8c, 0x0d, 0x28, 0xaf, 0xb1, 0x84, 0x95, 0xb4, 0x4f, 0xd6, 0xf5, 0x55, 0x2c, 0xe5, 0x0a, - 0x8b, 0xad, 0x84, 0xfb, 0xaf, 0x36, 0xa0, 0xbc, 0xde, 0x12, 0x56, 0xd2, 0x3e, 0x59, 0xd7, 0xd7, - 0x18, 0x50, 0xd6, 0x2c, 0x61, 0xd1, 0x3d, 0x75, 0x9c, 0x63, 0xa4, 0x3d, 0x51, 0xd3, 0xd7, 0x1a, - 0x50, 0x1e, 0xb5, 0x12, 0x33, 0xed, 0x99, 0xac, 0xeb, 0xeb, 0x0c, 0x28, 0x17, 0xac, 0xc4, 0xd4, - 0x8a, 0x58, 0x09, 0x12, 0x48, 0x35, 0xa0, 0xbc, 0xce, 0x4a, 0xed, 0x61, 0xdf, 0x64, 0x5d, 0x5f, - 0x6f, 0x40, 0x59, 0xb5, 0x52, 0x9b, 0x9e, 0x69, 0xd3, 0xf3, 0x5c, 0x5d, 0xe3, 0x67, 0x4a, 0xdf, - 0xe9, 0xae, 0x3b, 0xae, 0x67, 0x87, 0xfa, 0x7d, 0x06, 0x94, 0x25, 0x8b, 0x1b, 0x74, 0xb5, 0x6d, - 0x6f, 0xd0, 0x74, 0x89, 0xbe, 0xc1, 0x80, 0x32, 0x58, 0xc2, 0xa2, 0xa3, 0x7b, 0x2c, 0x97, 0xd8, - 0xae, 0x7e, 0x3f, 0x1b, 0x25, 0xb5, 0x69, 0x9f, 0x4f, 0xfa, 0x84, 0x85, 0xfc, 0x03, 0xbc, 0x2f, - 0xb1, 0x79, 0xdf, 0x77, 0x06, 0x8e, 0x4f, 0xda, 0xfa, 0xc6, 0xa4, 0x8f, 0xdb, 0x74, 0x9f, 0x5d, - 0x9e, 0xa6, 0x74, 0x9d, 0xdf, 0xaa, 0x30, 0xe9, 0x7a, 0x49, 0x6f, 0xd0, 0xd5, 0x37, 0xf1, 0xf5, - 0xd2, 0x77, 0xea, 0x1d, 0x10, 0xff, 0xa8, 0xd3, 0x22, 0x7a, 0x91, 0x7b, 0x0b, 0x93, 0xd6, 0x06, - 0xbf, 0xdf, 0xd2, 0x1f, 0x64, 0xad, 0xf4, 0x95, 0xee, 0x82, 0xaf, 0x4e, 0xff, 0x1c, 0x8f, 0x2d, - 0x6e, 0xb1, 0xd8, 0x3f, 0x16, 0x92, 0x5e, 0x5b, 0xdf, 0xcc, 0xdb, 0xb9, 0xa5, 0x6d, 0xc1, 0x98, - 0xbd, 0xb1, 0x48, 0xd6, 0xb7, 0xb0, 0xbe, 0x65, 0x2d, 0x7c, 0x17, 0x74, 0x3a, 0xd2, 0xd6, 0xb7, - 0x26, 0xbb, 0xe0, 0x36, 0x2d, 0xbf, 0xa1, 0xa7, 0x1b, 0xac, 0x55, 0x0a, 0x3d, 0xba, 0xf6, 0xd0, - 0x1f, 0x10, 0x7d, 0x1b, 0x0b, 0x31, 0xf6, 0xce, 0xce, 0xda, 0x76, 0x03, 0xa2, 0x97, 0x78, 0xdc, - 0x31, 0x83, 0xee, 0xa8, 0x4d, 0x3a, 0xf6, 0xc0, 0x0d, 0xf5, 0x87, 0x78, 0x76, 0x16, 0x66, 0xe9, - 0x27, 0x32, 0xde, 0x78, 0xe7, 0x17, 0x26, 0x52, 0xb9, 0xf6, 0x2f, 0x60, 0xf5, 0x9e, 0x7e, 0x64, - 0xb9, 0x3d, 0x97, 0xe1, 0x64, 0x84, 0xe0, 0x54, 0x84, 0xe0, 0x4c, 0x84, 0xe0, 0x6c, 0x84, 0xe0, - 0x7c, 0x84, 0xe0, 0xad, 0x08, 0x89, 0xef, 0xe0, 0x9d, 0x08, 0xf1, 0xd0, 0xbf, 0x14, 0x21, 0xe3, - 0x4a, 0x84, 0xa6, 0xae, 0x46, 0x68, 0x7e, 0xd3, 0xb5, 0x08, 0xcd, 0xd7, 0xae, 0x47, 0x68, 0xd7, - 0x8d, 0x08, 0xbd, 0x74, 0x2b, 0x42, 0x67, 0x57, 0x8f, 0x8c, 0x7c, 0x12, 0xa1, 0xa9, 0x4d, 0x23, - 0xec, 0xe7, 0xfb, 0x31, 0x3a, 0xfc, 0xd1, 0xed, 0xdb, 0x3f, 0x88, 0xd1, 0xa5, 0xff, 0xdc, 0x66, - 0x3f, 0xa7, 0x62, 0x04, 0xaf, 0xc4, 0xe8, 0xdd, 0x5b, 0x4f, 0x4c, 0x9d, 0x8b, 0x51, 0xef, 0xe5, - 0x07, 0x6f, 0x7e, 0xb2, 0x0d, 0x4d, 0x9d, 0x8f, 0x11, 0x5c, 0x88, 0x11, 0x5c, 0x8c, 0x11, 0x5c, - 0x8a, 0x11, 0x5c, 0x89, 0x11, 0x5c, 0x8d, 0x11, 0x5c, 0x8b, 0x11, 0x5c, 0x8f, 0x11, 0xdc, 0x88, - 0x11, 0xdc, 0x8c, 0x11, 0x7c, 0x1c, 0x23, 0x98, 0x5f, 0x42, 0x70, 0x72, 0x09, 0x79, 0xa7, 0x96, - 0xd0, 0x8f, 0x6e, 0x8b, 0x1f, 0x38, 0xb3, 0x84, 0x3e, 0x00, 0xaa, 0x59, 0xb4, 0xd7, 0x41, 0x08, - 0x1b, 0x96, 0x93, 0xf6, 0xfc, 0x18, 0x16, 0x97, 0xd0, 0x0f, 0x41, 0x01, 0x15, 0xd8, 0x46, 0xa1, - 0x26, 0xf6, 0x63, 0xf2, 0xdd, 0x4c, 0x19, 0x4f, 0x4c, 0x3d, 0x3d, 0xbf, 0xe9, 0x9b, 0xf3, 0xb5, - 0xc3, 0xbb, 0x66, 0x5f, 0x1a, 0xd0, 0xf5, 0xcf, 0xa5, 0xab, 0x07, 0xb6, 0x78, 0x48, 0xd7, 0x0e, - 0xf0, 0x0a, 0xb0, 0x95, 0x43, 0xba, 0x70, 0x80, 0x0b, 0x00, 0x17, 0x01, 0x2e, 0x01, 0x5c, 0x01, - 0xb8, 0x0a, 0x70, 0x0d, 0xe0, 0x3a, 0xc0, 0x0d, 0x80, 0x9b, 0x00, 0x1f, 0x03, 0xcc, 0x4b, 0x70, - 0x52, 0xf2, 0x4e, 0x49, 0xcb, 0x96, 0x2a, 0x7d, 0x00, 0x5c, 0x6f, 0xd5, 0x5e, 0x06, 0xbc, 0x8e, - 0x56, 0x33, 0xfa, 0xef, 0x19, 0x11, 0x82, 0x8f, 0x62, 0xe5, 0x1b, 0x01, 0xf1, 0x77, 0x0f, 0xc2, - 0xd9, 0x3b, 0x6a, 0x79, 0x71, 0xa5, 0x59, 0xd2, 0xde, 0x3b, 0x51, 0x58, 0xab, 0x80, 0x86, 0x95, - 0x11, 0xad, 0xd0, 0x72, 0x1d, 0xd2, 0x0b, 0xb5, 0x9d, 0x58, 0xde, 0x4b, 0xc2, 0x0c, 0x50, 0x7d, - 0xef, 0x44, 0x61, 0xb5, 0x02, 0x9a, 0xa2, 0x80, 0x96, 0x1b, 0x04, 0xc4, 0x37, 0xbf, 0x8c, 0xf3, - 0xae, 0xdd, 0x24, 0xae, 0xb6, 0xfd, 0xae, 0xf2, 0xdf, 0x48, 0x62, 0xd7, 0xb2, 0x7b, 0x43, 0x15, - 0x70, 0x76, 0x41, 0x68, 0x41, 0x86, 0x99, 0x8f, 0xe3, 0x9c, 0x4f, 0xfa, 0x61, 0xb6, 0x7a, 0x58, - 0x5c, 0x00, 0x56, 0xa6, 0xee, 0xac, 0xf7, 0x94, 0x36, 0xbf, 0x8d, 0x65, 0x42, 0x48, 0xf6, 0x20, - 0xbf, 0x58, 0x80, 0xcf, 0x22, 0x09, 0x2c, 0x3a, 0xaa, 0xb9, 0x1b, 0x83, 0x9d, 0x3d, 0xf4, 0xef, - 0x16, 0xb8, 0x1e, 0x51, 0xd3, 0xa1, 0x85, 0x5e, 0xb1, 0xc0, 0x36, 0xbf, 0x8e, 0xd1, 0xd1, 0xb4, - 0x44, 0x6f, 0xb9, 0xc7, 0x50, 0xe1, 0xac, 0xd7, 0x4e, 0x46, 0x7a, 0xfb, 0x30, 0x1b, 0x48, 0xbb, - 0xbb, 0x8c, 0x5a, 0xc3, 0x51, 0xcc, 0x87, 0x93, 0x52, 0xa7, 0x6d, 0xbe, 0x6b, 0xbc, 0xaf, 0x3a, - 0xc4, 0x4d, 0x87, 0x3b, 0xb7, 0xb0, 0xa2, 0x16, 0x52, 0x50, 0x54, 0xbf, 0x0c, 0x70, 0x31, 0x01, - 0xb9, 0x3b, 0x05, 0x45, 0x79, 0xcc, 0x00, 0x5f, 0x4d, 0x40, 0xee, 0x6e, 0x4e, 0xf0, 0x6a, 0x9a, - 0x85, 0xfd, 0x54, 0x60, 0xcc, 0xd9, 0xfc, 0x52, 0x5a, 0x6e, 0xb3, 0xb8, 0x9f, 0x09, 0x2e, 0xf1, - 0x67, 0x47, 0xc3, 0x2b, 0x70, 0x06, 0xf9, 0x73, 0x11, 0x8b, 0xc9, 0x87, 0xbd, 0x53, 0x14, 0xec, - 0x2c, 0xee, 0x35, 0xc6, 0x25, 0x15, 0x9d, 0x62, 0xbc, 0xcc, 0x66, 0x60, 0xe7, 0x85, 0x00, 0xe6, - 0xde, 0x02, 0x9b, 0xac, 0x67, 0x61, 0xaf, 0x33, 0x2c, 0xd1, 0x04, 0x74, 0x77, 0x83, 0x4f, 0x35, - 0x1d, 0x0f, 0xf6, 0x54, 0x34, 0x24, 0x60, 0xf6, 0x84, 0x6f, 0x30, 0x30, 0x55, 0x15, 0xec, 0x3c, - 0x3f, 0xd5, 0x8c, 0x6f, 0x32, 0x30, 0x95, 0x1d, 0x09, 0x98, 0x3d, 0xe3, 0x2f, 0x19, 0x98, 0xea, - 0x12, 0x7a, 0xf9, 0x89, 0xa4, 0xc8, 0x20, 0x7f, 0xc5, 0xc8, 0xa1, 0x70, 0x49, 0xd1, 0xec, 0x49, - 0x7f, 0xcd, 0xd0, 0xa1, 0xb2, 0x31, 0x1f, 0x19, 0x2a, 0x9b, 0x2c, 0xf6, 0x02, 0x63, 0x97, 0x49, - 0x9f, 0x21, 0x9c, 0x3d, 0xf1, 0x6f, 0x18, 0xbc, 0x4c, 0x1b, 0xd1, 0x2f, 0x84, 0xe9, 0xa1, 0x0c, - 0xf0, 0xad, 0xe4, 0x0b, 0xa1, 0xce, 0x34, 0x7e, 0xb8, 0x5e, 0xca, 0xa0, 0x7e, 0xcb, 0xa8, 0x44, - 0x5d, 0xd1, 0x4b, 0x11, 0x7a, 0x2a, 0x83, 0xe3, 0x19, 0x2d, 0x95, 0x5f, 0x74, 0x87, 0xa9, 0xdc, - 0xca, 0x40, 0x7f, 0x2f, 0x16, 0x9a, 0x02, 0x14, 0x4e, 0xf5, 0x58, 0x06, 0xfc, 0x87, 0x04, 0x4e, - 0x00, 0x0e, 0x0b, 0xc1, 0x96, 0x01, 0xff, 0x71, 0x08, 0x73, 0x80, 0x06, 0x44, 0x22, 0xe9, 0x32, - 0xd8, 0x8b, 0x49, 0x22, 0x11, 0xfe, 0xf4, 0x5a, 0x98, 0xec, 0xcb, 0xe0, 0xde, 0x4e, 0xae, 0x85, - 0x3a, 0xd3, 0xf9, 0x12, 0x51, 0x98, 0xc1, 0xbd, 0x93, 0xcc, 0x27, 0xfc, 0xcd, 0x71, 0x26, 0x22, - 0xb3, 0xb0, 0x3f, 0x09, 0x8c, 0xfa, 0xd2, 0xdb, 0x14, 0xba, 0x32, 0x83, 0xfa, 0x73, 0x92, 0x94, - 0xb9, 0x3b, 0x05, 0x85, 0xf0, 0xcc, 0x00, 0xff, 0x92, 0x80, 0xdc, 0xdd, 0xdc, 0xb5, 0x5c, 0xa7, - 0x66, 0xc1, 0x7f, 0x15, 0xf0, 0x32, 0x84, 0xdf, 0xa6, 0x10, 0xae, 0x19, 0xf8, 0xdf, 0x86, 0xb7, - 0xc9, 0x01, 0x73, 0x8c, 0x2a, 0xdd, 0x2c, 0xec, 0x92, 0xc0, 0xa4, 0xd0, 0xa3, 0x77, 0xc8, 0xe4, - 0x6f, 0x06, 0x72, 0x59, 0xe4, 0x66, 0xe6, 0xcc, 0x3e, 0x2d, 0x26, 0x8f, 0x33, 0xa8, 0xbf, 0x27, - 0x19, 0x9d, 0x79, 0xd3, 0xab, 0x17, 0xea, 0x39, 0x0b, 0x7c, 0x37, 0xf9, 0x5b, 0x88, 0xf0, 0x37, - 0x0f, 0xb0, 0x0c, 0x90, 0x19, 0x6a, 0xff, 0x10, 0x2a, 0xa3, 0x98, 0x8a, 0x83, 0xbb, 0xfe, 0x13, - 0xcc, 0xb2, 0x43, 0x77, 0xcf, 0xc4, 0xb7, 0xc6, 0x67, 0x9c, 0x70, 0x76, 0xd0, 0xac, 0xb4, 0xbc, - 0xee, 0xd8, 0xf3, 0xb3, 0x83, 0x6e, 0x9f, 0xff, 0x75, 0xcf, 0x27, 0x1d, 0x97, 0xb4, 0xc2, 0x31, - 0xa7, 0x17, 0x12, 0xbf, 0x67, 0xbb, 0x63, 0x21, 0x09, 0x42, 0xd6, 0x13, 0xfc, 0x2f, 0x00, 0x00, - 0xff, 0xff, 0x25, 0xdc, 0x18, 0x4d, 0x29, 0x14, 0x00, 0x00, + // 2476 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x98, 0x5d, 0x6c, 0x14, 0xd7, + 0xd9, 0xc7, 0xfd, 0xcc, 0xec, 0xae, 0xe7, 0x1c, 0x1b, 0x98, 0x4c, 0x48, 0x18, 0x36, 0x2f, 0x61, + 0xd9, 0x44, 0x68, 0xe1, 0x6d, 0xd7, 0xeb, 0xb5, 0x71, 0x92, 0x21, 0x09, 0x86, 0xc4, 0x4d, 0xac, + 0xf0, 0x91, 0x0e, 0x29, 0xa9, 0x82, 0x53, 0x33, 0xbb, 0x7b, 0xd6, 0x1e, 0x98, 0x9d, 0xd9, 0xcc, + 0xcc, 0x82, 0x4d, 0x91, 0x62, 0x15, 0x35, 0xa2, 0x37, 0x2d, 0xb5, 0x7a, 0x81, 0x2a, 0x47, 0x02, + 0xa7, 0x6d, 0x48, 0x93, 0xb6, 0x34, 0xfd, 0x22, 0xe9, 0x17, 0x34, 0xbd, 0xa0, 0x91, 0x22, 0xa1, + 0x5c, 0xd1, 0x9b, 0x04, 0xed, 0xa2, 0x8a, 0x4b, 0xa4, 0x14, 0x29, 0xb9, 0xa2, 0x3a, 0x1f, 0x33, + 0x6b, 0x03, 0xd5, 0xa4, 0x2b, 0xd9, 0x33, 0xcf, 0x79, 0x9e, 0xdf, 0xf9, 0x7c, 0xce, 0x39, 0xff, + 0x5d, 0xbc, 0xa6, 0x46, 0x82, 0xea, 0x64, 0x48, 0x82, 0x70, 0xb2, 0xea, 0x35, 0x9a, 0x0e, 0x99, + 0x29, 0x36, 0x7d, 0x2f, 0xf4, 0xb4, 0xde, 0xba, 0xe7, 0x15, 0x2b, 0x96, 0x9f, 0xcd, 0x4d, 0x79, + 0xde, 0x94, 0x43, 0x06, 0x58, 0x71, 0xa5, 0x55, 0x1f, 0xa0, 0x84, 0x6f, 0x37, 0x43, 0xcf, 0xe7, + 0xa1, 0xf9, 0xaf, 0xe0, 0xcc, 0x5e, 0x9b, 0xb2, 0x9a, 0x86, 0x53, 0xae, 0xd5, 0x20, 0x3a, 0xe4, + 0xa0, 0x80, 0x4c, 0xf6, 0xae, 0xad, 0xc4, 0x92, 0x5d, 0xd3, 0xa5, 0x1c, 0x14, 0x52, 0xa6, 0x64, + 0xd7, 0xf2, 0x1f, 0xa5, 0x70, 0xea, 0x05, 0x12, 0x84, 0x9a, 0x86, 0xe5, 0xba, 0xe7, 0x89, 0xd8, + 0xf4, 0xb1, 0xba, 0xe7, 0x1d, 0xd3, 0x56, 0xe3, 0xb4, 0xe5, 0xfb, 0xd6, 0xac, 0x2e, 0xe5, 0xe4, + 0x42, 0xda, 0xe4, 0x86, 0xb6, 0x0e, 0x43, 0xa0, 0xcb, 0x39, 0x28, 0xf4, 0x95, 0x57, 0x15, 0x45, + 0xbf, 0x8a, 0xbc, 0x49, 0x13, 0x02, 0xea, 0xf6, 0xf5, 0x54, 0x4e, 0xbe, 0xab, 0xdb, 0xd7, 0xf2, + 0x18, 0x1a, 0x7a, 0x9a, 0xb9, 0x57, 0xc7, 0x6e, 0xda, 0x83, 0xe2, 0xae, 0x31, 0x37, 0xf4, 0x67, + 0x4d, 0x68, 0x68, 0xc3, 0x18, 0x2a, 0x7a, 0x26, 0x07, 0x85, 0x7e, 0x63, 0xe3, 0x44, 0xa9, 0x54, + 0x9a, 0x28, 0x95, 0x06, 0x27, 0x4a, 0xa5, 0xf2, 0x44, 0xa9, 0x34, 0x34, 0x51, 0x2a, 0x0d, 0x4f, + 0x94, 0x4a, 0x5b, 0x26, 0x4a, 0xa5, 0x91, 0x89, 0x52, 0xe9, 0x91, 0x7a, 0xab, 0x62, 0xf9, 0x1b, + 0x4c, 0xa8, 0x64, 0x87, 0x71, 0x86, 0x57, 0xa1, 0xa9, 0x58, 0x3e, 0x44, 0x66, 0xc5, 0x58, 0xe8, + 0x2b, 0x1d, 0xc9, 0x61, 0xcb, 0x69, 0x11, 0x36, 0xf2, 0xb4, 0xc9, 0x0d, 0x43, 0x7a, 0x14, 0xb2, + 0x67, 0x24, 0x9c, 0xd9, 0x4d, 0x82, 0x90, 0xd4, 0xb2, 0xff, 0x04, 0xbc, 0x62, 0x92, 0xbf, 0x8b, + 0x92, 0x71, 0xac, 0x2d, 0xb5, 0xf9, 0x7f, 0x6d, 0x03, 0x9f, 0x32, 0x56, 0x7f, 0x5f, 0x79, 0xc5, + 0xb2, 0x51, 0x98, 0xcc, 0x65, 0xa8, 0xf3, 0x6d, 0xd4, 0x8f, 0xe5, 0x69, 0xcf, 0x5b, 0xcc, 0xa4, + 0x82, 0xa6, 0xe7, 0xe5, 0x9f, 0xc0, 0xf2, 0xd8, 0xd8, 0x98, 0x96, 0xc1, 0xd2, 0x9e, 0xe7, 0xd4, + 0x1e, 0xfa, 0xdc, 0x37, 0xa8, 0x02, 0x7b, 0x96, 0x55, 0x89, 0x3d, 0x87, 0x54, 0x99, 0x3d, 0x87, + 0xd5, 0x14, 0x7b, 0x6e, 0x51, 0xd3, 0xec, 0x39, 0xa2, 0x66, 0xca, 0x05, 0xac, 0x4c, 0x4e, 0x59, + 0x7e, 0xc5, 0x21, 0x47, 0xb5, 0xe5, 0x2d, 0xea, 0x35, 0x36, 0xcc, 0xde, 0x67, 0xb8, 0xd7, 0x58, + 0x3d, 0xdf, 0x46, 0x7d, 0x58, 0x9e, 0xa2, 0x4d, 0xcb, 0x15, 0xcf, 0x3b, 0xd5, 0x46, 0x37, 0x77, + 0x97, 0xb7, 0x62, 0x9a, 0x42, 0x0c, 0x5f, 0x5f, 0xe4, 0x39, 0x54, 0x8c, 0x72, 0xa8, 0xb8, 0x8b, + 0x04, 0x81, 0x35, 0x45, 0xf6, 0x34, 0x43, 0xdb, 0x73, 0x03, 0xfd, 0x8d, 0x05, 0x60, 0xb3, 0x14, + 0x11, 0x9b, 0xd3, 0x4a, 0x4d, 0xfd, 0x07, 0x6c, 0x56, 0x95, 0x77, 0x24, 0xf5, 0x53, 0x29, 0xab, + 0x7c, 0xa7, 0x8d, 0x52, 0x07, 0xad, 0xa3, 0x47, 0x37, 0xab, 0xca, 0xbf, 0x65, 0xf5, 0xcd, 0x54, + 0xb7, 0x24, 0x7f, 0x4a, 0xc2, 0xbd, 0xdb, 0x5d, 0x2f, 0x9c, 0x26, 0x3e, 0x9d, 0xa7, 0xf0, 0xbf, + 0xcf, 0x13, 0x75, 0x69, 0x8f, 0x63, 0xb9, 0x5e, 0xaf, 0xb3, 0x55, 0x59, 0x59, 0xde, 0xb8, 0x3c, + 0x1f, 0xf8, 0x6c, 0x17, 0x97, 0xad, 0x48, 0x71, 0x6c, 0x6c, 0xcc, 0x90, 0xf6, 0x0d, 0x9a, 0x14, + 0x33, 0xde, 0x86, 0xf9, 0x36, 0x7a, 0x08, 0xcb, 0x56, 0xa5, 0xaa, 0x82, 0x2a, 0xa9, 0x72, 0xb6, + 0x97, 0x65, 0xb1, 0xfa, 0xed, 0xbc, 0x8c, 0xa1, 0x4e, 0xff, 0x05, 0x79, 0x59, 0xbd, 0x24, 0xcf, + 0xb7, 0xd1, 0x7a, 0x2c, 0xd7, 0x48, 0x5d, 0x95, 0x55, 0x49, 0x85, 0xac, 0x82, 0xe5, 0x8a, 0xe5, + 0xab, 0x17, 0x25, 0x1a, 0x32, 0xc5, 0xe2, 0xe6, 0xdb, 0x28, 0xcd, 0x42, 0x2e, 0xb7, 0x11, 0x2c, + 0x76, 0x90, 0xa4, 0xf6, 0x2c, 0x76, 0xd0, 0x7d, 0xf8, 0xde, 0xcd, 0xa2, 0xce, 0xda, 0x66, 0x41, + 0x5d, 0xa2, 0xee, 0x5e, 0x9c, 0xc6, 0x72, 0x63, 0x63, 0x63, 0xb1, 0x83, 0x30, 0x56, 0xb2, 0x19, + 0x9c, 0x9a, 0xf5, 0x1c, 0x6f, 0xb1, 0x83, 0x14, 0x9c, 0xc9, 0xa6, 0xd4, 0x8f, 0x8e, 0x67, 0x16, + 0x3b, 0x28, 0x85, 0x25, 0x15, 0xc4, 0x53, 0xca, 0x7f, 0x06, 0x18, 0xed, 0xb3, 0x1c, 0xbb, 0x66, + 0x85, 0x9e, 0xaf, 0x3d, 0x8c, 0x57, 0x58, 0xad, 0x70, 0x9a, 0xb8, 0xa1, 0x5d, 0xb5, 0x42, 0x52, + 0x63, 0xb3, 0xa4, 0x98, 0xcb, 0x0b, 0xb5, 0x27, 0x30, 0x6e, 0x12, 0xbf, 0x61, 0x07, 0x81, 0xed, + 0xb9, 0x6c, 0x1b, 0xf6, 0x95, 0xd7, 0xc5, 0xd3, 0x14, 0xd7, 0x56, 0x7c, 0x3e, 0x0e, 0x32, 0x97, + 0x00, 0xd9, 0x17, 0x31, 0xee, 0x7a, 0xb4, 0x41, 0x9c, 0xb1, 0xaa, 0x74, 0x89, 0x59, 0x5b, 0x2b, + 0xcb, 0x6b, 0xef, 0x52, 0xd1, 0x76, 0x16, 0x60, 0x8a, 0x40, 0xed, 0x7e, 0x9c, 0xa1, 0x9d, 0x09, + 0x67, 0xd9, 0x12, 0x21, 0x53, 0x58, 0xf9, 0x02, 0xce, 0xf0, 0x48, 0x0d, 0xe1, 0xf4, 0xce, 0x3d, + 0xcf, 0x8c, 0xef, 0x56, 0x7b, 0x34, 0x05, 0xa7, 0xcc, 0xb1, 0xed, 0x4f, 0xab, 0x40, 0x0b, 0x5f, + 0x34, 0xc7, 0x5f, 0x18, 0x53, 0xa5, 0xfc, 0x0d, 0x19, 0xa7, 0xcc, 0x96, 0x43, 0xb4, 0x32, 0xce, + 0x04, 0xa1, 0x6f, 0xbb, 0x53, 0x22, 0x1f, 0xf4, 0xb8, 0x75, 0xea, 0x2e, 0xee, 0x65, 0x3e, 0xfa, + 0xfa, 0x6c, 0x8f, 0x29, 0x22, 0xb5, 0x47, 0xb1, 0xe2, 0x93, 0x26, 0x61, 0xf3, 0x23, 0x31, 0x2a, + 0xbb, 0x9c, 0x32, 0x85, 0x57, 0x70, 0x71, 0xb4, 0xb6, 0x09, 0xcb, 0xb6, 0x1b, 0x8a, 0x63, 0xea, + 0xbe, 0xe5, 0xd0, 0xb8, 0x1b, 0x8a, 0x78, 0x1a, 0x93, 0x9d, 0xc5, 0xb8, 0xdb, 0xb8, 0xa6, 0xe3, + 0xde, 0xa6, 0x15, 0x86, 0xc4, 0x77, 0xc5, 0xf9, 0x11, 0x99, 0xda, 0x7a, 0xdc, 0x67, 0x39, 0x8e, + 0x77, 0x64, 0x92, 0x34, 0x9a, 0x62, 0x42, 0x14, 0x13, 0xb3, 0xa2, 0x31, 0x5a, 0xa2, 0xad, 0xc1, + 0xbd, 0x0d, 0xdb, 0x9d, 0x74, 0x88, 0xcb, 0xda, 0x4d, 0x9b, 0x99, 0x86, 0xed, 0xee, 0x24, 0x2e, + 0x73, 0x58, 0x33, 0xcc, 0x91, 0x12, 0x0e, 0x6b, 0x66, 0x27, 0x71, 0xb3, 0x5b, 0x71, 0xaf, 0xe8, + 0x4c, 0x04, 0x1f, 0xb6, 0x1c, 0xd6, 0xae, 0xcc, 0xe0, 0x7d, 0x96, 0x13, 0xc1, 0xd4, 0xc1, 0x8f, + 0x6d, 0x0a, 0xef, 0xb3, 0x9c, 0xec, 0xf7, 0x01, 0xf7, 0x2f, 0x1d, 0xff, 0xed, 0x1d, 0x84, 0x3b, + 0x3a, 0xf8, 0x00, 0x46, 0xb4, 0x0d, 0x3b, 0x24, 0x8d, 0x40, 0x9c, 0x84, 0x4a, 0xc3, 0x76, 0xc7, + 0xa9, 0xcd, 0x9c, 0xd6, 0x8c, 0x70, 0xca, 0xc2, 0x69, 0xcd, 0x70, 0xe7, 0x43, 0x38, 0xcd, 0x1d, + 0xa9, 0xdb, 0xf6, 0x32, 0x6d, 0xd8, 0xe4, 0xbe, 0x1d, 0x19, 0x9c, 0xf2, 0x5b, 0x0e, 0xc9, 0x37, + 0xf0, 0xaa, 0xf1, 0x60, 0x7b, 0x2b, 0x9c, 0xf6, 0x7c, 0xfb, 0x28, 0xa9, 0x99, 0xe4, 0x15, 0xed, + 0x25, 0xac, 0x04, 0xad, 0xca, 0x41, 0x52, 0x0d, 0x03, 0x1d, 0x72, 0x72, 0x01, 0xed, 0x78, 0x72, + 0x7e, 0xd7, 0x56, 0xed, 0x31, 0x15, 0xf2, 0x5b, 0xf0, 0x10, 0x1e, 0xfc, 0x56, 0x61, 0x9b, 0x51, + 0xd8, 0x66, 0x84, 0xc4, 0x6a, 0xd0, 0xa7, 0xe3, 0x55, 0x2d, 0xe7, 0x98, 0x53, 0xb3, 0x9a, 0x9b, + 0x36, 0x1d, 0x6b, 0x05, 0xc4, 0xdf, 0x64, 0xec, 0xdf, 0x6f, 0x58, 0x8e, 0xdb, 0x6a, 0x18, 0x2f, + 0x4f, 0x7e, 0xf5, 0xe5, 0xff, 0x7f, 0xd8, 0x8c, 0xeb, 0xcb, 0x7f, 0x9a, 0xc1, 0xf7, 0x3c, 0x47, + 0x66, 0x8f, 0x78, 0x7e, 0xed, 0x29, 0xcf, 0x71, 0x6c, 0x9a, 0xeb, 0x01, 0xcd, 0xdc, 0x60, 0xd6, + 0x0d, 0xad, 0x19, 0x31, 0x0f, 0xc2, 0xa2, 0xe5, 0x76, 0xa3, 0xe9, 0xf9, 0xa1, 0x58, 0x40, 0x61, + 0xd1, 0xf2, 0x66, 0xab, 0xe2, 0xd8, 0x55, 0x36, 0x76, 0xc5, 0x14, 0x16, 0xbd, 0x44, 0x8f, 0x10, + 0xeb, 0x10, 0x1b, 0xb8, 0x62, 0xb2, 0x77, 0x9e, 0x23, 0xd5, 0x43, 0xd6, 0x14, 0xd1, 0xd3, 0xac, + 0x38, 0x32, 0x59, 0xab, 0x3c, 0xc9, 0x33, 0x7c, 0xbf, 0x88, 0x44, 0x5e, 0x8d, 0xd3, 0x95, 0xd9, + 0x90, 0x04, 0x7a, 0x2f, 0xbd, 0xd5, 0x4c, 0x6e, 0xd0, 0x52, 0xdb, 0x0d, 0x87, 0xca, 0xba, 0xc2, + 0x6f, 0x25, 0x66, 0x88, 0xd2, 0x91, 0x61, 0x1d, 0xb1, 0x3c, 0xe0, 0x06, 0xad, 0xb9, 0xc5, 0x83, + 0x71, 0x0e, 0x0a, 0x2b, 0x4c, 0x61, 0x45, 0xe5, 0x23, 0xc3, 0x7a, 0x1f, 0xcf, 0x8e, 0x56, 0x1c, + 0x1f, 0xf0, 0xf8, 0xfe, 0x1c, 0x14, 0xee, 0x31, 0x85, 0x15, 0x95, 0x8f, 0x0c, 0xeb, 0x2b, 0x72, + 0x50, 0xd0, 0x4c, 0x61, 0xd1, 0x31, 0xd5, 0xed, 0x19, 0x52, 0x1b, 0x2a, 0xeb, 0x2b, 0x73, 0x50, + 0xe8, 0x35, 0x23, 0x33, 0xf6, 0x8c, 0x0c, 0xeb, 0xab, 0x72, 0x50, 0xc8, 0x98, 0x91, 0xa9, 0x65, + 0xb1, 0x12, 0x44, 0x90, 0x9a, 0x83, 0xc2, 0x2a, 0x33, 0xb6, 0xbb, 0xbe, 0x91, 0x61, 0xfd, 0x9e, + 0x1c, 0x14, 0x54, 0x33, 0xb6, 0xe9, 0x9c, 0x56, 0x3c, 0xcf, 0xd1, 0x35, 0x3e, 0xa7, 0xf4, 0x9d, + 0x8e, 0xba, 0xee, 0x78, 0x56, 0xa8, 0xdf, 0x9b, 0x83, 0x82, 0x64, 0x72, 0x83, 0xf6, 0xb6, 0xe6, + 0xb5, 0x2a, 0x0e, 0xd1, 0x57, 0xe7, 0xa0, 0x00, 0xa6, 0xb0, 0x68, 0xed, 0x1e, 0xbb, 0xad, 0x2c, + 0x47, 0xbf, 0x8f, 0xd5, 0x12, 0xdb, 0xd4, 0x17, 0x1f, 0x1a, 0xf7, 0x73, 0x5f, 0x7c, 0x2c, 0x30, + 0xdf, 0x2b, 0x2d, 0xdb, 0x27, 0x35, 0x7d, 0x4d, 0xe4, 0xe3, 0x36, 0x1d, 0x67, 0x83, 0x5f, 0x84, + 0xba, 0xce, 0x57, 0x55, 0x98, 0xb4, 0xbf, 0xc4, 0x6d, 0x35, 0xf4, 0xb5, 0xbc, 0xbf, 0xf4, 0x9d, + 0x46, 0x07, 0xc4, 0x3f, 0x6c, 0x57, 0x89, 0x9e, 0xe5, 0xd1, 0xc2, 0xa4, 0xea, 0xc3, 0x6f, 0x56, + 0xf5, 0x07, 0x58, 0x29, 0x7d, 0xa5, 0xa3, 0xe0, 0xbd, 0xd3, 0xff, 0x8f, 0xe7, 0x16, 0xb7, 0xd8, + 0xe9, 0x3a, 0x13, 0x12, 0xb7, 0xa6, 0xaf, 0xe3, 0xe5, 0xdc, 0xd2, 0x1e, 0xc4, 0x98, 0xbd, 0xb1, + 0x4c, 0xd6, 0x1f, 0xe4, 0xfb, 0xb8, 0x5b, 0xc2, 0x47, 0x41, 0x9b, 0x23, 0x35, 0x7d, 0x7d, 0x34, + 0x0a, 0x6e, 0x53, 0x81, 0x17, 0x7a, 0x7a, 0x8e, 0x95, 0x4a, 0xa1, 0x47, 0xfb, 0x1e, 0xfa, 0x2d, + 0xa2, 0x6f, 0x60, 0x29, 0xc6, 0xde, 0xd9, 0x5c, 0x5b, 0x4e, 0x40, 0xf4, 0x3c, 0xcf, 0x3b, 0x66, + 0xd0, 0x11, 0xd5, 0x48, 0xdd, 0x6a, 0x39, 0xa1, 0xfe, 0x10, 0xbf, 0xff, 0x85, 0x99, 0xff, 0xb1, + 0x8c, 0xd7, 0xdc, 0xbe, 0xc3, 0x84, 0x58, 0xd0, 0x3e, 0x06, 0xa6, 0x28, 0xe9, 0x26, 0x4b, 0xed, + 0xb8, 0x08, 0x27, 0xda, 0x08, 0x4e, 0xb6, 0x11, 0x9c, 0x6a, 0x23, 0x38, 0xdd, 0x46, 0x70, 0xb6, + 0x8d, 0xe0, 0xdd, 0x36, 0x12, 0xfb, 0xe0, 0xfd, 0x36, 0xe2, 0xa9, 0x7f, 0xa1, 0x8d, 0x72, 0x97, + 0xda, 0x68, 0xf4, 0x72, 0x1b, 0xcd, 0xad, 0xbd, 0xd2, 0x46, 0x73, 0xe5, 0xab, 0x6d, 0xb4, 0xed, + 0x7a, 0x1b, 0xbd, 0x7a, 0xb3, 0x8d, 0x4e, 0xf7, 0xf7, 0xf4, 0x7c, 0xd1, 0x46, 0xa3, 0x6b, 0x7b, + 0xd8, 0xe7, 0xbb, 0x1d, 0x74, 0xe0, 0xb3, 0x5b, 0xb7, 0xbe, 0xd7, 0x41, 0x17, 0xfe, 0x75, 0x8b, + 0x7d, 0x4e, 0x76, 0x10, 0xbc, 0xde, 0x41, 0x1f, 0xdc, 0x7c, 0x76, 0xf4, 0x4c, 0x07, 0xb9, 0xaf, + 0x3d, 0x70, 0xe3, 0x8b, 0x0d, 0x68, 0xf4, 0x6c, 0x07, 0xc1, 0xb9, 0x0e, 0x82, 0xf3, 0x1d, 0x04, + 0x17, 0x3a, 0x08, 0x2e, 0x75, 0x10, 0x5c, 0xee, 0x20, 0xb8, 0xd2, 0x41, 0x70, 0xb5, 0x83, 0xe0, + 0x7a, 0x07, 0xc1, 0x8d, 0x0e, 0x82, 0xcf, 0x3b, 0x08, 0xe6, 0xae, 0x21, 0x38, 0x71, 0x0d, 0x79, + 0x27, 0xaf, 0xa1, 0x1f, 0xde, 0x12, 0x1f, 0x38, 0x75, 0x0d, 0x7d, 0x02, 0x54, 0x15, 0x6b, 0x6f, + 0x81, 0x90, 0xce, 0xec, 0xd6, 0xdb, 0xf1, 0x23, 0x58, 0xbc, 0x86, 0x7e, 0x00, 0x0a, 0xa8, 0xc0, + 0x06, 0x0a, 0x65, 0x31, 0x1e, 0x83, 0x8f, 0x66, 0x34, 0xf7, 0xec, 0xe8, 0xf3, 0x73, 0x6b, 0xbf, + 0x39, 0x57, 0x3e, 0xb0, 0x6d, 0xfa, 0xd5, 0x16, 0xed, 0xff, 0x6c, 0xdc, 0x7b, 0x60, 0x9d, 0x87, + 0xb8, 0xef, 0x00, 0xaf, 0x03, 0xeb, 0x39, 0xc4, 0x1d, 0x07, 0x38, 0x07, 0x70, 0x1e, 0xe0, 0x02, + 0xc0, 0x25, 0x80, 0xcb, 0x00, 0x57, 0x00, 0xae, 0x02, 0x5c, 0x07, 0xb8, 0x01, 0xf0, 0x39, 0xc0, + 0x9c, 0x04, 0x27, 0x24, 0xef, 0xa4, 0xb4, 0xa4, 0xab, 0xd2, 0x27, 0xc0, 0x15, 0x7d, 0xf9, 0x35, + 0xc0, 0xab, 0xa8, 0x5e, 0xa2, 0x7f, 0x7b, 0x45, 0x0a, 0x3e, 0x8e, 0x95, 0x6f, 0x04, 0xc4, 0xa7, + 0x67, 0xf0, 0x6d, 0x6a, 0x31, 0xbb, 0xdc, 0xcc, 0x6b, 0x1f, 0x1e, 0xcf, 0xac, 0x54, 0x40, 0xc3, + 0x4a, 0x8f, 0x96, 0xa9, 0x3a, 0x36, 0x71, 0x43, 0x6d, 0x0b, 0x96, 0x9f, 0x21, 0x61, 0x02, 0xa8, + 0x7e, 0x78, 0x3c, 0xd3, 0xaf, 0x80, 0xa6, 0x28, 0xa0, 0xa5, 0xe8, 0x11, 0x6d, 0x3c, 0x89, 0xd3, + 0x8e, 0x55, 0x21, 0x8e, 0xb6, 0xf1, 0x0e, 0x81, 0x39, 0x16, 0xe5, 0xae, 0x69, 0xb9, 0x5d, 0x9d, + 0x79, 0x7a, 0x41, 0x7c, 0xdb, 0x60, 0x98, 0xf1, 0x34, 0x4e, 0xf9, 0xa4, 0x19, 0x26, 0xeb, 0xd3, + 0xc5, 0x05, 0x60, 0x42, 0xe8, 0x76, 0x45, 0x49, 0x69, 0x63, 0x3f, 0x96, 0x09, 0x21, 0xc9, 0x95, + 0xfc, 0x7c, 0x01, 0xfe, 0x17, 0xd1, 0x69, 0xd2, 0x5a, 0x8d, 0xed, 0x18, 0xac, 0xe4, 0xaa, 0x7f, + 0xbb, 0xc0, 0x15, 0x8e, 0x1a, 0x57, 0x2d, 0x14, 0xb1, 0x09, 0x96, 0xf1, 0x75, 0x8c, 0x0e, 0xc7, + 0x22, 0xf0, 0xc1, 0xbb, 0x54, 0x15, 0x4e, 0x7b, 0xb5, 0xa8, 0xa6, 0xf7, 0x0e, 0xb0, 0x8a, 0xb4, + 0x3b, 0x85, 0x9a, 0xd9, 0xad, 0xc5, 0x78, 0x0a, 0xa7, 0xe9, 0xbd, 0x1b, 0x68, 0xeb, 0xee, 0xa8, + 0xee, 0x6b, 0x36, 0x71, 0xe2, 0xda, 0x3e, 0x46, 0x77, 0xbd, 0xbc, 0x19, 0x6b, 0x3c, 0x12, 0xdd, + 0x97, 0x49, 0xb5, 0x9c, 0x59, 0x58, 0x76, 0xa1, 0x52, 0x50, 0x5c, 0xa1, 0x09, 0xe0, 0x62, 0x04, + 0xf2, 0x70, 0x0a, 0x8a, 0x3b, 0x36, 0x01, 0x7c, 0x23, 0x02, 0x79, 0xb8, 0x31, 0xc4, 0xaf, 0xe4, + 0x24, 0xec, 0x27, 0x02, 0x63, 0xc1, 0xc6, 0x63, 0xf1, 0x9d, 0x9d, 0xc4, 0xfd, 0x54, 0x70, 0x51, + 0x3c, 0x9b, 0x1a, 0x7e, 0x8d, 0x27, 0x90, 0x3f, 0x13, 0x09, 0x1d, 0x9d, 0x0e, 0x5b, 0xc4, 0xad, + 0x9f, 0xc4, 0xbd, 0xc9, 0xb8, 0x48, 0x16, 0x50, 0x8c, 0xdf, 0xd5, 0x09, 0xd8, 0x59, 0xf1, 0x3d, + 0x8d, 0x47, 0x0b, 0x6c, 0x64, 0x38, 0x09, 0x7b, 0x6b, 0x01, 0x96, 0x08, 0x0b, 0x3a, 0xba, 0xd6, + 0x97, 0x6a, 0x8e, 0xef, 0x98, 0x58, 0x79, 0x44, 0x60, 0x72, 0x83, 0x6f, 0x33, 0x30, 0x96, 0x26, + 0x6c, 0x3e, 0xbf, 0x54, 0x8b, 0xef, 0x30, 0x30, 0xd6, 0x2e, 0x11, 0x98, 0xdc, 0xe2, 0x2f, 0x18, + 0x18, 0x8b, 0x1b, 0xba, 0xf8, 0x91, 0x2e, 0x49, 0x20, 0x7f, 0xc9, 0xc8, 0xae, 0xfa, 0x89, 0xd1, + 0xe4, 0x46, 0x7f, 0xc5, 0xd0, 0xae, 0x3c, 0x32, 0xb6, 0x76, 0xe5, 0x51, 0x12, 0x7b, 0x8e, 0xb1, + 0x4b, 0xf4, 0x53, 0x17, 0x4e, 0x6e, 0xf8, 0xd7, 0x0c, 0x5e, 0x22, 0xb0, 0xe8, 0x0e, 0x61, 0xa2, + 0x2a, 0x01, 0x7c, 0x37, 0xda, 0x21, 0x34, 0x98, 0xe6, 0x0f, 0x17, 0x5d, 0x09, 0xd4, 0x6f, 0x18, + 0x15, 0x49, 0x34, 0xba, 0x28, 0x42, 0x94, 0x25, 0x70, 0xfc, 0x58, 0x8c, 0x35, 0x1c, 0x1d, 0x61, + 0xac, 0xd9, 0x12, 0xd0, 0xdf, 0x89, 0x8e, 0xc6, 0x00, 0x85, 0x63, 0x51, 0x97, 0x00, 0xff, 0x3e, + 0x82, 0x23, 0x80, 0xc3, 0x42, 0xf5, 0x25, 0xc0, 0x7f, 0xe8, 0xc2, 0x1c, 0xa0, 0x09, 0x11, 0xe9, + 0xc2, 0x04, 0xf6, 0x7c, 0x74, 0x90, 0x88, 0x78, 0xba, 0x2c, 0x4c, 0x3b, 0x26, 0x70, 0xef, 0x45, + 0xcb, 0x42, 0x83, 0x69, 0x7b, 0x91, 0xb2, 0x4c, 0xe0, 0xde, 0x8f, 0xda, 0x13, 0xf1, 0xc6, 0x20, + 0x53, 0xa2, 0x49, 0xd8, 0x1f, 0x05, 0x46, 0x63, 0xe9, 0x6a, 0x0a, 0x71, 0x9a, 0x40, 0xfd, 0x29, + 0x3a, 0x94, 0x79, 0x38, 0x05, 0x85, 0x7a, 0x4d, 0x00, 0xff, 0x1c, 0x81, 0x3c, 0xdc, 0xd8, 0xb6, + 0x54, 0xec, 0x26, 0xc1, 0x7f, 0x11, 0xf0, 0x12, 0x84, 0xaf, 0xa6, 0x50, 0xbf, 0x09, 0xf8, 0x5f, + 0xbb, 0xab, 0xc9, 0x01, 0x63, 0x80, 0xca, 0xe5, 0x24, 0xec, 0x82, 0xc0, 0xa4, 0xd0, 0xa3, 0x6b, + 0xc8, 0x34, 0x74, 0x02, 0x72, 0x51, 0x9c, 0xcd, 0x2c, 0x98, 0x6d, 0x2d, 0xa6, 0xb1, 0x13, 0xa8, + 0xbf, 0x45, 0x27, 0x3a, 0x8b, 0xa6, 0x4b, 0x2f, 0x24, 0x78, 0x12, 0xf8, 0x41, 0xf4, 0x93, 0x9d, + 0x88, 0x37, 0xf6, 0xb0, 0x13, 0x20, 0x31, 0xd5, 0xfe, 0x2e, 0xa4, 0x4a, 0xf7, 0x67, 0x95, 0x3b, + 0xbe, 0x49, 0xb3, 0xd3, 0xa1, 0xb1, 0x63, 0xe8, 0xa5, 0xc1, 0x29, 0x3b, 0x9c, 0x6e, 0x55, 0x8a, + 0x55, 0xaf, 0x31, 0x70, 0x70, 0xba, 0xd5, 0x68, 0xf2, 0x1f, 0xa1, 0x7d, 0x52, 0x77, 0x48, 0x35, + 0x1c, 0xb0, 0xdd, 0x90, 0xf8, 0xae, 0xe5, 0x0c, 0x84, 0x24, 0x08, 0x99, 0x27, 0xf8, 0x4f, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xfb, 0xe5, 0xb5, 0x5e, 0xd0, 0x16, 0x00, 0x00, } diff --git a/internal/testprotos/desc_test_complex.proto b/internal/testprotos/desc_test_complex.proto index 115f15bd..cffc0af9 100644 --- a/internal/testprotos/desc_test_complex.proto +++ b/internal/testprotos/desc_test_complex.proto @@ -63,7 +63,7 @@ extend google.protobuf.MessageOptions { } message Another { - option (.foo.bar.rept) = { foo: "abc" s < name: "foo", id: 123 >, array: [1, 2 ,3], r:[, {name:"s"}, {id:456} ]}; + option (.foo.bar.rept) = { foo: "abc" s < name: "foo", id: 123 >, array: [1, 2 ,3], r:[, {name:"s"}, {id:456} ], }; option (foo.bar.rept) = { foo: "def" s { name: "bar", id: 321 }, array: [3, 2 ,1], r:{name:"g"} r:{name:"s"}}; option (rept) = { foo: "def" }; option (eee) = V1; @@ -120,6 +120,42 @@ service TestTestService { } } +message Rule { + message StringRule { + optional string pattern = 1; + optional bool allow_empty = 2; + optional int32 min_len = 3; + optional int32 max_len = 4; + } + message IntRule { + optional int64 min_val = 1; + optional uint64 max_val = 2; + } + message RepeatedRule { + optional bool allow_empty = 1; + optional int32 min_items = 2; + optional int32 max_items = 3; + optional Rule items = 4; + } + oneof rule { + StringRule string = 1; + RepeatedRule repeated = 2; + IntRule int = 3; + } +} + +extend google.protobuf.FieldOptions { + optional Rule rules = 1234; +} + +message IsAuthorizedReq { + repeated string subjects = 1 + [(rules).repeated = { + min_items: 1, + items: { string: { pattern: "^(?:(?:team:(?:local|ldap))|user):[[:alnum:]_-]+$" } }, + }]; +} + // tests cases where field names collide with keywords message KeywordCollisions { diff --git a/internal/testprotos/desc_test_complex.protoset b/internal/testprotos/desc_test_complex.protoset index f6eb174c96cb74924debc4ec36cd5f8eb592a8f9..6160f8322fbec238cf2ecf49497de1d002e0ef29 100644 GIT binary patch delta 704 zcmZvZL2DC16vvIb*=*ic)Pc536fDuhhLV60p-n-tMKGwBDSEKfFm1+mWOg?0%(jUX z_8WN6ui>Tiixe&NDBe8wBRDg=sYZl>nR&nWpZ9-nzDD2M4xF}+oijJTaKObGr>F~_ zR4EgCVP&Zj1>LaoE=f8&B<&d7*|f|YpIyOaCRzbMr6Wod9fnt}sxhm=B`tNA*{B5$ z6Do9atD2ux^@S=0CaEz2_){H)P#Y1YXezAHI-Xw99S8{L$>D&;BQ>#xd<-`9)I`uC z)M6$EoQlxVb*tEmb0%I;VF?*q;+BMrHE66st#mV09}sQ}J6g@eYr>~u1I!Ry4aiu7 z#-|F*{XKzy9qK{n(X7Q=P&XEtqOr8ERk5!FeRD?!YL^8pI`DO%fOnx<0MkIwy*4va zT(ETy+*E&IGluJZ`6N^Od6Ke^bcpE(^agyH?YyVEO6mrksJ{N_^UF1~dZW^O2oK=? z+vssmFGWdgcAo4Ke#D1l)M_1NlBTWR)>e;jk;T33L3?}o9=?39`NM;o&*|haNrxK= m=S;FhNVEXn$%XsN^EaSsY{@S_gQeTw>i=!PCY+oHul(QN4$qhX delta 22 ecmcbtyGDbVYo*3U<|{0lE!i2_H`nupZ~y>T#|G8_ diff --git a/internal/testprotos/desc_test_complex_source_info.protoset b/internal/testprotos/desc_test_complex_source_info.protoset index 62853cc57827a4f7cc55b6467d4dc3d68aaa5390..772c0a57096d0e0be4ed474123532251c6b7c1f4 100644 GIT binary patch delta 11462 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