(command.CommandList
  children: [
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:test_description)
          op: assign_op.Equal
          rhs: {(SQ (Token id:Id.Lit_Chars val:'urlmatch URL normalization' span_id:6))}
          spids: [4]
        )
      ]
    )
    (C {(.)} {(./test-lib.sh)})
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:tu)
          op: assign_op.Equal
          rhs: {(DQ ($ Id.VSub_DollarName '$TEST_DIRECTORY') (/t0110/url))}
          spids: [17]
        )
      ]
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'url scheme' span_id:31))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:35) 
          (Token id:Id.Lit_Chars val:'\t! test-urlmatch-normalization "" &&\n' span_id:36) (Token id:Id.Lit_Chars val:'\t! test-urlmatch-normalization "_" &&\n' span_id:37) 
          (Token
            id: Id.Lit_Chars
            val: '\t! test-urlmatch-normalization "scheme" &&\n'
            span_id: 38
          ) (Token id:Id.Lit_Chars val:'\t! test-urlmatch-normalization "scheme:" &&\n' span_id:39) 
          (Token
            id: Id.Lit_Chars
            val: '\t! test-urlmatch-normalization "scheme:/" &&\n'
            span_id: 40
          ) (Token id:Id.Lit_Chars val:'\t! test-urlmatch-normalization "scheme://" &&\n' span_id:41) 
          (Token
            id: Id.Lit_Chars
            val: '\t! test-urlmatch-normalization "file" &&\n'
            span_id: 42
          ) (Token id:Id.Lit_Chars val:'\t! test-urlmatch-normalization "file:" &&\n' span_id:43) 
          (Token
            id: Id.Lit_Chars
            val: '\t! test-urlmatch-normalization "file:/" &&\n'
            span_id: 44
          ) (Token id:Id.Lit_Chars val:'\ttest-urlmatch-normalization "file://" &&\n' span_id:45) 
          (Token
            id: Id.Lit_Chars
            val: '\t! test-urlmatch-normalization "://acme.co" &&\n'
            span_id: 46
          ) (Token id:Id.Lit_Chars val:'\t! test-urlmatch-normalization "x_test://acme.co" &&\n' span_id:47) 
          (Token
            id: Id.Lit_Chars
            val: '\t! test-urlmatch-normalization "-test://acme.co" &&\n'
            span_id: 48
          ) (Token id:Id.Lit_Chars val:'\t! test-urlmatch-normalization "0test://acme.co" &&\n' span_id:49) 
          (Token
            id: Id.Lit_Chars
            val: '\t! test-urlmatch-normalization "+test://acme.co" &&\n'
            span_id: 50
          ) (Token id:Id.Lit_Chars val:'\t! test-urlmatch-normalization ".test://acme.co" &&\n' span_id:51) 
          (Token
            id: Id.Lit_Chars
            val: '\t! test-urlmatch-normalization "schem%6e://" &&\n'
            span_id: 52
          ) (Token id:Id.Lit_Chars val:'\ttest-urlmatch-normalization "x-Test+v1.0://acme.co" &&\n' span_id:53) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest "$(test-urlmatch-normalization -p "AbCdeF://x.Y")" = "abcdef://x.y/"\n'
            span_id: 54
          )
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'url authority' span_id:61))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:65) 
          (Token
            id: Id.Lit_Chars
            val: '\t! test-urlmatch-normalization "scheme://user:pass@" &&\n'
            span_id: 66
          ) (Token id:Id.Lit_Chars val:'\t! test-urlmatch-normalization "scheme://?" &&\n' span_id:67) 
          (Token
            id: Id.Lit_Chars
            val: '\t! test-urlmatch-normalization "scheme://#" &&\n'
            span_id: 68
          ) (Token id:Id.Lit_Chars val:'\t! test-urlmatch-normalization "scheme:///" &&\n' span_id:69) 
          (Token
            id: Id.Lit_Chars
            val: '\t! test-urlmatch-normalization "scheme://:" &&\n'
            span_id: 70
          ) (Token id:Id.Lit_Chars val:'\t! test-urlmatch-normalization "scheme://:555" &&\n' span_id:71) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest-urlmatch-normalization "file://user:pass@" &&\n'
            span_id: 72
          ) (Token id:Id.Lit_Chars val:'\ttest-urlmatch-normalization "file://?" &&\n' span_id:73) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest-urlmatch-normalization "file://#" &&\n'
            span_id: 74
          ) (Token id:Id.Lit_Chars val:'\ttest-urlmatch-normalization "file:///" &&\n' span_id:75) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest-urlmatch-normalization "file://:" &&\n'
            span_id: 76
          ) (Token id:Id.Lit_Chars val:'\t! test-urlmatch-normalization "file://:555" &&\n' span_id:77) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest-urlmatch-normalization "scheme://user:pass@host" &&\n'
            span_id: 78
          ) (Token id:Id.Lit_Chars val:'\ttest-urlmatch-normalization "scheme://@host" &&\n' span_id:79) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest-urlmatch-normalization "scheme://%00@host" &&\n'
            span_id: 80
          ) (Token id:Id.Lit_Chars val:'\t! test-urlmatch-normalization "scheme://%%@host" &&\n' span_id:81) 
          (Token
            id: Id.Lit_Chars
            val: '\t! test-urlmatch-normalization "scheme://host_" &&\n'
            span_id: 82
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest-urlmatch-normalization "scheme://user:pass@host/" &&\n'
            span_id: 83
          ) (Token id:Id.Lit_Chars val:'\ttest-urlmatch-normalization "scheme://@host/" &&\n' span_id:84) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest-urlmatch-normalization "scheme://host/" &&\n'
            span_id: 85
          ) (Token id:Id.Lit_Chars val:'\ttest-urlmatch-normalization "scheme://host?x" &&\n' span_id:86) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest-urlmatch-normalization "scheme://host#x" &&\n'
            span_id: 87
          ) (Token id:Id.Lit_Chars val:'\ttest-urlmatch-normalization "scheme://host/@" &&\n' span_id:88) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest-urlmatch-normalization "scheme://host?@x" &&\n'
            span_id: 89
          ) (Token id:Id.Lit_Chars val:'\ttest-urlmatch-normalization "scheme://host#@x" &&\n' span_id:90) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest-urlmatch-normalization "scheme://[::1]" &&\n'
            span_id: 91
          ) (Token id:Id.Lit_Chars val:'\ttest-urlmatch-normalization "scheme://[::1]/" &&\n' span_id:92) 
          (Token
            id: Id.Lit_Chars
            val: '\t! test-urlmatch-normalization "scheme://hos%41/" &&\n'
            span_id: 93
          ) (Token id:Id.Lit_Chars val:'\ttest-urlmatch-normalization "scheme://[invalid....:/" &&\n' span_id:94) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest-urlmatch-normalization "scheme://invalid....:]/" &&\n'
            span_id: 95
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\t! test-urlmatch-normalization "scheme://invalid....:[/" &&\n'
            span_id: 96
          ) (Token id:Id.Lit_Chars val:'\t! test-urlmatch-normalization "scheme://invalid....:["\n' span_id:97)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'url port checks' span_id:104))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:108) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest-urlmatch-normalization "xyz://q@some.host:" &&\n'
            span_id: 109
          ) (Token id:Id.Lit_Chars val:'\ttest-urlmatch-normalization "xyz://q@some.host:456/" &&\n' span_id:110) 
          (Token
            id: Id.Lit_Chars
            val: '\t! test-urlmatch-normalization "xyz://q@some.host:0" &&\n'
            span_id: 111
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\t! test-urlmatch-normalization "xyz://q@some.host:0000000" &&\n'
            span_id: 112
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest-urlmatch-normalization "xyz://q@some.host:0000001?" &&\n'
            span_id: 113
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest-urlmatch-normalization "xyz://q@some.host:065535#" &&\n'
            span_id: 114
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest-urlmatch-normalization "xyz://q@some.host:65535" &&\n'
            span_id: 115
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\t! test-urlmatch-normalization "xyz://q@some.host:65536" &&\n'
            span_id: 116
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\t! test-urlmatch-normalization "xyz://q@some.host:99999" &&\n'
            span_id: 117
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\t! test-urlmatch-normalization "xyz://q@some.host:100000" &&\n'
            span_id: 118
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\t! test-urlmatch-normalization "xyz://q@some.host:100001" &&\n'
            span_id: 119
          ) (Token id:Id.Lit_Chars val:'\ttest-urlmatch-normalization "http://q@some.host:80" &&\n' span_id:120) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest-urlmatch-normalization "https://q@some.host:443" &&\n'
            span_id: 121
          ) (Token id:Id.Lit_Chars val:'\ttest-urlmatch-normalization "http://q@some.host:80/" &&\n' span_id:122) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest-urlmatch-normalization "https://q@some.host:443?" &&\n'
            span_id: 123
          ) (Token id:Id.Lit_Chars val:'\t! test-urlmatch-normalization "http://q@:8008" &&\n' span_id:124) 
          (Token
            id: Id.Lit_Chars
            val: '\t! test-urlmatch-normalization "http://:8080" &&\n'
            span_id: 125
          ) (Token id:Id.Lit_Chars val:'\t! test-urlmatch-normalization "http://:" &&\n' span_id:126) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest-urlmatch-normalization "xyz://q@some.host:456/" &&\n'
            span_id: 127
          ) (Token id:Id.Lit_Chars val:'\ttest-urlmatch-normalization "xyz://[::1]:456/" &&\n' span_id:128) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest-urlmatch-normalization "xyz://[::1]:/" &&\n'
            span_id: 129
          ) (Token id:Id.Lit_Chars val:'\t! test-urlmatch-normalization "xyz://[::1]:000/" &&\n' span_id:130) 
          (Token
            id: Id.Lit_Chars
            val: '\t! test-urlmatch-normalization "xyz://[::1]:0%300/" &&\n'
            span_id: 131
          ) (Token id:Id.Lit_Chars val:'\t! test-urlmatch-normalization "xyz://[::1]:0x80/" &&\n' span_id:132) 
          (Token
            id: Id.Lit_Chars
            val: '\t! test-urlmatch-normalization "xyz://[::1]:4294967297/" &&\n'
            span_id: 133
          ) (Token id:Id.Lit_Chars val:'\t! test-urlmatch-normalization "xyz://[::1]:030f/"\n' span_id:134)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'url port normalization' span_id:141))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:145) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest "$(test-urlmatch-normalization -p "http://x:800")" = "http://x:800/" &&\n'
            span_id: 146
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest "$(test-urlmatch-normalization -p "http://x:0800")" = "http://x:800/" &&\n'
            span_id: 147
          ) 
          (Token
            id: Id.Lit_Chars
            val: 
'\ttest "$(test-urlmatch-normalization -p "http://x:00000800")" = "http://x:800/" &&\n'
            span_id: 148
          ) 
          (Token
            id: Id.Lit_Chars
            val: 
'\ttest "$(test-urlmatch-normalization -p "http://x:065535")" = "http://x:65535/" &&\n'
            span_id: 149
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest "$(test-urlmatch-normalization -p "http://x:1")" = "http://x:1/" &&\n'
            span_id: 150
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest "$(test-urlmatch-normalization -p "http://x:80")" = "http://x/" &&\n'
            span_id: 151
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest "$(test-urlmatch-normalization -p "http://x:080")" = "http://x/" &&\n'
            span_id: 152
          ) 
          (Token
            id: Id.Lit_Chars
            val: 
'\ttest "$(test-urlmatch-normalization -p "http://x:000000080")" = "http://x/" &&\n'
            span_id: 153
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest "$(test-urlmatch-normalization -p "https://x:443")" = "https://x/" &&\n'
            span_id: 154
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest "$(test-urlmatch-normalization -p "https://x:0443")" = "https://x/" &&\n'
            span_id: 155
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest "$(test-urlmatch-normalization -p "https://x:000000443")" = "https://x/"\n'
            span_id: 156
          )
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'url general escapes' span_id:163))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:167) 
          (Token
            id: Id.Lit_Chars
            val: '\t! test-urlmatch-normalization "http://x.y?%fg" &&\n'
            span_id: 168
          ) 
          (Token
            id: Id.Lit_Chars
            val: 
'\ttest "$(test-urlmatch-normalization -p "X://W/%7e%41^%3a")" = "x://w/~A%5E%3A" &&\n'
            span_id: 169
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest "$(test-urlmatch-normalization -p "X://W/:/?#[]@")" = "x://w/:/?#[]@" &&\n'
            span_id: 170
          ) 
          (Token
            id: Id.Lit_Chars
            val: 
'\ttest "$(test-urlmatch-normalization -p "X://W/$&()*+,;=")" = "x://w/$&()*+,;=" &&\n'
            span_id: 171
          ) (Token id:Id.Lit_Chars val:'\ttest "$(test-urlmatch-normalization -p "X://W/' span_id:172)
        ) (word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:"\\'" span_id:174)) 
        (SQ (Token id:Id.Lit_Chars val:'")" = "x://w/' span_id:176)) (word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:"\\'" span_id:178)) 
        (SQ (Token id:Id.Lit_Chars val:'" &&\n' span_id:180) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest "$(test-urlmatch-normalization -p "X://W?'
            span_id: 181
          )
        ) (word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\!' span_id:183)) 
        (SQ (Token id:Id.Lit_Chars val:'")" = "x://w/?' span_id:185)) (word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\!' span_id:187)) 
        (SQ (Token id:Id.Lit_Chars val:'"\n' span_id:189))
      }
    )
    (C {(test_expect_success)} {(Id.KW_Bang '!') (MINGW)} 
      {(SQ (Token id:Id.Lit_Chars val:'url high-bit escapes' span_id:199))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:203) 
          (Token
            id: Id.Lit_Chars
            val: 
'\ttest "$(test-urlmatch-normalization -p "$(cat "$tu-1")")" = "x://q/%01%02%03%04%05%06%07%08%0E%0F%10%11%12" &&\n'
            span_id: 204
          ) 
          (Token
            id: Id.Lit_Chars
            val: 
'\ttest "$(test-urlmatch-normalization -p "$(cat "$tu-2")")" = "x://q/%13%14%15%16%17%18%19%1B%1C%1D%1E%1F%7F" &&\n'
            span_id: 205
          ) 
          (Token
            id: Id.Lit_Chars
            val: 
'\ttest "$(test-urlmatch-normalization -p "$(cat "$tu-3")")" = "x://q/%80%81%82%83%84%85%86%87%88%89%8A%8B%8C%8D%8E%8F" &&\n'
            span_id: 206
          ) 
          (Token
            id: Id.Lit_Chars
            val: 
'\ttest "$(test-urlmatch-normalization -p "$(cat "$tu-4")")" = "x://q/%90%91%92%93%94%95%96%97%98%99%9A%9B%9C%9D%9E%9F" &&\n'
            span_id: 207
          ) 
          (Token
            id: Id.Lit_Chars
            val: 
'\ttest "$(test-urlmatch-normalization -p "$(cat "$tu-5")")" = "x://q/%A0%A1%A2%A3%A4%A5%A6%A7%A8%A9%AA%AB%AC%AD%AE%AF" &&\n'
            span_id: 208
          ) 
          (Token
            id: Id.Lit_Chars
            val: 
'\ttest "$(test-urlmatch-normalization -p "$(cat "$tu-6")")" = "x://q/%B0%B1%B2%B3%B4%B5%B6%B7%B8%B9%BA%BB%BC%BD%BE%BF" &&\n'
            span_id: 209
          ) 
          (Token
            id: Id.Lit_Chars
            val: 
'\ttest "$(test-urlmatch-normalization -p "$(cat "$tu-7")")" = "x://q/%C0%C1%C2%C3%C4%C5%C6%C7%C8%C9%CA%CB%CC%CD%CE%CF" &&\n'
            span_id: 210
          ) 
          (Token
            id: Id.Lit_Chars
            val: 
'\ttest "$(test-urlmatch-normalization -p "$(cat "$tu-8")")" = "x://q/%D0%D1%D2%D3%D4%D5%D6%D7%D8%D9%DA%DB%DC%DD%DE%DF" &&\n'
            span_id: 211
          ) 
          (Token
            id: Id.Lit_Chars
            val: 
'\ttest "$(test-urlmatch-normalization -p "$(cat "$tu-9")")" = "x://q/%E0%E1%E2%E3%E4%E5%E6%E7%E8%E9%EA%EB%EC%ED%EE%EF" &&\n'
            span_id: 212
          ) 
          (Token
            id: Id.Lit_Chars
            val: 
'\ttest "$(test-urlmatch-normalization -p "$(cat "$tu-10")")" = "x://q/%F0%F1%F2%F3%F4%F5%F6%F7%F8%F9%FA%FB%FC%FD%FE%FF"\n'
            span_id: 213
          )
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'url utf-8 escapes' span_id:220))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:224) 
          (Token
            id: Id.Lit_Chars
            val: 
'\ttest "$(test-urlmatch-normalization -p "$(cat "$tu-11")")" = "x://q/%C2%80%DF%BF%E0%A0%80%EF%BF%BD%F0%90%80%80%F0%AF%BF%BD"\n'
            span_id: 225
          )
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'url username/password escapes' span_id:232))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:236) 
          (Token
            id: Id.Lit_Chars
            val: 
'\ttest "$(test-urlmatch-normalization -p "x://%41%62(^):%70+d@foo")" = "x://Ab(%5E):p+d@foo/"\n'
            span_id: 237
          )
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'url normalized lengths' span_id:244))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:248) 
          (Token
            id: Id.Lit_Chars
            val: 
'\ttest "$(test-urlmatch-normalization -l "Http://%4d%65:%4d^%70@The.Host")" = 25 &&\n'
            span_id: 249
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest "$(test-urlmatch-normalization -l "http://%41:%42@x.y/%61/")" = 17 &&\n'
            span_id: 250
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest "$(test-urlmatch-normalization -l "http://@x.y/^")" = 15\n'
            span_id: 251
          )
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'url . and .. segments' span_id:258))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:262) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest "$(test-urlmatch-normalization -p "x://y/.")" = "x://y/" &&\n'
            span_id: 263
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest "$(test-urlmatch-normalization -p "x://y/./")" = "x://y/" &&\n'
            span_id: 264
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest "$(test-urlmatch-normalization -p "x://y/a/.")" = "x://y/a" &&\n'
            span_id: 265
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest "$(test-urlmatch-normalization -p "x://y/a/./")" = "x://y/a/" &&\n'
            span_id: 266
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest "$(test-urlmatch-normalization -p "x://y/.?")" = "x://y/?" &&\n'
            span_id: 267
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest "$(test-urlmatch-normalization -p "x://y/./?")" = "x://y/?" &&\n'
            span_id: 268
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest "$(test-urlmatch-normalization -p "x://y/a/.?")" = "x://y/a?" &&\n'
            span_id: 269
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest "$(test-urlmatch-normalization -p "x://y/a/./?")" = "x://y/a/?" &&\n'
            span_id: 270
          ) 
          (Token
            id: Id.Lit_Chars
            val: 
'\ttest "$(test-urlmatch-normalization -p "x://y/a/./b/.././../c")" = "x://y/c" &&\n'
            span_id: 271
          ) 
          (Token
            id: Id.Lit_Chars
            val: 
'\ttest "$(test-urlmatch-normalization -p "x://y/a/./b/../.././c/")" = "x://y/c/" &&\n'
            span_id: 272
          ) 
          (Token
            id: Id.Lit_Chars
            val: 
'\ttest "$(test-urlmatch-normalization -p "x://y/a/./b/.././../c/././.././.")" = "x://y/" &&\n'
            span_id: 273
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\t! test-urlmatch-normalization "x://y/a/./b/.././../c/././.././.." &&\n'
            span_id: 274
          ) 
          (Token
            id: Id.Lit_Chars
            val: 
'\ttest "$(test-urlmatch-normalization -p "x://y/a/./?/././..")" = "x://y/a/?/././.." &&\n'
            span_id: 275
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest "$(test-urlmatch-normalization -p "x://y/%2e/")" = "x://y/" &&\n'
            span_id: 276
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest "$(test-urlmatch-normalization -p "x://y/%2E/")" = "x://y/" &&\n'
            span_id: 277
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest "$(test-urlmatch-normalization -p "x://y/a/%2e./")" = "x://y/" &&\n'
            span_id: 278
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest "$(test-urlmatch-normalization -p "x://y/b/.%2E/")" = "x://y/" &&\n'
            span_id: 279
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest "$(test-urlmatch-normalization -p "x://y/c/%2e%2E/")" = "x://y/"\n'
            span_id: 280
          )
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'url equivalents' span_id:296))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:300) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest-urlmatch-normalization "httP://x" "Http://X/" &&\n'
            span_id: 301
          ) 
          (Token
            id: Id.Lit_Chars
            val: 
'\ttest-urlmatch-normalization "Http://%4d%65:%4d^%70@The.Host" "hTTP://Me:%4D^p@the.HOST:80/" &&\n'
            span_id: 302
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\t! test-urlmatch-normalization "https://@x.y/^" "httpS://x.y:443/^" &&\n'
            span_id: 303
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest-urlmatch-normalization "https://@x.y/^" "httpS://@x.y:0443/^" &&\n'
            span_id: 304
          ) 
          (Token
            id: Id.Lit_Chars
            val: 
'\ttest-urlmatch-normalization "https://@x.y/^/../abc" "httpS://@x.y:0443/abc" &&\n'
            span_id: 305
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest-urlmatch-normalization "https://@x.y/^/.." "httpS://@x.y:0443/"\n'
            span_id: 306
          )
        )
      }
    )
    (C {(test_done)})
  ]
)